12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570 |
- (function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory();
- else if(typeof define === 'function' && define.amd)
- define([], factory);
- else if(typeof exports === 'object')
- exports["d3v4pp"] = factory();
- else
- root["d3v4pp"] = factory();
- })(this, () => {
- return /******/ (() => { // webpackBootstrap
- /******/ var __webpack_modules__ = ({
- /***/ "./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js":
- /*!*******************************************************************************!*\
- !*** ./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js ***!
- \*******************************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ isPropValid)
- /* harmony export */ });
- /* harmony import */ var _emotion_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/memoize */ "./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js");
- var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23
- var isPropValid = /* #__PURE__ */(0,_emotion_memoize__WEBPACK_IMPORTED_MODULE_0__["default"])(function (prop) {
- return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111
- /* o */
- && prop.charCodeAt(1) === 110
- /* n */
- && prop.charCodeAt(2) < 91;
- }
- /* Z+1 */
- );
- /***/ }),
- /***/ "./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js":
- /*!*******************************************************************!*\
- !*** ./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js ***!
- \*******************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ memoize)
- /* harmony export */ });
- function memoize(fn) {
- var cache = Object.create(null);
- return function (arg) {
- if (cache[arg] === undefined) cache[arg] = fn(arg);
- return cache[arg];
- };
- }
- /***/ }),
- /***/ "./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js":
- /*!*********************************************************************!*\
- !*** ./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js ***!
- \*********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ unitlessKeys)
- /* harmony export */ });
- var unitlessKeys = {
- animationIterationCount: 1,
- aspectRatio: 1,
- borderImageOutset: 1,
- borderImageSlice: 1,
- borderImageWidth: 1,
- boxFlex: 1,
- boxFlexGroup: 1,
- boxOrdinalGroup: 1,
- columnCount: 1,
- columns: 1,
- flex: 1,
- flexGrow: 1,
- flexPositive: 1,
- flexShrink: 1,
- flexNegative: 1,
- flexOrder: 1,
- gridRow: 1,
- gridRowEnd: 1,
- gridRowSpan: 1,
- gridRowStart: 1,
- gridColumn: 1,
- gridColumnEnd: 1,
- gridColumnSpan: 1,
- gridColumnStart: 1,
- msGridRow: 1,
- msGridRowSpan: 1,
- msGridColumn: 1,
- msGridColumnSpan: 1,
- fontWeight: 1,
- lineHeight: 1,
- opacity: 1,
- order: 1,
- orphans: 1,
- tabSize: 1,
- widows: 1,
- zIndex: 1,
- zoom: 1,
- WebkitLineClamp: 1,
- // SVG-related properties
- fillOpacity: 1,
- floodOpacity: 1,
- stopOpacity: 1,
- strokeDasharray: 1,
- strokeDashoffset: 1,
- strokeMiterlimit: 1,
- strokeOpacity: 1,
- strokeWidth: 1
- };
- /***/ }),
- /***/ "./node_modules/autosize/dist/autosize.js":
- /*!************************************************!*\
- !*** ./node_modules/autosize/dist/autosize.js ***!
- \************************************************/
- /***/ (function(module, exports) {
- var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
- autosize 4.0.4
- license: MIT
- http://www.jacklmoore.com/autosize
- */
- (function (global, factory) {
- if (true) {
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
- __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
- (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else { var mod; }
- })(this, function (module, exports) {
- 'use strict';
- var map = typeof Map === "function" ? new Map() : function () {
- var keys = [];
- var values = [];
- return {
- has: function has(key) {
- return keys.indexOf(key) > -1;
- },
- get: function get(key) {
- return values[keys.indexOf(key)];
- },
- set: function set(key, value) {
- if (keys.indexOf(key) === -1) {
- keys.push(key);
- values.push(value);
- }
- },
- delete: function _delete(key) {
- var index = keys.indexOf(key);
- if (index > -1) {
- keys.splice(index, 1);
- values.splice(index, 1);
- }
- }
- };
- }();
- var createEvent = function createEvent(name) {
- return new Event(name, { bubbles: true });
- };
- try {
- new Event('test');
- } catch (e) {
- // IE does not support `new Event()`
- createEvent = function createEvent(name) {
- var evt = document.createEvent('Event');
- evt.initEvent(name, true, false);
- return evt;
- };
- }
- function assign(ta) {
- if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
- var heightOffset = null;
- var clientWidth = null;
- var cachedHeight = null;
- function init() {
- var style = window.getComputedStyle(ta, null);
- if (style.resize === 'vertical') {
- ta.style.resize = 'none';
- } else if (style.resize === 'both') {
- ta.style.resize = 'horizontal';
- }
- if (style.boxSizing === 'content-box') {
- heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
- } else {
- heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
- }
- // Fix when a textarea is not on document body and heightOffset is Not a Number
- if (isNaN(heightOffset)) {
- heightOffset = 0;
- }
- update();
- }
- function changeOverflow(value) {
- {
- // Chrome/Safari-specific fix:
- // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
- // made available by removing the scrollbar. The following forces the necessary text reflow.
- var width = ta.style.width;
- ta.style.width = '0px';
- // Force reflow:
- /* jshint ignore:start */
- ta.offsetWidth;
- /* jshint ignore:end */
- ta.style.width = width;
- }
- ta.style.overflowY = value;
- }
- function getParentOverflows(el) {
- var arr = [];
- while (el && el.parentNode && el.parentNode instanceof Element) {
- if (el.parentNode.scrollTop) {
- arr.push({
- node: el.parentNode,
- scrollTop: el.parentNode.scrollTop
- });
- }
- el = el.parentNode;
- }
- return arr;
- }
- function resize() {
- if (ta.scrollHeight === 0) {
- // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
- return;
- }
- var overflows = getParentOverflows(ta);
- var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
- ta.style.height = '';
- ta.style.height = ta.scrollHeight + heightOffset + 'px';
- // used to check if an update is actually necessary on window.resize
- clientWidth = ta.clientWidth;
- // prevents scroll-position jumping
- overflows.forEach(function (el) {
- el.node.scrollTop = el.scrollTop;
- });
- if (docTop) {
- document.documentElement.scrollTop = docTop;
- }
- }
- function update() {
- resize();
- var styleHeight = Math.round(parseFloat(ta.style.height));
- var computed = window.getComputedStyle(ta, null);
- // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
- var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
- // The actual height not matching the style height (set via the resize method) indicates that
- // the max-height has been exceeded, in which case the overflow should be allowed.
- if (actualHeight < styleHeight) {
- if (computed.overflowY === 'hidden') {
- changeOverflow('scroll');
- resize();
- actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
- }
- } else {
- // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
- if (computed.overflowY !== 'hidden') {
- changeOverflow('hidden');
- resize();
- actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
- }
- }
- if (cachedHeight !== actualHeight) {
- cachedHeight = actualHeight;
- var evt = createEvent('autosize:resized');
- try {
- ta.dispatchEvent(evt);
- } catch (err) {
- // Firefox will throw an error on dispatchEvent for a detached element
- // https://bugzilla.mozilla.org/show_bug.cgi?id=889376
- }
- }
- }
- var pageResize = function pageResize() {
- if (ta.clientWidth !== clientWidth) {
- update();
- }
- };
- var destroy = function (style) {
- window.removeEventListener('resize', pageResize, false);
- ta.removeEventListener('input', update, false);
- ta.removeEventListener('keyup', update, false);
- ta.removeEventListener('autosize:destroy', destroy, false);
- ta.removeEventListener('autosize:update', update, false);
- Object.keys(style).forEach(function (key) {
- ta.style[key] = style[key];
- });
- map.delete(ta);
- }.bind(ta, {
- height: ta.style.height,
- resize: ta.style.resize,
- overflowY: ta.style.overflowY,
- overflowX: ta.style.overflowX,
- wordWrap: ta.style.wordWrap
- });
- ta.addEventListener('autosize:destroy', destroy, false);
- // IE9 does not fire onpropertychange or oninput for deletions,
- // so binding to onkeyup to catch most of those events.
- // There is no way that I know of to detect something like 'cut' in IE9.
- if ('onpropertychange' in ta && 'oninput' in ta) {
- ta.addEventListener('keyup', update, false);
- }
- window.addEventListener('resize', pageResize, false);
- ta.addEventListener('input', update, false);
- ta.addEventListener('autosize:update', update, false);
- ta.style.overflowX = 'hidden';
- ta.style.wordWrap = 'break-word';
- map.set(ta, {
- destroy: destroy,
- update: update
- });
- init();
- }
- function destroy(ta) {
- var methods = map.get(ta);
- if (methods) {
- methods.destroy();
- }
- }
- function update(ta) {
- var methods = map.get(ta);
- if (methods) {
- methods.update();
- }
- }
- var autosize = null;
- // Do nothing in Node.js environment and IE8 (or lower)
- if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
- autosize = function autosize(el) {
- return el;
- };
- autosize.destroy = function (el) {
- return el;
- };
- autosize.update = function (el) {
- return el;
- };
- } else {
- autosize = function autosize(el, options) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], function (x) {
- return assign(x, options);
- });
- }
- return el;
- };
- autosize.destroy = function (el) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], destroy);
- }
- return el;
- };
- autosize.update = function (el) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], update);
- }
- return el;
- };
- }
- exports.default = autosize;
- module.exports = exports['default'];
- });
- /***/ }),
- /***/ "./node_modules/computed-style/dist/computedStyle.commonjs.js":
- /*!********************************************************************!*\
- !*** ./node_modules/computed-style/dist/computedStyle.commonjs.js ***!
- \********************************************************************/
- /***/ ((module) => {
- // DEV: We don't use var but favor parameters since these play nicer with minification
- function computedStyle(el, prop, getComputedStyle, style) {
- getComputedStyle = window.getComputedStyle;
- style =
- // If we have getComputedStyle
- getComputedStyle ?
- // Query it
- // TODO: From CSS-Query notes, we might need (node, null) for FF
- getComputedStyle(el) :
- // Otherwise, we are in IE and use currentStyle
- el.currentStyle;
- if (style) {
- return style
- [
- // Switch to camelCase for CSSOM
- // DEV: Grabbed from jQuery
- // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194
- // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597
- prop.replace(/-(\w)/gi, function (word, letter) {
- return letter.toUpperCase();
- })
- ];
- }
- }
- module.exports = computedStyle;
- /***/ }),
- /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/sass/d3v4pp.scss":
- /*!***************************************************************************************************************************************!*\
- !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/sass/d3v4pp.scss ***!
- \***************************************************************************************************************************************/
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
- /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
- // Imports
- var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
- ___CSS_LOADER_EXPORT___.push([module.id, "@import url(https://fonts.googleapis.com/css?family=Ubuntu);"]);
- // Module
- ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8";
- .webo {
- background-color: #0062d6 !important;
- }
- .webo-text {
- color: #0062d6 !important;
- }
- .webo-waves .waves-ripple {
- background-color: #0062d6 !important;
- }
- .webo.second {
- background-color: #0077FA !important;
- }
- .webo-text.text-second {
- color: #0077FA !important;
- }
- .webo-waves.waves-second .waves-ripple {
- background-color: #0077FA !important;
- }
- .webo.third {
- background-color: #09bddd !important;
- }
- .webo-text.text-third {
- color: #09bddd !important;
- }
- .webo-waves.waves-third .waves-ripple {
- background-color: #09bddd !important;
- }
- .webo.fourth {
- background-color: #cbe7fe !important;
- }
- .webo-text.text-fourth {
- color: #cbe7fe !important;
- }
- .webo-waves.waves-fourth .waves-ripple {
- background-color: #cbe7fe !important;
- }
- .webo.lighten-5 {
- background-color: #bbdefb !important;
- }
- .webo-text.text-lighten-5 {
- color: #bbdefb !important;
- }
- .webo-waves.waves-lighten-5 .waves-ripple {
- background-color: #bbdefb !important;
- }
- .webo.lighten-4 {
- background-color: #42a5f5 !important;
- }
- .webo-text.text-lighten-4 {
- color: #42a5f5 !important;
- }
- .webo-waves.waves-lighten-4 .waves-ripple {
- background-color: #42a5f5 !important;
- }
- .webo.lighten-3 {
- background-color: #7986cb !important;
- }
- .webo-text.text-lighten-3 {
- color: #7986cb !important;
- }
- .webo-waves.waves-lighten-3 .waves-ripple {
- background-color: #7986cb !important;
- }
- .webo.lighten-2 {
- background-color: #512da8 !important;
- }
- .webo-text.text-lighten-2 {
- color: #512da8 !important;
- }
- .webo-waves.waves-lighten-2 .waves-ripple {
- background-color: #512da8 !important;
- }
- .webo.lighten-1 {
- background-color: #283593 !important;
- }
- .webo-text.text-lighten-1 {
- color: #283593 !important;
- }
- .webo-waves.waves-lighten-1 .waves-ripple {
- background-color: #283593 !important;
- }
- .webo.darken-1 {
- background-color: #d0181e !important;
- }
- .webo-text.text-darken-1 {
- color: #d0181e !important;
- }
- .webo-waves.waves-darken-1 .waves-ripple {
- background-color: #d0181e !important;
- }
- .webo.darken-2 {
- background-color: #b9151b !important;
- }
- .webo-text.text-darken-2 {
- color: #b9151b !important;
- }
- .webo-waves.waves-darken-2 .waves-ripple {
- background-color: #b9151b !important;
- }
- .webo.darken-3 {
- background-color: #a21318 !important;
- }
- .webo-text.text-darken-3 {
- color: #a21318 !important;
- }
- .webo-waves.waves-darken-3 .waves-ripple {
- background-color: #a21318 !important;
- }
- .webo.b- {
- background-color: #49ce5f !important;
- }
- .webo-text.text-b- {
- color: #49ce5f !important;
- }
- .webo-waves.waves-b- .waves-ripple {
- background-color: #49ce5f !important;
- }
- .webo.darken-4 {
- background-color: #8b1014 !important;
- }
- .webo-text.text-darken-4 {
- color: #8b1014 !important;
- }
- .webo-waves.waves-darken-4 .waves-ripple {
- background-color: #8b1014 !important;
- }
- .red {
- background-color: #f44336 !important;
- }
- .red-text {
- color: #f44336 !important;
- }
- .red-waves .waves-ripple {
- background-color: #f44336 !important;
- }
- .red.lighten-5 {
- background-color: #ffebee !important;
- }
- .red-text.text-lighten-5 {
- color: #ffebee !important;
- }
- .red-waves.waves-lighten-5 .waves-ripple {
- background-color: #ffebee !important;
- }
- .red.lighten-4 {
- background-color: #ffcdd2 !important;
- }
- .red-text.text-lighten-4 {
- color: #ffcdd2 !important;
- }
- .red-waves.waves-lighten-4 .waves-ripple {
- background-color: #ffcdd2 !important;
- }
- .red.lighten-3 {
- background-color: #ef9a9a !important;
- }
- .red-text.text-lighten-3 {
- color: #ef9a9a !important;
- }
- .red-waves.waves-lighten-3 .waves-ripple {
- background-color: #ef9a9a !important;
- }
- .red.lighten-2 {
- background-color: #e57373 !important;
- }
- .red-text.text-lighten-2 {
- color: #e57373 !important;
- }
- .red-waves.waves-lighten-2 .waves-ripple {
- background-color: #e57373 !important;
- }
- .red.lighten-1 {
- background-color: #ef5350 !important;
- }
- .red-text.text-lighten-1 {
- color: #ef5350 !important;
- }
- .red-waves.waves-lighten-1 .waves-ripple {
- background-color: #ef5350 !important;
- }
- .red.darken-1 {
- background-color: #e53935 !important;
- }
- .red-text.text-darken-1 {
- color: #e53935 !important;
- }
- .red-waves.waves-darken-1 .waves-ripple {
- background-color: #e53935 !important;
- }
- .red.darken-2 {
- background-color: #d32f2f !important;
- }
- .red-text.text-darken-2 {
- color: #d32f2f !important;
- }
- .red-waves.waves-darken-2 .waves-ripple {
- background-color: #d32f2f !important;
- }
- .red.darken-3 {
- background-color: #c62828 !important;
- }
- .red-text.text-darken-3 {
- color: #c62828 !important;
- }
- .red-waves.waves-darken-3 .waves-ripple {
- background-color: #c62828 !important;
- }
- .red.darken-4 {
- background-color: #b71c1c !important;
- }
- .red-text.text-darken-4 {
- color: #b71c1c !important;
- }
- .red-waves.waves-darken-4 .waves-ripple {
- background-color: #b71c1c !important;
- }
- .red.accent-1 {
- background-color: #ff8a80 !important;
- }
- .red-text.text-accent-1 {
- color: #ff8a80 !important;
- }
- .red-waves.waves-accent-1 .waves-ripple {
- background-color: #ff8a80 !important;
- }
- .red.accent-2 {
- background-color: #ff5252 !important;
- }
- .red-text.text-accent-2 {
- color: #ff5252 !important;
- }
- .red-waves.waves-accent-2 .waves-ripple {
- background-color: #ff5252 !important;
- }
- .red.accent-3 {
- background-color: #ff1744 !important;
- }
- .red-text.text-accent-3 {
- color: #ff1744 !important;
- }
- .red-waves.waves-accent-3 .waves-ripple {
- background-color: #ff1744 !important;
- }
- .red.accent-4 {
- background-color: #d50000 !important;
- }
- .red-text.text-accent-4 {
- color: #d50000 !important;
- }
- .red-waves.waves-accent-4 .waves-ripple {
- background-color: #d50000 !important;
- }
- .pink {
- background-color: #e91e63 !important;
- }
- .pink-text {
- color: #e91e63 !important;
- }
- .pink-waves .waves-ripple {
- background-color: #e91e63 !important;
- }
- .pink.lighten-5 {
- background-color: #fce4ec !important;
- }
- .pink-text.text-lighten-5 {
- color: #fce4ec !important;
- }
- .pink-waves.waves-lighten-5 .waves-ripple {
- background-color: #fce4ec !important;
- }
- .pink.lighten-4 {
- background-color: #f8bbd0 !important;
- }
- .pink-text.text-lighten-4 {
- color: #f8bbd0 !important;
- }
- .pink-waves.waves-lighten-4 .waves-ripple {
- background-color: #f8bbd0 !important;
- }
- .pink.lighten-3 {
- background-color: #f48fb1 !important;
- }
- .pink-text.text-lighten-3 {
- color: #f48fb1 !important;
- }
- .pink-waves.waves-lighten-3 .waves-ripple {
- background-color: #f48fb1 !important;
- }
- .pink.lighten-2 {
- background-color: #f06292 !important;
- }
- .pink-text.text-lighten-2 {
- color: #f06292 !important;
- }
- .pink-waves.waves-lighten-2 .waves-ripple {
- background-color: #f06292 !important;
- }
- .pink.lighten-1 {
- background-color: #ec407a !important;
- }
- .pink-text.text-lighten-1 {
- color: #ec407a !important;
- }
- .pink-waves.waves-lighten-1 .waves-ripple {
- background-color: #ec407a !important;
- }
- .pink.darken-1 {
- background-color: #d81b60 !important;
- }
- .pink-text.text-darken-1 {
- color: #d81b60 !important;
- }
- .pink-waves.waves-darken-1 .waves-ripple {
- background-color: #d81b60 !important;
- }
- .pink.darken-2 {
- background-color: #c2185b !important;
- }
- .pink-text.text-darken-2 {
- color: #c2185b !important;
- }
- .pink-waves.waves-darken-2 .waves-ripple {
- background-color: #c2185b !important;
- }
- .pink.darken-3 {
- background-color: #ad1457 !important;
- }
- .pink-text.text-darken-3 {
- color: #ad1457 !important;
- }
- .pink-waves.waves-darken-3 .waves-ripple {
- background-color: #ad1457 !important;
- }
- .pink.darken-4 {
- background-color: #880e4f !important;
- }
- .pink-text.text-darken-4 {
- color: #880e4f !important;
- }
- .pink-waves.waves-darken-4 .waves-ripple {
- background-color: #880e4f !important;
- }
- .pink.accent-1 {
- background-color: #ff80ab !important;
- }
- .pink-text.text-accent-1 {
- color: #ff80ab !important;
- }
- .pink-waves.waves-accent-1 .waves-ripple {
- background-color: #ff80ab !important;
- }
- .pink.accent-2 {
- background-color: #ff4081 !important;
- }
- .pink-text.text-accent-2 {
- color: #ff4081 !important;
- }
- .pink-waves.waves-accent-2 .waves-ripple {
- background-color: #ff4081 !important;
- }
- .pink.accent-3 {
- background-color: #f50057 !important;
- }
- .pink-text.text-accent-3 {
- color: #f50057 !important;
- }
- .pink-waves.waves-accent-3 .waves-ripple {
- background-color: #f50057 !important;
- }
- .pink.accent-4 {
- background-color: #c51162 !important;
- }
- .pink-text.text-accent-4 {
- color: #c51162 !important;
- }
- .pink-waves.waves-accent-4 .waves-ripple {
- background-color: #c51162 !important;
- }
- .purple {
- background-color: #9c27b0 !important;
- }
- .purple-text {
- color: #9c27b0 !important;
- }
- .purple-waves .waves-ripple {
- background-color: #9c27b0 !important;
- }
- .purple.lighten-5 {
- background-color: #f3e5f5 !important;
- }
- .purple-text.text-lighten-5 {
- color: #f3e5f5 !important;
- }
- .purple-waves.waves-lighten-5 .waves-ripple {
- background-color: #f3e5f5 !important;
- }
- .purple.lighten-4 {
- background-color: #e1bee7 !important;
- }
- .purple-text.text-lighten-4 {
- color: #e1bee7 !important;
- }
- .purple-waves.waves-lighten-4 .waves-ripple {
- background-color: #e1bee7 !important;
- }
- .purple.lighten-3 {
- background-color: #ce93d8 !important;
- }
- .purple-text.text-lighten-3 {
- color: #ce93d8 !important;
- }
- .purple-waves.waves-lighten-3 .waves-ripple {
- background-color: #ce93d8 !important;
- }
- .purple.lighten-2 {
- background-color: #ba68c8 !important;
- }
- .purple-text.text-lighten-2 {
- color: #ba68c8 !important;
- }
- .purple-waves.waves-lighten-2 .waves-ripple {
- background-color: #ba68c8 !important;
- }
- .purple.lighten-1 {
- background-color: #ab47bc !important;
- }
- .purple-text.text-lighten-1 {
- color: #ab47bc !important;
- }
- .purple-waves.waves-lighten-1 .waves-ripple {
- background-color: #ab47bc !important;
- }
- .purple.darken-1 {
- background-color: #8e24aa !important;
- }
- .purple-text.text-darken-1 {
- color: #8e24aa !important;
- }
- .purple-waves.waves-darken-1 .waves-ripple {
- background-color: #8e24aa !important;
- }
- .purple.darken-2 {
- background-color: #7b1fa2 !important;
- }
- .purple-text.text-darken-2 {
- color: #7b1fa2 !important;
- }
- .purple-waves.waves-darken-2 .waves-ripple {
- background-color: #7b1fa2 !important;
- }
- .purple.darken-3 {
- background-color: #6a1b9a !important;
- }
- .purple-text.text-darken-3 {
- color: #6a1b9a !important;
- }
- .purple-waves.waves-darken-3 .waves-ripple {
- background-color: #6a1b9a !important;
- }
- .purple.darken-4 {
- background-color: #4a148c !important;
- }
- .purple-text.text-darken-4 {
- color: #4a148c !important;
- }
- .purple-waves.waves-darken-4 .waves-ripple {
- background-color: #4a148c !important;
- }
- .purple.accent-1 {
- background-color: #ea80fc !important;
- }
- .purple-text.text-accent-1 {
- color: #ea80fc !important;
- }
- .purple-waves.waves-accent-1 .waves-ripple {
- background-color: #ea80fc !important;
- }
- .purple.accent-2 {
- background-color: #e040fb !important;
- }
- .purple-text.text-accent-2 {
- color: #e040fb !important;
- }
- .purple-waves.waves-accent-2 .waves-ripple {
- background-color: #e040fb !important;
- }
- .purple.accent-3 {
- background-color: #d500f9 !important;
- }
- .purple-text.text-accent-3 {
- color: #d500f9 !important;
- }
- .purple-waves.waves-accent-3 .waves-ripple {
- background-color: #d500f9 !important;
- }
- .purple.accent-4 {
- background-color: #aa00ff !important;
- }
- .purple-text.text-accent-4 {
- color: #aa00ff !important;
- }
- .purple-waves.waves-accent-4 .waves-ripple {
- background-color: #aa00ff !important;
- }
- .deep-purple {
- background-color: #673ab7 !important;
- }
- .deep-purple-text {
- color: #673ab7 !important;
- }
- .deep-purple-waves .waves-ripple {
- background-color: #673ab7 !important;
- }
- .deep-purple.lighten-5 {
- background-color: #ede7f6 !important;
- }
- .deep-purple-text.text-lighten-5 {
- color: #ede7f6 !important;
- }
- .deep-purple-waves.waves-lighten-5 .waves-ripple {
- background-color: #ede7f6 !important;
- }
- .deep-purple.lighten-4 {
- background-color: #d1c4e9 !important;
- }
- .deep-purple-text.text-lighten-4 {
- color: #d1c4e9 !important;
- }
- .deep-purple-waves.waves-lighten-4 .waves-ripple {
- background-color: #d1c4e9 !important;
- }
- .deep-purple.lighten-3 {
- background-color: #b39ddb !important;
- }
- .deep-purple-text.text-lighten-3 {
- color: #b39ddb !important;
- }
- .deep-purple-waves.waves-lighten-3 .waves-ripple {
- background-color: #b39ddb !important;
- }
- .deep-purple.lighten-2 {
- background-color: #9575cd !important;
- }
- .deep-purple-text.text-lighten-2 {
- color: #9575cd !important;
- }
- .deep-purple-waves.waves-lighten-2 .waves-ripple {
- background-color: #9575cd !important;
- }
- .deep-purple.lighten-1 {
- background-color: #7e57c2 !important;
- }
- .deep-purple-text.text-lighten-1 {
- color: #7e57c2 !important;
- }
- .deep-purple-waves.waves-lighten-1 .waves-ripple {
- background-color: #7e57c2 !important;
- }
- .deep-purple.darken-1 {
- background-color: #5e35b1 !important;
- }
- .deep-purple-text.text-darken-1 {
- color: #5e35b1 !important;
- }
- .deep-purple-waves.waves-darken-1 .waves-ripple {
- background-color: #5e35b1 !important;
- }
- .deep-purple.darken-2 {
- background-color: #512da8 !important;
- }
- .deep-purple-text.text-darken-2 {
- color: #512da8 !important;
- }
- .deep-purple-waves.waves-darken-2 .waves-ripple {
- background-color: #512da8 !important;
- }
- .deep-purple.darken-3 {
- background-color: #4527a0 !important;
- }
- .deep-purple-text.text-darken-3 {
- color: #4527a0 !important;
- }
- .deep-purple-waves.waves-darken-3 .waves-ripple {
- background-color: #4527a0 !important;
- }
- .deep-purple.darken-4 {
- background-color: #311b92 !important;
- }
- .deep-purple-text.text-darken-4 {
- color: #311b92 !important;
- }
- .deep-purple-waves.waves-darken-4 .waves-ripple {
- background-color: #311b92 !important;
- }
- .deep-purple.accent-1 {
- background-color: #b388ff !important;
- }
- .deep-purple-text.text-accent-1 {
- color: #b388ff !important;
- }
- .deep-purple-waves.waves-accent-1 .waves-ripple {
- background-color: #b388ff !important;
- }
- .deep-purple.accent-2 {
- background-color: #7c4dff !important;
- }
- .deep-purple-text.text-accent-2 {
- color: #7c4dff !important;
- }
- .deep-purple-waves.waves-accent-2 .waves-ripple {
- background-color: #7c4dff !important;
- }
- .deep-purple.accent-3 {
- background-color: #651fff !important;
- }
- .deep-purple-text.text-accent-3 {
- color: #651fff !important;
- }
- .deep-purple-waves.waves-accent-3 .waves-ripple {
- background-color: #651fff !important;
- }
- .deep-purple.accent-4 {
- background-color: #6200ea !important;
- }
- .deep-purple-text.text-accent-4 {
- color: #6200ea !important;
- }
- .deep-purple-waves.waves-accent-4 .waves-ripple {
- background-color: #6200ea !important;
- }
- .indigo {
- background-color: #3f51b5 !important;
- }
- .indigo-text {
- color: #3f51b5 !important;
- }
- .indigo-waves .waves-ripple {
- background-color: #3f51b5 !important;
- }
- .indigo.lighten-5 {
- background-color: #e8eaf6 !important;
- }
- .indigo-text.text-lighten-5 {
- color: #e8eaf6 !important;
- }
- .indigo-waves.waves-lighten-5 .waves-ripple {
- background-color: #e8eaf6 !important;
- }
- .indigo.lighten-4 {
- background-color: #c5cae9 !important;
- }
- .indigo-text.text-lighten-4 {
- color: #c5cae9 !important;
- }
- .indigo-waves.waves-lighten-4 .waves-ripple {
- background-color: #c5cae9 !important;
- }
- .indigo.lighten-3 {
- background-color: #9fa8da !important;
- }
- .indigo-text.text-lighten-3 {
- color: #9fa8da !important;
- }
- .indigo-waves.waves-lighten-3 .waves-ripple {
- background-color: #9fa8da !important;
- }
- .indigo.lighten-2 {
- background-color: #7986cb !important;
- }
- .indigo-text.text-lighten-2 {
- color: #7986cb !important;
- }
- .indigo-waves.waves-lighten-2 .waves-ripple {
- background-color: #7986cb !important;
- }
- .indigo.lighten-1 {
- background-color: #5c6bc0 !important;
- }
- .indigo-text.text-lighten-1 {
- color: #5c6bc0 !important;
- }
- .indigo-waves.waves-lighten-1 .waves-ripple {
- background-color: #5c6bc0 !important;
- }
- .indigo.darken-1 {
- background-color: #3949ab !important;
- }
- .indigo-text.text-darken-1 {
- color: #3949ab !important;
- }
- .indigo-waves.waves-darken-1 .waves-ripple {
- background-color: #3949ab !important;
- }
- .indigo.darken-2 {
- background-color: #303f9f !important;
- }
- .indigo-text.text-darken-2 {
- color: #303f9f !important;
- }
- .indigo-waves.waves-darken-2 .waves-ripple {
- background-color: #303f9f !important;
- }
- .indigo.darken-3 {
- background-color: #283593 !important;
- }
- .indigo-text.text-darken-3 {
- color: #283593 !important;
- }
- .indigo-waves.waves-darken-3 .waves-ripple {
- background-color: #283593 !important;
- }
- .indigo.darken-4 {
- background-color: #1a237e !important;
- }
- .indigo-text.text-darken-4 {
- color: #1a237e !important;
- }
- .indigo-waves.waves-darken-4 .waves-ripple {
- background-color: #1a237e !important;
- }
- .indigo.accent-1 {
- background-color: #8c9eff !important;
- }
- .indigo-text.text-accent-1 {
- color: #8c9eff !important;
- }
- .indigo-waves.waves-accent-1 .waves-ripple {
- background-color: #8c9eff !important;
- }
- .indigo.accent-2 {
- background-color: #536dfe !important;
- }
- .indigo-text.text-accent-2 {
- color: #536dfe !important;
- }
- .indigo-waves.waves-accent-2 .waves-ripple {
- background-color: #536dfe !important;
- }
- .indigo.accent-3 {
- background-color: #3d5afe !important;
- }
- .indigo-text.text-accent-3 {
- color: #3d5afe !important;
- }
- .indigo-waves.waves-accent-3 .waves-ripple {
- background-color: #3d5afe !important;
- }
- .indigo.accent-4 {
- background-color: #304ffe !important;
- }
- .indigo-text.text-accent-4 {
- color: #304ffe !important;
- }
- .indigo-waves.waves-accent-4 .waves-ripple {
- background-color: #304ffe !important;
- }
- .blue {
- background-color: #2196f3 !important;
- }
- .blue-text {
- color: #2196f3 !important;
- }
- .blue-waves .waves-ripple {
- background-color: #2196f3 !important;
- }
- .blue.lighten-5 {
- background-color: #e3f2fd !important;
- }
- .blue-text.text-lighten-5 {
- color: #e3f2fd !important;
- }
- .blue-waves.waves-lighten-5 .waves-ripple {
- background-color: #e3f2fd !important;
- }
- .blue.lighten-4 {
- background-color: #bbdefb !important;
- }
- .blue-text.text-lighten-4 {
- color: #bbdefb !important;
- }
- .blue-waves.waves-lighten-4 .waves-ripple {
- background-color: #bbdefb !important;
- }
- .blue.lighten-3 {
- background-color: #90caf9 !important;
- }
- .blue-text.text-lighten-3 {
- color: #90caf9 !important;
- }
- .blue-waves.waves-lighten-3 .waves-ripple {
- background-color: #90caf9 !important;
- }
- .blue.lighten-2 {
- background-color: #64b5f6 !important;
- }
- .blue-text.text-lighten-2 {
- color: #64b5f6 !important;
- }
- .blue-waves.waves-lighten-2 .waves-ripple {
- background-color: #64b5f6 !important;
- }
- .blue.lighten-1 {
- background-color: #42a5f5 !important;
- }
- .blue-text.text-lighten-1 {
- color: #42a5f5 !important;
- }
- .blue-waves.waves-lighten-1 .waves-ripple {
- background-color: #42a5f5 !important;
- }
- .blue.darken-1 {
- background-color: #1e88e5 !important;
- }
- .blue-text.text-darken-1 {
- color: #1e88e5 !important;
- }
- .blue-waves.waves-darken-1 .waves-ripple {
- background-color: #1e88e5 !important;
- }
- .blue.darken-2 {
- background-color: #1976d2 !important;
- }
- .blue-text.text-darken-2 {
- color: #1976d2 !important;
- }
- .blue-waves.waves-darken-2 .waves-ripple {
- background-color: #1976d2 !important;
- }
- .blue.darken-3 {
- background-color: #1565c0 !important;
- }
- .blue-text.text-darken-3 {
- color: #1565c0 !important;
- }
- .blue-waves.waves-darken-3 .waves-ripple {
- background-color: #1565c0 !important;
- }
- .blue.darken-4 {
- background-color: #0d47a1 !important;
- }
- .blue-text.text-darken-4 {
- color: #0d47a1 !important;
- }
- .blue-waves.waves-darken-4 .waves-ripple {
- background-color: #0d47a1 !important;
- }
- .blue.accent-1 {
- background-color: #82b1ff !important;
- }
- .blue-text.text-accent-1 {
- color: #82b1ff !important;
- }
- .blue-waves.waves-accent-1 .waves-ripple {
- background-color: #82b1ff !important;
- }
- .blue.accent-2 {
- background-color: #448aff !important;
- }
- .blue-text.text-accent-2 {
- color: #448aff !important;
- }
- .blue-waves.waves-accent-2 .waves-ripple {
- background-color: #448aff !important;
- }
- .blue.accent-3 {
- background-color: #2979ff !important;
- }
- .blue-text.text-accent-3 {
- color: #2979ff !important;
- }
- .blue-waves.waves-accent-3 .waves-ripple {
- background-color: #2979ff !important;
- }
- .blue.accent-4 {
- background-color: #2962ff !important;
- }
- .blue-text.text-accent-4 {
- color: #2962ff !important;
- }
- .blue-waves.waves-accent-4 .waves-ripple {
- background-color: #2962ff !important;
- }
- .light-blue {
- background-color: #03a9f4 !important;
- }
- .light-blue-text {
- color: #03a9f4 !important;
- }
- .light-blue-waves .waves-ripple {
- background-color: #03a9f4 !important;
- }
- .light-blue.lighten-5 {
- background-color: #e1f5fe !important;
- }
- .light-blue-text.text-lighten-5 {
- color: #e1f5fe !important;
- }
- .light-blue-waves.waves-lighten-5 .waves-ripple {
- background-color: #e1f5fe !important;
- }
- .light-blue.lighten-4 {
- background-color: #b3e5fc !important;
- }
- .light-blue-text.text-lighten-4 {
- color: #b3e5fc !important;
- }
- .light-blue-waves.waves-lighten-4 .waves-ripple {
- background-color: #b3e5fc !important;
- }
- .light-blue.lighten-3 {
- background-color: #81d4fa !important;
- }
- .light-blue-text.text-lighten-3 {
- color: #81d4fa !important;
- }
- .light-blue-waves.waves-lighten-3 .waves-ripple {
- background-color: #81d4fa !important;
- }
- .light-blue.lighten-2 {
- background-color: #4fc3f7 !important;
- }
- .light-blue-text.text-lighten-2 {
- color: #4fc3f7 !important;
- }
- .light-blue-waves.waves-lighten-2 .waves-ripple {
- background-color: #4fc3f7 !important;
- }
- .light-blue.lighten-1 {
- background-color: #29b6f6 !important;
- }
- .light-blue-text.text-lighten-1 {
- color: #29b6f6 !important;
- }
- .light-blue-waves.waves-lighten-1 .waves-ripple {
- background-color: #29b6f6 !important;
- }
- .light-blue.darken-1 {
- background-color: #039be5 !important;
- }
- .light-blue-text.text-darken-1 {
- color: #039be5 !important;
- }
- .light-blue-waves.waves-darken-1 .waves-ripple {
- background-color: #039be5 !important;
- }
- .light-blue.darken-2 {
- background-color: #0288d1 !important;
- }
- .light-blue-text.text-darken-2 {
- color: #0288d1 !important;
- }
- .light-blue-waves.waves-darken-2 .waves-ripple {
- background-color: #0288d1 !important;
- }
- .light-blue.darken-3 {
- background-color: #0277bd !important;
- }
- .light-blue-text.text-darken-3 {
- color: #0277bd !important;
- }
- .light-blue-waves.waves-darken-3 .waves-ripple {
- background-color: #0277bd !important;
- }
- .light-blue.darken-4 {
- background-color: #01579b !important;
- }
- .light-blue-text.text-darken-4 {
- color: #01579b !important;
- }
- .light-blue-waves.waves-darken-4 .waves-ripple {
- background-color: #01579b !important;
- }
- .light-blue.accent-1 {
- background-color: #80d8ff !important;
- }
- .light-blue-text.text-accent-1 {
- color: #80d8ff !important;
- }
- .light-blue-waves.waves-accent-1 .waves-ripple {
- background-color: #80d8ff !important;
- }
- .light-blue.accent-2 {
- background-color: #40c4ff !important;
- }
- .light-blue-text.text-accent-2 {
- color: #40c4ff !important;
- }
- .light-blue-waves.waves-accent-2 .waves-ripple {
- background-color: #40c4ff !important;
- }
- .light-blue.accent-3 {
- background-color: #00b0ff !important;
- }
- .light-blue-text.text-accent-3 {
- color: #00b0ff !important;
- }
- .light-blue-waves.waves-accent-3 .waves-ripple {
- background-color: #00b0ff !important;
- }
- .light-blue.accent-4 {
- background-color: #0091ea !important;
- }
- .light-blue-text.text-accent-4 {
- color: #0091ea !important;
- }
- .light-blue-waves.waves-accent-4 .waves-ripple {
- background-color: #0091ea !important;
- }
- .cyan {
- background-color: #00bcd4 !important;
- }
- .cyan-text {
- color: #00bcd4 !important;
- }
- .cyan-waves .waves-ripple {
- background-color: #00bcd4 !important;
- }
- .cyan.lighten-5 {
- background-color: #e0f7fa !important;
- }
- .cyan-text.text-lighten-5 {
- color: #e0f7fa !important;
- }
- .cyan-waves.waves-lighten-5 .waves-ripple {
- background-color: #e0f7fa !important;
- }
- .cyan.lighten-4 {
- background-color: #b2ebf2 !important;
- }
- .cyan-text.text-lighten-4 {
- color: #b2ebf2 !important;
- }
- .cyan-waves.waves-lighten-4 .waves-ripple {
- background-color: #b2ebf2 !important;
- }
- .cyan.lighten-3 {
- background-color: #80deea !important;
- }
- .cyan-text.text-lighten-3 {
- color: #80deea !important;
- }
- .cyan-waves.waves-lighten-3 .waves-ripple {
- background-color: #80deea !important;
- }
- .cyan.lighten-2 {
- background-color: #4dd0e1 !important;
- }
- .cyan-text.text-lighten-2 {
- color: #4dd0e1 !important;
- }
- .cyan-waves.waves-lighten-2 .waves-ripple {
- background-color: #4dd0e1 !important;
- }
- .cyan.lighten-1 {
- background-color: #26c6da !important;
- }
- .cyan-text.text-lighten-1 {
- color: #26c6da !important;
- }
- .cyan-waves.waves-lighten-1 .waves-ripple {
- background-color: #26c6da !important;
- }
- .cyan.darken-1 {
- background-color: #00acc1 !important;
- }
- .cyan-text.text-darken-1 {
- color: #00acc1 !important;
- }
- .cyan-waves.waves-darken-1 .waves-ripple {
- background-color: #00acc1 !important;
- }
- .cyan.darken-2 {
- background-color: #0097a7 !important;
- }
- .cyan-text.text-darken-2 {
- color: #0097a7 !important;
- }
- .cyan-waves.waves-darken-2 .waves-ripple {
- background-color: #0097a7 !important;
- }
- .cyan.darken-3 {
- background-color: #00838f !important;
- }
- .cyan-text.text-darken-3 {
- color: #00838f !important;
- }
- .cyan-waves.waves-darken-3 .waves-ripple {
- background-color: #00838f !important;
- }
- .cyan.darken-4 {
- background-color: #006064 !important;
- }
- .cyan-text.text-darken-4 {
- color: #006064 !important;
- }
- .cyan-waves.waves-darken-4 .waves-ripple {
- background-color: #006064 !important;
- }
- .cyan.accent-1 {
- background-color: #84ffff !important;
- }
- .cyan-text.text-accent-1 {
- color: #84ffff !important;
- }
- .cyan-waves.waves-accent-1 .waves-ripple {
- background-color: #84ffff !important;
- }
- .cyan.accent-2 {
- background-color: #18ffff !important;
- }
- .cyan-text.text-accent-2 {
- color: #18ffff !important;
- }
- .cyan-waves.waves-accent-2 .waves-ripple {
- background-color: #18ffff !important;
- }
- .cyan.accent-3 {
- background-color: #00e5ff !important;
- }
- .cyan-text.text-accent-3 {
- color: #00e5ff !important;
- }
- .cyan-waves.waves-accent-3 .waves-ripple {
- background-color: #00e5ff !important;
- }
- .cyan.accent-4 {
- background-color: #00b8d4 !important;
- }
- .cyan-text.text-accent-4 {
- color: #00b8d4 !important;
- }
- .cyan-waves.waves-accent-4 .waves-ripple {
- background-color: #00b8d4 !important;
- }
- .teal {
- background-color: #009688 !important;
- }
- .teal-text {
- color: #009688 !important;
- }
- .teal-waves .waves-ripple {
- background-color: #009688 !important;
- }
- .teal.lighten-5 {
- background-color: #e0f2f1 !important;
- }
- .teal-text.text-lighten-5 {
- color: #e0f2f1 !important;
- }
- .teal-waves.waves-lighten-5 .waves-ripple {
- background-color: #e0f2f1 !important;
- }
- .teal.lighten-4 {
- background-color: #b2dfdb !important;
- }
- .teal-text.text-lighten-4 {
- color: #b2dfdb !important;
- }
- .teal-waves.waves-lighten-4 .waves-ripple {
- background-color: #b2dfdb !important;
- }
- .teal.lighten-3 {
- background-color: #80cbc4 !important;
- }
- .teal-text.text-lighten-3 {
- color: #80cbc4 !important;
- }
- .teal-waves.waves-lighten-3 .waves-ripple {
- background-color: #80cbc4 !important;
- }
- .teal.lighten-2 {
- background-color: #4db6ac !important;
- }
- .teal-text.text-lighten-2 {
- color: #4db6ac !important;
- }
- .teal-waves.waves-lighten-2 .waves-ripple {
- background-color: #4db6ac !important;
- }
- .teal.lighten-1 {
- background-color: #26a69a !important;
- }
- .teal-text.text-lighten-1 {
- color: #26a69a !important;
- }
- .teal-waves.waves-lighten-1 .waves-ripple {
- background-color: #26a69a !important;
- }
- .teal.darken-1 {
- background-color: #00897b !important;
- }
- .teal-text.text-darken-1 {
- color: #00897b !important;
- }
- .teal-waves.waves-darken-1 .waves-ripple {
- background-color: #00897b !important;
- }
- .teal.darken-2 {
- background-color: #00796b !important;
- }
- .teal-text.text-darken-2 {
- color: #00796b !important;
- }
- .teal-waves.waves-darken-2 .waves-ripple {
- background-color: #00796b !important;
- }
- .teal.darken-3 {
- background-color: #00695c !important;
- }
- .teal-text.text-darken-3 {
- color: #00695c !important;
- }
- .teal-waves.waves-darken-3 .waves-ripple {
- background-color: #00695c !important;
- }
- .teal.darken-4 {
- background-color: #004d40 !important;
- }
- .teal-text.text-darken-4 {
- color: #004d40 !important;
- }
- .teal-waves.waves-darken-4 .waves-ripple {
- background-color: #004d40 !important;
- }
- .teal.accent-1 {
- background-color: #a7ffeb !important;
- }
- .teal-text.text-accent-1 {
- color: #a7ffeb !important;
- }
- .teal-waves.waves-accent-1 .waves-ripple {
- background-color: #a7ffeb !important;
- }
- .teal.accent-2 {
- background-color: #64ffda !important;
- }
- .teal-text.text-accent-2 {
- color: #64ffda !important;
- }
- .teal-waves.waves-accent-2 .waves-ripple {
- background-color: #64ffda !important;
- }
- .teal.accent-3 {
- background-color: #1de9b6 !important;
- }
- .teal-text.text-accent-3 {
- color: #1de9b6 !important;
- }
- .teal-waves.waves-accent-3 .waves-ripple {
- background-color: #1de9b6 !important;
- }
- .teal.accent-4 {
- background-color: #00bfa5 !important;
- }
- .teal-text.text-accent-4 {
- color: #00bfa5 !important;
- }
- .teal-waves.waves-accent-4 .waves-ripple {
- background-color: #00bfa5 !important;
- }
- .green {
- background-color: #4caf50 !important;
- }
- .green-text {
- color: #4caf50 !important;
- }
- .green-waves .waves-ripple {
- background-color: #4caf50 !important;
- }
- .green.lighten-5 {
- background-color: #e8f5e9 !important;
- }
- .green-text.text-lighten-5 {
- color: #e8f5e9 !important;
- }
- .green-waves.waves-lighten-5 .waves-ripple {
- background-color: #e8f5e9 !important;
- }
- .green.lighten-4 {
- background-color: #c8e6c9 !important;
- }
- .green-text.text-lighten-4 {
- color: #c8e6c9 !important;
- }
- .green-waves.waves-lighten-4 .waves-ripple {
- background-color: #c8e6c9 !important;
- }
- .green.lighten-3 {
- background-color: #a5d6a7 !important;
- }
- .green-text.text-lighten-3 {
- color: #a5d6a7 !important;
- }
- .green-waves.waves-lighten-3 .waves-ripple {
- background-color: #a5d6a7 !important;
- }
- .green.lighten-2 {
- background-color: #81c784 !important;
- }
- .green-text.text-lighten-2 {
- color: #81c784 !important;
- }
- .green-waves.waves-lighten-2 .waves-ripple {
- background-color: #81c784 !important;
- }
- .green.lighten-1 {
- background-color: #66bb6a !important;
- }
- .green-text.text-lighten-1 {
- color: #66bb6a !important;
- }
- .green-waves.waves-lighten-1 .waves-ripple {
- background-color: #66bb6a !important;
- }
- .green.darken-1 {
- background-color: #43a047 !important;
- }
- .green-text.text-darken-1 {
- color: #43a047 !important;
- }
- .green-waves.waves-darken-1 .waves-ripple {
- background-color: #43a047 !important;
- }
- .green.darken-2 {
- background-color: #388e3c !important;
- }
- .green-text.text-darken-2 {
- color: #388e3c !important;
- }
- .green-waves.waves-darken-2 .waves-ripple {
- background-color: #388e3c !important;
- }
- .green.darken-3 {
- background-color: #2e7d32 !important;
- }
- .green-text.text-darken-3 {
- color: #2e7d32 !important;
- }
- .green-waves.waves-darken-3 .waves-ripple {
- background-color: #2e7d32 !important;
- }
- .green.darken-4 {
- background-color: #1b5e20 !important;
- }
- .green-text.text-darken-4 {
- color: #1b5e20 !important;
- }
- .green-waves.waves-darken-4 .waves-ripple {
- background-color: #1b5e20 !important;
- }
- .green.accent-1 {
- background-color: #b9f6ca !important;
- }
- .green-text.text-accent-1 {
- color: #b9f6ca !important;
- }
- .green-waves.waves-accent-1 .waves-ripple {
- background-color: #b9f6ca !important;
- }
- .green.accent-2 {
- background-color: #69f0ae !important;
- }
- .green-text.text-accent-2 {
- color: #69f0ae !important;
- }
- .green-waves.waves-accent-2 .waves-ripple {
- background-color: #69f0ae !important;
- }
- .green.accent-3 {
- background-color: #00e676 !important;
- }
- .green-text.text-accent-3 {
- color: #00e676 !important;
- }
- .green-waves.waves-accent-3 .waves-ripple {
- background-color: #00e676 !important;
- }
- .green.accent-4 {
- background-color: #00c853 !important;
- }
- .green-text.text-accent-4 {
- color: #00c853 !important;
- }
- .green-waves.waves-accent-4 .waves-ripple {
- background-color: #00c853 !important;
- }
- .light-green {
- background-color: #8bc34a !important;
- }
- .light-green-text {
- color: #8bc34a !important;
- }
- .light-green-waves .waves-ripple {
- background-color: #8bc34a !important;
- }
- .light-green.lighten-5 {
- background-color: #f1f8e9 !important;
- }
- .light-green-text.text-lighten-5 {
- color: #f1f8e9 !important;
- }
- .light-green-waves.waves-lighten-5 .waves-ripple {
- background-color: #f1f8e9 !important;
- }
- .light-green.lighten-4 {
- background-color: #dcedc8 !important;
- }
- .light-green-text.text-lighten-4 {
- color: #dcedc8 !important;
- }
- .light-green-waves.waves-lighten-4 .waves-ripple {
- background-color: #dcedc8 !important;
- }
- .light-green.lighten-3 {
- background-color: #c5e1a5 !important;
- }
- .light-green-text.text-lighten-3 {
- color: #c5e1a5 !important;
- }
- .light-green-waves.waves-lighten-3 .waves-ripple {
- background-color: #c5e1a5 !important;
- }
- .light-green.lighten-2 {
- background-color: #aed581 !important;
- }
- .light-green-text.text-lighten-2 {
- color: #aed581 !important;
- }
- .light-green-waves.waves-lighten-2 .waves-ripple {
- background-color: #aed581 !important;
- }
- .light-green.lighten-1 {
- background-color: #9ccc65 !important;
- }
- .light-green-text.text-lighten-1 {
- color: #9ccc65 !important;
- }
- .light-green-waves.waves-lighten-1 .waves-ripple {
- background-color: #9ccc65 !important;
- }
- .light-green.darken-1 {
- background-color: #7cb342 !important;
- }
- .light-green-text.text-darken-1 {
- color: #7cb342 !important;
- }
- .light-green-waves.waves-darken-1 .waves-ripple {
- background-color: #7cb342 !important;
- }
- .light-green.darken-2 {
- background-color: #689f38 !important;
- }
- .light-green-text.text-darken-2 {
- color: #689f38 !important;
- }
- .light-green-waves.waves-darken-2 .waves-ripple {
- background-color: #689f38 !important;
- }
- .light-green.darken-3 {
- background-color: #558b2f !important;
- }
- .light-green-text.text-darken-3 {
- color: #558b2f !important;
- }
- .light-green-waves.waves-darken-3 .waves-ripple {
- background-color: #558b2f !important;
- }
- .light-green.darken-4 {
- background-color: #33691e !important;
- }
- .light-green-text.text-darken-4 {
- color: #33691e !important;
- }
- .light-green-waves.waves-darken-4 .waves-ripple {
- background-color: #33691e !important;
- }
- .light-green.accent-1 {
- background-color: #ccff90 !important;
- }
- .light-green-text.text-accent-1 {
- color: #ccff90 !important;
- }
- .light-green-waves.waves-accent-1 .waves-ripple {
- background-color: #ccff90 !important;
- }
- .light-green.accent-2 {
- background-color: #b2ff59 !important;
- }
- .light-green-text.text-accent-2 {
- color: #b2ff59 !important;
- }
- .light-green-waves.waves-accent-2 .waves-ripple {
- background-color: #b2ff59 !important;
- }
- .light-green.accent-3 {
- background-color: #76ff03 !important;
- }
- .light-green-text.text-accent-3 {
- color: #76ff03 !important;
- }
- .light-green-waves.waves-accent-3 .waves-ripple {
- background-color: #76ff03 !important;
- }
- .light-green.accent-4 {
- background-color: #64dd17 !important;
- }
- .light-green-text.text-accent-4 {
- color: #64dd17 !important;
- }
- .light-green-waves.waves-accent-4 .waves-ripple {
- background-color: #64dd17 !important;
- }
- .lime {
- background-color: #cddc39 !important;
- }
- .lime-text {
- color: #cddc39 !important;
- }
- .lime-waves .waves-ripple {
- background-color: #cddc39 !important;
- }
- .lime.lighten-5 {
- background-color: #f9fbe7 !important;
- }
- .lime-text.text-lighten-5 {
- color: #f9fbe7 !important;
- }
- .lime-waves.waves-lighten-5 .waves-ripple {
- background-color: #f9fbe7 !important;
- }
- .lime.lighten-4 {
- background-color: #f0f4c3 !important;
- }
- .lime-text.text-lighten-4 {
- color: #f0f4c3 !important;
- }
- .lime-waves.waves-lighten-4 .waves-ripple {
- background-color: #f0f4c3 !important;
- }
- .lime.lighten-3 {
- background-color: #e6ee9c !important;
- }
- .lime-text.text-lighten-3 {
- color: #e6ee9c !important;
- }
- .lime-waves.waves-lighten-3 .waves-ripple {
- background-color: #e6ee9c !important;
- }
- .lime.lighten-2 {
- background-color: #dce775 !important;
- }
- .lime-text.text-lighten-2 {
- color: #dce775 !important;
- }
- .lime-waves.waves-lighten-2 .waves-ripple {
- background-color: #dce775 !important;
- }
- .lime.lighten-1 {
- background-color: #d4e157 !important;
- }
- .lime-text.text-lighten-1 {
- color: #d4e157 !important;
- }
- .lime-waves.waves-lighten-1 .waves-ripple {
- background-color: #d4e157 !important;
- }
- .lime.darken-1 {
- background-color: #c0ca33 !important;
- }
- .lime-text.text-darken-1 {
- color: #c0ca33 !important;
- }
- .lime-waves.waves-darken-1 .waves-ripple {
- background-color: #c0ca33 !important;
- }
- .lime.darken-2 {
- background-color: #afb42b !important;
- }
- .lime-text.text-darken-2 {
- color: #afb42b !important;
- }
- .lime-waves.waves-darken-2 .waves-ripple {
- background-color: #afb42b !important;
- }
- .lime.darken-3 {
- background-color: #9e9d24 !important;
- }
- .lime-text.text-darken-3 {
- color: #9e9d24 !important;
- }
- .lime-waves.waves-darken-3 .waves-ripple {
- background-color: #9e9d24 !important;
- }
- .lime.darken-4 {
- background-color: #827717 !important;
- }
- .lime-text.text-darken-4 {
- color: #827717 !important;
- }
- .lime-waves.waves-darken-4 .waves-ripple {
- background-color: #827717 !important;
- }
- .lime.accent-1 {
- background-color: #f4ff81 !important;
- }
- .lime-text.text-accent-1 {
- color: #f4ff81 !important;
- }
- .lime-waves.waves-accent-1 .waves-ripple {
- background-color: #f4ff81 !important;
- }
- .lime.accent-2 {
- background-color: #eeff41 !important;
- }
- .lime-text.text-accent-2 {
- color: #eeff41 !important;
- }
- .lime-waves.waves-accent-2 .waves-ripple {
- background-color: #eeff41 !important;
- }
- .lime.accent-3 {
- background-color: #c6ff00 !important;
- }
- .lime-text.text-accent-3 {
- color: #c6ff00 !important;
- }
- .lime-waves.waves-accent-3 .waves-ripple {
- background-color: #c6ff00 !important;
- }
- .lime.accent-4 {
- background-color: #aeea00 !important;
- }
- .lime-text.text-accent-4 {
- color: #aeea00 !important;
- }
- .lime-waves.waves-accent-4 .waves-ripple {
- background-color: #aeea00 !important;
- }
- .yellow {
- background-color: #ffeb3b !important;
- }
- .yellow-text {
- color: #ffeb3b !important;
- }
- .yellow-waves .waves-ripple {
- background-color: #ffeb3b !important;
- }
- .yellow.lighten-5 {
- background-color: #fffde7 !important;
- }
- .yellow-text.text-lighten-5 {
- color: #fffde7 !important;
- }
- .yellow-waves.waves-lighten-5 .waves-ripple {
- background-color: #fffde7 !important;
- }
- .yellow.lighten-4 {
- background-color: #fff9c4 !important;
- }
- .yellow-text.text-lighten-4 {
- color: #fff9c4 !important;
- }
- .yellow-waves.waves-lighten-4 .waves-ripple {
- background-color: #fff9c4 !important;
- }
- .yellow.lighten-3 {
- background-color: #fff59d !important;
- }
- .yellow-text.text-lighten-3 {
- color: #fff59d !important;
- }
- .yellow-waves.waves-lighten-3 .waves-ripple {
- background-color: #fff59d !important;
- }
- .yellow.lighten-2 {
- background-color: #fff176 !important;
- }
- .yellow-text.text-lighten-2 {
- color: #fff176 !important;
- }
- .yellow-waves.waves-lighten-2 .waves-ripple {
- background-color: #fff176 !important;
- }
- .yellow.lighten-1 {
- background-color: #ffee58 !important;
- }
- .yellow-text.text-lighten-1 {
- color: #ffee58 !important;
- }
- .yellow-waves.waves-lighten-1 .waves-ripple {
- background-color: #ffee58 !important;
- }
- .yellow.darken-1 {
- background-color: #fdd835 !important;
- }
- .yellow-text.text-darken-1 {
- color: #fdd835 !important;
- }
- .yellow-waves.waves-darken-1 .waves-ripple {
- background-color: #fdd835 !important;
- }
- .yellow.darken-2 {
- background-color: #fbc02d !important;
- }
- .yellow-text.text-darken-2 {
- color: #fbc02d !important;
- }
- .yellow-waves.waves-darken-2 .waves-ripple {
- background-color: #fbc02d !important;
- }
- .yellow.darken-3 {
- background-color: #f9a825 !important;
- }
- .yellow-text.text-darken-3 {
- color: #f9a825 !important;
- }
- .yellow-waves.waves-darken-3 .waves-ripple {
- background-color: #f9a825 !important;
- }
- .yellow.darken-4 {
- background-color: #f57f17 !important;
- }
- .yellow-text.text-darken-4 {
- color: #f57f17 !important;
- }
- .yellow-waves.waves-darken-4 .waves-ripple {
- background-color: #f57f17 !important;
- }
- .yellow.accent-1 {
- background-color: #ffff8d !important;
- }
- .yellow-text.text-accent-1 {
- color: #ffff8d !important;
- }
- .yellow-waves.waves-accent-1 .waves-ripple {
- background-color: #ffff8d !important;
- }
- .yellow.accent-2 {
- background-color: #ffff00 !important;
- }
- .yellow-text.text-accent-2 {
- color: #ffff00 !important;
- }
- .yellow-waves.waves-accent-2 .waves-ripple {
- background-color: #ffff00 !important;
- }
- .yellow.accent-3 {
- background-color: #ffea00 !important;
- }
- .yellow-text.text-accent-3 {
- color: #ffea00 !important;
- }
- .yellow-waves.waves-accent-3 .waves-ripple {
- background-color: #ffea00 !important;
- }
- .yellow.accent-4 {
- background-color: #ffd600 !important;
- }
- .yellow-text.text-accent-4 {
- color: #ffd600 !important;
- }
- .yellow-waves.waves-accent-4 .waves-ripple {
- background-color: #ffd600 !important;
- }
- .amber {
- background-color: #ffc107 !important;
- }
- .amber-text {
- color: #ffc107 !important;
- }
- .amber-waves .waves-ripple {
- background-color: #ffc107 !important;
- }
- .amber.lighten-5 {
- background-color: #fff8e1 !important;
- }
- .amber-text.text-lighten-5 {
- color: #fff8e1 !important;
- }
- .amber-waves.waves-lighten-5 .waves-ripple {
- background-color: #fff8e1 !important;
- }
- .amber.lighten-4 {
- background-color: #ffecb3 !important;
- }
- .amber-text.text-lighten-4 {
- color: #ffecb3 !important;
- }
- .amber-waves.waves-lighten-4 .waves-ripple {
- background-color: #ffecb3 !important;
- }
- .amber.lighten-3 {
- background-color: #ffe082 !important;
- }
- .amber-text.text-lighten-3 {
- color: #ffe082 !important;
- }
- .amber-waves.waves-lighten-3 .waves-ripple {
- background-color: #ffe082 !important;
- }
- .amber.lighten-2 {
- background-color: #ffd54f !important;
- }
- .amber-text.text-lighten-2 {
- color: #ffd54f !important;
- }
- .amber-waves.waves-lighten-2 .waves-ripple {
- background-color: #ffd54f !important;
- }
- .amber.lighten-1 {
- background-color: #ffca28 !important;
- }
- .amber-text.text-lighten-1 {
- color: #ffca28 !important;
- }
- .amber-waves.waves-lighten-1 .waves-ripple {
- background-color: #ffca28 !important;
- }
- .amber.darken-1 {
- background-color: #ffb300 !important;
- }
- .amber-text.text-darken-1 {
- color: #ffb300 !important;
- }
- .amber-waves.waves-darken-1 .waves-ripple {
- background-color: #ffb300 !important;
- }
- .amber.darken-2 {
- background-color: #ffa000 !important;
- }
- .amber-text.text-darken-2 {
- color: #ffa000 !important;
- }
- .amber-waves.waves-darken-2 .waves-ripple {
- background-color: #ffa000 !important;
- }
- .amber.darken-3 {
- background-color: #ff8f00 !important;
- }
- .amber-text.text-darken-3 {
- color: #ff8f00 !important;
- }
- .amber-waves.waves-darken-3 .waves-ripple {
- background-color: #ff8f00 !important;
- }
- .amber.darken-4 {
- background-color: #ff6f00 !important;
- }
- .amber-text.text-darken-4 {
- color: #ff6f00 !important;
- }
- .amber-waves.waves-darken-4 .waves-ripple {
- background-color: #ff6f00 !important;
- }
- .amber.accent-1 {
- background-color: #ffe57f !important;
- }
- .amber-text.text-accent-1 {
- color: #ffe57f !important;
- }
- .amber-waves.waves-accent-1 .waves-ripple {
- background-color: #ffe57f !important;
- }
- .amber.accent-2 {
- background-color: #ffd740 !important;
- }
- .amber-text.text-accent-2 {
- color: #ffd740 !important;
- }
- .amber-waves.waves-accent-2 .waves-ripple {
- background-color: #ffd740 !important;
- }
- .amber.accent-3 {
- background-color: #ffc400 !important;
- }
- .amber-text.text-accent-3 {
- color: #ffc400 !important;
- }
- .amber-waves.waves-accent-3 .waves-ripple {
- background-color: #ffc400 !important;
- }
- .amber.accent-4 {
- background-color: #ffab00 !important;
- }
- .amber-text.text-accent-4 {
- color: #ffab00 !important;
- }
- .amber-waves.waves-accent-4 .waves-ripple {
- background-color: #ffab00 !important;
- }
- .orange {
- background-color: #ff9800 !important;
- }
- .orange-text {
- color: #ff9800 !important;
- }
- .orange-waves .waves-ripple {
- background-color: #ff9800 !important;
- }
- .orange.lighten-5 {
- background-color: #fff3e0 !important;
- }
- .orange-text.text-lighten-5 {
- color: #fff3e0 !important;
- }
- .orange-waves.waves-lighten-5 .waves-ripple {
- background-color: #fff3e0 !important;
- }
- .orange.lighten-4 {
- background-color: #ffe0b2 !important;
- }
- .orange-text.text-lighten-4 {
- color: #ffe0b2 !important;
- }
- .orange-waves.waves-lighten-4 .waves-ripple {
- background-color: #ffe0b2 !important;
- }
- .orange.lighten-3 {
- background-color: #ffcc80 !important;
- }
- .orange-text.text-lighten-3 {
- color: #ffcc80 !important;
- }
- .orange-waves.waves-lighten-3 .waves-ripple {
- background-color: #ffcc80 !important;
- }
- .orange.lighten-2 {
- background-color: #ffb74d !important;
- }
- .orange-text.text-lighten-2 {
- color: #ffb74d !important;
- }
- .orange-waves.waves-lighten-2 .waves-ripple {
- background-color: #ffb74d !important;
- }
- .orange.lighten-1 {
- background-color: #ffa726 !important;
- }
- .orange-text.text-lighten-1 {
- color: #ffa726 !important;
- }
- .orange-waves.waves-lighten-1 .waves-ripple {
- background-color: #ffa726 !important;
- }
- .orange.darken-1 {
- background-color: #fb8c00 !important;
- }
- .orange-text.text-darken-1 {
- color: #fb8c00 !important;
- }
- .orange-waves.waves-darken-1 .waves-ripple {
- background-color: #fb8c00 !important;
- }
- .orange.darken-2 {
- background-color: #f57c00 !important;
- }
- .orange-text.text-darken-2 {
- color: #f57c00 !important;
- }
- .orange-waves.waves-darken-2 .waves-ripple {
- background-color: #f57c00 !important;
- }
- .orange.darken-3 {
- background-color: #ef6c00 !important;
- }
- .orange-text.text-darken-3 {
- color: #ef6c00 !important;
- }
- .orange-waves.waves-darken-3 .waves-ripple {
- background-color: #ef6c00 !important;
- }
- .orange.darken-4 {
- background-color: #e65100 !important;
- }
- .orange-text.text-darken-4 {
- color: #e65100 !important;
- }
- .orange-waves.waves-darken-4 .waves-ripple {
- background-color: #e65100 !important;
- }
- .orange.accent-1 {
- background-color: #ffd180 !important;
- }
- .orange-text.text-accent-1 {
- color: #ffd180 !important;
- }
- .orange-waves.waves-accent-1 .waves-ripple {
- background-color: #ffd180 !important;
- }
- .orange.accent-2 {
- background-color: #ffab40 !important;
- }
- .orange-text.text-accent-2 {
- color: #ffab40 !important;
- }
- .orange-waves.waves-accent-2 .waves-ripple {
- background-color: #ffab40 !important;
- }
- .orange.accent-3 {
- background-color: #ff9100 !important;
- }
- .orange-text.text-accent-3 {
- color: #ff9100 !important;
- }
- .orange-waves.waves-accent-3 .waves-ripple {
- background-color: #ff9100 !important;
- }
- .orange.accent-4 {
- background-color: #ff6d00 !important;
- }
- .orange-text.text-accent-4 {
- color: #ff6d00 !important;
- }
- .orange-waves.waves-accent-4 .waves-ripple {
- background-color: #ff6d00 !important;
- }
- .deep-orange {
- background-color: #ff5722 !important;
- }
- .deep-orange-text {
- color: #ff5722 !important;
- }
- .deep-orange-waves .waves-ripple {
- background-color: #ff5722 !important;
- }
- .deep-orange.lighten-5 {
- background-color: #fbe9e7 !important;
- }
- .deep-orange-text.text-lighten-5 {
- color: #fbe9e7 !important;
- }
- .deep-orange-waves.waves-lighten-5 .waves-ripple {
- background-color: #fbe9e7 !important;
- }
- .deep-orange.lighten-4 {
- background-color: #ffccbc !important;
- }
- .deep-orange-text.text-lighten-4 {
- color: #ffccbc !important;
- }
- .deep-orange-waves.waves-lighten-4 .waves-ripple {
- background-color: #ffccbc !important;
- }
- .deep-orange.lighten-3 {
- background-color: #ffab91 !important;
- }
- .deep-orange-text.text-lighten-3 {
- color: #ffab91 !important;
- }
- .deep-orange-waves.waves-lighten-3 .waves-ripple {
- background-color: #ffab91 !important;
- }
- .deep-orange.lighten-2 {
- background-color: #ff8a65 !important;
- }
- .deep-orange-text.text-lighten-2 {
- color: #ff8a65 !important;
- }
- .deep-orange-waves.waves-lighten-2 .waves-ripple {
- background-color: #ff8a65 !important;
- }
- .deep-orange.lighten-1 {
- background-color: #ff7043 !important;
- }
- .deep-orange-text.text-lighten-1 {
- color: #ff7043 !important;
- }
- .deep-orange-waves.waves-lighten-1 .waves-ripple {
- background-color: #ff7043 !important;
- }
- .deep-orange.darken-1 {
- background-color: #f4511e !important;
- }
- .deep-orange-text.text-darken-1 {
- color: #f4511e !important;
- }
- .deep-orange-waves.waves-darken-1 .waves-ripple {
- background-color: #f4511e !important;
- }
- .deep-orange.darken-2 {
- background-color: #e64a19 !important;
- }
- .deep-orange-text.text-darken-2 {
- color: #e64a19 !important;
- }
- .deep-orange-waves.waves-darken-2 .waves-ripple {
- background-color: #e64a19 !important;
- }
- .deep-orange.darken-3 {
- background-color: #d84315 !important;
- }
- .deep-orange-text.text-darken-3 {
- color: #d84315 !important;
- }
- .deep-orange-waves.waves-darken-3 .waves-ripple {
- background-color: #d84315 !important;
- }
- .deep-orange.darken-4 {
- background-color: #bf360c !important;
- }
- .deep-orange-text.text-darken-4 {
- color: #bf360c !important;
- }
- .deep-orange-waves.waves-darken-4 .waves-ripple {
- background-color: #bf360c !important;
- }
- .deep-orange.accent-1 {
- background-color: #ff9e80 !important;
- }
- .deep-orange-text.text-accent-1 {
- color: #ff9e80 !important;
- }
- .deep-orange-waves.waves-accent-1 .waves-ripple {
- background-color: #ff9e80 !important;
- }
- .deep-orange.accent-2 {
- background-color: #ff6e40 !important;
- }
- .deep-orange-text.text-accent-2 {
- color: #ff6e40 !important;
- }
- .deep-orange-waves.waves-accent-2 .waves-ripple {
- background-color: #ff6e40 !important;
- }
- .deep-orange.accent-3 {
- background-color: #ff3d00 !important;
- }
- .deep-orange-text.text-accent-3 {
- color: #ff3d00 !important;
- }
- .deep-orange-waves.waves-accent-3 .waves-ripple {
- background-color: #ff3d00 !important;
- }
- .deep-orange.accent-4 {
- background-color: #dd2c00 !important;
- }
- .deep-orange-text.text-accent-4 {
- color: #dd2c00 !important;
- }
- .deep-orange-waves.waves-accent-4 .waves-ripple {
- background-color: #dd2c00 !important;
- }
- .brown {
- background-color: #795548 !important;
- }
- .brown-text {
- color: #795548 !important;
- }
- .brown-waves .waves-ripple {
- background-color: #795548 !important;
- }
- .brown.lighten-5 {
- background-color: #efebe9 !important;
- }
- .brown-text.text-lighten-5 {
- color: #efebe9 !important;
- }
- .brown-waves.waves-lighten-5 .waves-ripple {
- background-color: #efebe9 !important;
- }
- .brown.lighten-4 {
- background-color: #d7ccc8 !important;
- }
- .brown-text.text-lighten-4 {
- color: #d7ccc8 !important;
- }
- .brown-waves.waves-lighten-4 .waves-ripple {
- background-color: #d7ccc8 !important;
- }
- .brown.lighten-3 {
- background-color: #bcaaa4 !important;
- }
- .brown-text.text-lighten-3 {
- color: #bcaaa4 !important;
- }
- .brown-waves.waves-lighten-3 .waves-ripple {
- background-color: #bcaaa4 !important;
- }
- .brown.lighten-2 {
- background-color: #a1887f !important;
- }
- .brown-text.text-lighten-2 {
- color: #a1887f !important;
- }
- .brown-waves.waves-lighten-2 .waves-ripple {
- background-color: #a1887f !important;
- }
- .brown.lighten-1 {
- background-color: #8d6e63 !important;
- }
- .brown-text.text-lighten-1 {
- color: #8d6e63 !important;
- }
- .brown-waves.waves-lighten-1 .waves-ripple {
- background-color: #8d6e63 !important;
- }
- .brown.darken-1 {
- background-color: #6d4c41 !important;
- }
- .brown-text.text-darken-1 {
- color: #6d4c41 !important;
- }
- .brown-waves.waves-darken-1 .waves-ripple {
- background-color: #6d4c41 !important;
- }
- .brown.darken-2 {
- background-color: #5d4037 !important;
- }
- .brown-text.text-darken-2 {
- color: #5d4037 !important;
- }
- .brown-waves.waves-darken-2 .waves-ripple {
- background-color: #5d4037 !important;
- }
- .brown.darken-3 {
- background-color: #4e342e !important;
- }
- .brown-text.text-darken-3 {
- color: #4e342e !important;
- }
- .brown-waves.waves-darken-3 .waves-ripple {
- background-color: #4e342e !important;
- }
- .brown.darken-4 {
- background-color: #3e2723 !important;
- }
- .brown-text.text-darken-4 {
- color: #3e2723 !important;
- }
- .brown-waves.waves-darken-4 .waves-ripple {
- background-color: #3e2723 !important;
- }
- .blue-grey {
- background-color: #607d8b !important;
- }
- .blue-grey-text {
- color: #607d8b !important;
- }
- .blue-grey-waves .waves-ripple {
- background-color: #607d8b !important;
- }
- .blue-grey.lighten-5 {
- background-color: #eceff1 !important;
- }
- .blue-grey-text.text-lighten-5 {
- color: #eceff1 !important;
- }
- .blue-grey-waves.waves-lighten-5 .waves-ripple {
- background-color: #eceff1 !important;
- }
- .blue-grey.lighten-4 {
- background-color: #cfd8dc !important;
- }
- .blue-grey-text.text-lighten-4 {
- color: #cfd8dc !important;
- }
- .blue-grey-waves.waves-lighten-4 .waves-ripple {
- background-color: #cfd8dc !important;
- }
- .blue-grey.lighten-3 {
- background-color: #b0bec5 !important;
- }
- .blue-grey-text.text-lighten-3 {
- color: #b0bec5 !important;
- }
- .blue-grey-waves.waves-lighten-3 .waves-ripple {
- background-color: #b0bec5 !important;
- }
- .blue-grey.lighten-2 {
- background-color: #90a4ae !important;
- }
- .blue-grey-text.text-lighten-2 {
- color: #90a4ae !important;
- }
- .blue-grey-waves.waves-lighten-2 .waves-ripple {
- background-color: #90a4ae !important;
- }
- .blue-grey.lighten-1 {
- background-color: #78909c !important;
- }
- .blue-grey-text.text-lighten-1 {
- color: #78909c !important;
- }
- .blue-grey-waves.waves-lighten-1 .waves-ripple {
- background-color: #78909c !important;
- }
- .blue-grey.darken-1 {
- background-color: #546e7a !important;
- }
- .blue-grey-text.text-darken-1 {
- color: #546e7a !important;
- }
- .blue-grey-waves.waves-darken-1 .waves-ripple {
- background-color: #546e7a !important;
- }
- .blue-grey.darken-2 {
- background-color: #455a64 !important;
- }
- .blue-grey-text.text-darken-2 {
- color: #455a64 !important;
- }
- .blue-grey-waves.waves-darken-2 .waves-ripple {
- background-color: #455a64 !important;
- }
- .blue-grey.darken-3 {
- background-color: #37474f !important;
- }
- .blue-grey-text.text-darken-3 {
- color: #37474f !important;
- }
- .blue-grey-waves.waves-darken-3 .waves-ripple {
- background-color: #37474f !important;
- }
- .blue-grey.darken-4 {
- background-color: #263238 !important;
- }
- .blue-grey-text.text-darken-4 {
- color: #263238 !important;
- }
- .blue-grey-waves.waves-darken-4 .waves-ripple {
- background-color: #263238 !important;
- }
- .grey {
- background-color: #9e9e9e !important;
- }
- .grey-text {
- color: #9e9e9e !important;
- }
- .grey-waves .waves-ripple {
- background-color: #9e9e9e !important;
- }
- .grey.lighten-5 {
- background-color: #fafafa !important;
- }
- .grey-text.text-lighten-5 {
- color: #fafafa !important;
- }
- .grey-waves.waves-lighten-5 .waves-ripple {
- background-color: #fafafa !important;
- }
- .grey.lighten-4 {
- background-color: #f5f5f5 !important;
- }
- .grey-text.text-lighten-4 {
- color: #f5f5f5 !important;
- }
- .grey-waves.waves-lighten-4 .waves-ripple {
- background-color: #f5f5f5 !important;
- }
- .grey.lighten-3 {
- background-color: #eeeeee !important;
- }
- .grey-text.text-lighten-3 {
- color: #eeeeee !important;
- }
- .grey-waves.waves-lighten-3 .waves-ripple {
- background-color: #eeeeee !important;
- }
- .grey.lighten-2 {
- background-color: #e0e0e0 !important;
- }
- .grey-text.text-lighten-2 {
- color: #e0e0e0 !important;
- }
- .grey-waves.waves-lighten-2 .waves-ripple {
- background-color: #e0e0e0 !important;
- }
- .grey.lighten-1 {
- background-color: #bdbdbd !important;
- }
- .grey-text.text-lighten-1 {
- color: #bdbdbd !important;
- }
- .grey-waves.waves-lighten-1 .waves-ripple {
- background-color: #bdbdbd !important;
- }
- .grey.darken-1 {
- background-color: #757575 !important;
- }
- .grey-text.text-darken-1 {
- color: #757575 !important;
- }
- .grey-waves.waves-darken-1 .waves-ripple {
- background-color: #757575 !important;
- }
- .grey.darken-2 {
- background-color: #616161 !important;
- }
- .grey-text.text-darken-2 {
- color: #616161 !important;
- }
- .grey-waves.waves-darken-2 .waves-ripple {
- background-color: #616161 !important;
- }
- .grey.darken-3 {
- background-color: #424242 !important;
- }
- .grey-text.text-darken-3 {
- color: #424242 !important;
- }
- .grey-waves.waves-darken-3 .waves-ripple {
- background-color: #424242 !important;
- }
- .grey.darken-4 {
- background-color: #212121 !important;
- }
- .grey-text.text-darken-4 {
- color: #212121 !important;
- }
- .grey-waves.waves-darken-4 .waves-ripple {
- background-color: #212121 !important;
- }
- .black {
- background-color: #000000 !important;
- }
- .black-text {
- color: #000000 !important;
- }
- .white {
- background-color: #ffffff !important;
- }
- .white-text {
- color: #ffffff !important;
- }
- .transparent {
- background-color: transparent !important;
- }
- .transparent-text {
- color: transparent !important;
- }
- /**
- * prism.js Twilight theme
- * Based (more or less) on the Twilight theme originally of Textmate fame.
- * @author Remy Bach
- */
- code[class*=language-],
- pre[class*=language-] {
- color: white;
- background: none;
- font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
- text-align: left;
- text-shadow: 0 -0.1em 0.2em black;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- line-height: 1.5;
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
- hyphens: none;
- }
- pre[class*=language-],
- :not(pre) > code[class*=language-] {
- background: hsl(0, 0%, 8%); /* #141414 */
- }
- /* Code blocks */
- pre[class*=language-] {
- border-radius: 0.5em;
- border: 0.3em solid hsl(0, 0%, 33%); /* #282A2B */
- box-shadow: 1px 1px 0.5em black inset;
- margin: 0.5em 0;
- overflow: auto;
- padding: 1em;
- }
- pre[class*=language-]::-moz-selection {
- /* Firefox */
- background: hsl(200, 4%, 16%); /* #282A2B */
- }
- pre[class*=language-]::selection {
- /* Safari */
- background: hsl(200, 4%, 16%); /* #282A2B */
- }
- /* Text Selection colour */
- pre[class*=language-]::-moz-selection, pre[class*=language-] ::-moz-selection,
- code[class*=language-]::-moz-selection, code[class*=language-] ::-moz-selection {
- text-shadow: none;
- background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */
- }
- pre[class*=language-]::selection, pre[class*=language-] ::selection,
- code[class*=language-]::selection, code[class*=language-] ::selection {
- text-shadow: none;
- background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */
- }
- /* Inline code */
- :not(pre) > code[class*=language-] {
- border-radius: 0.3em;
- border: 0.13em solid hsl(0, 0%, 33%); /* #545454 */
- box-shadow: 1px 1px 0.3em -0.1em black inset;
- padding: 0.15em 0.2em 0.05em;
- white-space: normal;
- }
- .token.comment,
- .token.prolog,
- .token.doctype,
- .token.cdata {
- color: hsl(0, 0%, 47%); /* #777777 */
- }
- .token.punctuation {
- opacity: 0.7;
- }
- .namespace {
- opacity: 0.7;
- }
- .token.tag,
- .token.boolean,
- .token.number,
- .token.deleted {
- color: hsl(14, 58%, 55%); /* #CF6A4C */
- }
- .token.keyword,
- .token.property,
- .token.selector,
- .token.constant,
- .token.symbol,
- .token.builtin {
- color: hsl(53, 89%, 79%); /* #F9EE98 */
- }
- .token.attr-name,
- .token.attr-value,
- .token.string,
- .token.char,
- .token.operator,
- .token.entity,
- .token.url,
- .language-css .token.string,
- .style .token.string,
- .token.variable,
- .token.inserted {
- color: hsl(76, 21%, 52%); /* #8F9D6A */
- }
- .token.atrule {
- color: hsl(218, 22%, 55%); /* #7587A6 */
- }
- .token.regex,
- .token.important {
- color: hsl(42, 75%, 65%); /* #E9C062 */
- }
- .token.important,
- .token.bold {
- font-weight: bold;
- }
- .token.italic {
- font-style: italic;
- }
- .token.entity {
- cursor: help;
- }
- pre[data-line] {
- padding: 1em 0 1em 3em;
- position: relative;
- }
- /* Markup */
- .language-markup .token.tag,
- .language-markup .token.attr-name,
- .language-markup .token.punctuation {
- color: hsl(33, 33%, 52%); /* #AC885B */
- }
- /* Make the tokens sit above the line highlight so the colours don't look faded. */
- .token {
- position: relative;
- z-index: 1;
- }
- .line-highlight {
- background: hsla(0, 0%, 33%, 0.25); /* #545454 */
- background: linear-gradient(to right, hsla(0, 0%, 33%, 0.1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */
- border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */
- border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */
- left: 0;
- line-height: inherit;
- margin-top: 0.75em; /* Same as .prism’s padding-top */
- padding: inherit 0;
- pointer-events: none;
- position: absolute;
- right: 0;
- white-space: pre;
- z-index: 0;
- }
- .line-highlight:before,
- .line-highlight[data-end]:after {
- background-color: hsl(215, 15%, 59%); /* #8794A6 */
- border-radius: 999px;
- box-shadow: 0 1px white;
- color: hsl(24, 20%, 95%); /* #F5F2F0 */
- content: attr(data-start);
- font: bold 65%/1.5 sans-serif;
- left: 0.6em;
- min-width: 1em;
- padding: 0 0.5em;
- position: absolute;
- text-align: center;
- text-shadow: none;
- top: 0.4em;
- vertical-align: 0.3em;
- }
- .line-highlight[data-end]:after {
- bottom: 0.4em;
- content: attr(data-end);
- top: auto;
- }
- .window {
- font-family: "Ubuntu", sans-serif;
- font-size: 17px;
- width: 600px;
- margin: 75px auto;
- background: #2c3e50;
- height: 350px;
- border-radius: 5px;
- display: relative;
- box-shadow: 10px 10px 10px #888888;
- }
- .afterclose {
- color: #34495e;
- display: none;
- text-align: center;
- }
- .open {
- color: #fff;
- padding: 15px;
- background: #2ecc71;
- border-radius: 4px;
- border: none;
- }
- .bash {
- width: 600px;
- background: #34495e;
- height: 310px;
- border-radius: 5px;
- top: 40px;
- display: absolute;
- color: #fff;
- text-align: left;
- }
- .bash .command::before {
- content: "user@machine \$ : ";
- color: #2ecc71;
- }
- .bash .resulta::before {
- content: ">>";
- color: #2ecc71;
- }
- /* effected by controllers */
- .windowmax {
- width: 100%;
- margin: auto;
- background: #2c3e50;
- height: 1000px;
- border-radius: 5px;
- display: relative;
- }
- .windowmin {
- width: 300px;
- height: 45px;
- background: #2c3e50;
- border-radius: 5px;
- bottom: 0;
- position: fixed;
- }
- .bashmax {
- display: absolute;
- width: 100%;
- background: #34495e;
- height: 960px;
- border-radius: 5px;
- bottom: 0;
- color: #fff;
- }
- /* !--end--! */
- .buttons {
- width: 15px;
- height: 15px;
- border-radius: 50%;
- float: right;
- margin: 13px 4px;
- border: none;
- }
- .close {
- background: #e74c3c;
- }
- .maximize {
- background: #f1c40f;
- }
- .minimize {
- background: #2ecc71;
- }
- .result {
- display: none;
- }
- .controls {
- height: 40px;
- top: 0;
- }
- .title {
- color: #fff;
- font-weight: bold;
- padding: 10px;
- }
- .material-tooltip {
- padding: 10px 8px;
- font-size: 1rem;
- z-index: 2000;
- border-radius: 2px;
- color: #fff;
- min-height: 36px;
- line-height: 120%;
- opacity: 0;
- position: absolute;
- text-align: center;
- max-width: calc(100% - 4px);
- overflow: hidden;
- left: 0;
- top: 0;
- pointer-events: none;
- visibility: hidden;
- background-color: #323232;
- }
- .backdrop {
- position: absolute;
- opacity: 0;
- height: 7px;
- width: 14px;
- border-radius: 0 0 50% 50%;
- background-color: #323232;
- z-index: -1;
- transform-origin: 50% 0%;
- visibility: hidden;
- }
- .shadow-0 {
- box-shadow: none !important;
- }
- /* 2dp elevation modified*/
- .shadow-1, nav, .dropdown-content, .card, .card-panel, .btn-floating, .btn, .btn-small, .btn-large, .collapsible {
- box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
- }
- .shadow-1-half, .btn-floating:hover, .btn:hover, .btn-small:hover, .btn-large:hover {
- box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);
- }
- /* 6dp elevation modified*/
- .shadow-2 {
- box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
- }
- /* 12dp elevation modified*/
- .shadow-3 {
- box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);
- }
- /* 16dp elevation */
- .shadow-4 {
- box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2);
- }
- /* 24dp elevation */
- .shadow-5, .modal {
- box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2);
- }
- /* 24dp elevation */
- .invert-shadow-5 {
- box-shadow: 38px 0 0 0 rgba(0, 0, 0, 0.14), 46px 0 0 0 rgba(0, 0, 0, 0.12), 15px 0 0 0 rgba(0, 0, 0, 0.2);
- }
- .hoverable {
- transition: box-shadow 0.25s;
- }
- .hoverable:hover {
- box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
- }
- /*!
- * Waves v0.6.0
- * http://fian.my.id/Waves
- *
- * Copyright 2014 Alfiana E. Sibuea and other contributors
- * Released under the MIT license
- * https://github.com/fians/Waves/blob/master/LICENSE
- */
- .waves-effect {
- position: relative;
- cursor: pointer;
- display: inline-block;
- overflow: hidden;
- user-select: none;
- -webkit-tap-highlight-color: transparent;
- vertical-align: middle;
- z-index: 1;
- transition: 0.3s ease-out;
- }
- .waves-effect .waves-ripple {
- position: absolute;
- border-radius: 50%;
- width: 20px;
- height: 20px;
- margin-top: -10px;
- margin-left: -10px;
- opacity: 0;
- background: rgba(0, 0, 0, 0.2);
- transition: all 0.7s ease-out;
- transition-property: transform, opacity;
- transform: scale(0);
- pointer-events: none;
- }
- .waves-effect.waves-light .waves-ripple {
- background-color: rgba(255, 255, 255, 0.45);
- }
- .waves-effect.waves-red .waves-ripple {
- background-color: rgba(244, 67, 54, 0.7);
- }
- .waves-effect.waves-yellow .waves-ripple {
- background-color: rgba(255, 235, 59, 0.7);
- }
- .waves-effect.waves-orange .waves-ripple {
- background-color: rgba(255, 152, 0, 0.7);
- }
- .waves-effect.waves-purple .waves-ripple {
- background-color: rgba(156, 39, 176, 0.7);
- }
- .waves-effect.waves-green .waves-ripple {
- background-color: rgba(76, 175, 80, 0.7);
- }
- .waves-effect.waves-teal .waves-ripple {
- background-color: rgba(0, 150, 136, 0.7);
- }
- .waves-effect input[type=button], .waves-effect input[type=reset], .waves-effect input[type=submit] {
- border: 0;
- font-style: normal;
- font-size: inherit;
- text-transform: inherit;
- background: none;
- }
- .waves-effect img {
- position: relative;
- z-index: -1;
- }
- .waves-notransition {
- transition: none !important;
- }
- .waves-circle {
- transform: translateZ(0);
- -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);
- }
- .waves-input-wrapper {
- border-radius: 0.2em;
- vertical-align: bottom;
- }
- .waves-input-wrapper .waves-button-input {
- position: relative;
- top: 0;
- left: 0;
- z-index: 1;
- }
- .waves-circle {
- text-align: center;
- width: 2.5em;
- height: 2.5em;
- line-height: 2.5em;
- border-radius: 50%;
- -webkit-mask-image: none;
- }
- .waves-block {
- display: block;
- }
- /* Firefox Bug: link not triggered */
- .waves-effect .waves-ripple {
- z-index: -1;
- }
- .modal {
- position: fixed;
- left: 0;
- right: 0;
- background-color: #fafafa;
- padding: 0;
- max-height: 70%;
- width: 55%;
- margin: auto;
- overflow-y: auto;
- border-radius: 2px;
- will-change: top, opacity;
- }
- .modal:focus {
- outline: none;
- }
- @media only screen and (max-width : 992px) {
- .modal {
- width: 80%;
- }
- }
- .modal h1, .modal h2, .modal h3, .modal h4 {
- margin-top: 0;
- }
- .modal .modal-content {
- padding: 24px;
- }
- .modal .modal-close {
- cursor: pointer;
- }
- .modal .modal-footer {
- border-radius: 0 0 2px 2px;
- background-color: #fafafa;
- padding: 4px 6px;
- height: 56px;
- width: 100%;
- text-align: right;
- }
- .modal .modal-footer .btn, .modal .modal-footer .btn-small, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat {
- margin: 6px 0;
- }
- .modal .modal-header {
- border-radius: 2px 2px 0 0;
- background-color: #fafafa;
- padding: 6px 4px;
- height: 56px;
- width: 100%;
- text-align: right;
- }
- .modal .modal-header .btn, .modal .modal-header .btn-small, .modal .modal-header .btn-large, .modal .modal-header .btn-flat {
- margin: 6px 0;
- }
- .modal-overlay {
- position: fixed;
- z-index: 999;
- top: -25%;
- left: 0;
- bottom: 0;
- right: 0;
- height: 125%;
- width: 100%;
- background: #000;
- display: none;
- will-change: opacity;
- }
- .modal.modal-fixed-footer {
- padding: 0;
- height: 70%;
- }
- .modal.modal-fixed-footer .modal-content {
- position: absolute;
- height: calc(100% - 56px);
- max-height: 100%;
- width: 100%;
- overflow-y: auto;
- }
- .modal.modal-fixed-footer .modal-footer {
- border-top: 1px solid rgba(0, 0, 0, 0.1);
- position: absolute;
- bottom: 0;
- }
- .modal.bottom-sheet {
- top: auto;
- bottom: -100%;
- margin: 0;
- width: 100%;
- max-height: 45%;
- border-radius: 0;
- will-change: bottom, opacity;
- }
- html,
- body,
- #root {
- margin: 0;
- height: 100%;
- }
- * {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- }
- .noselect {
- -webkit-touch-callout: none; /* iOS Safari */
- -webkit-user-select: none; /* Safari */
- -khtml-user-select: none; /* Konqueror HTML */
- -moz-user-select: none; /* Old versions of Firefox */
- -ms-user-select: none; /* Internet Explorer/Edge */
- user-select: none;
- /* Non-prefixed version, currently
- supported by Chrome, Edge, Opera and Firefox */
- }
- ul:not(.browser-default) {
- padding-left: 0;
- list-style-type: none;
- }
- ul:not(.browser-default) > li {
- list-style-type: none;
- }
- a {
- color: #039be5;
- text-decoration: none;
- -webkit-tap-highlight-color: transparent;
- }
- .w-100 {
- width: 100%;
- }
- .right-align {
- text-align: right;
- }
- .center-align {
- text-align: center;
- }
- .v-center {
- display: flex;
- align-items: center;
- }
- .mb1 {
- margin-bottom: 10px;
- }
- .collection {
- margin: 0.3333333333rem 0 0.6666666667rem 0;
- border: 1px solid #e0e0e0;
- border-radius: 2px;
- overflow: hidden;
- position: relative;
- }
- .collection .collection-item {
- background-color: #fff;
- line-height: 1.5rem;
- padding: 10px 20px;
- margin: 0;
- border-bottom: 1px solid #e0e0e0;
- }
- .collection .collection-item.hover:hover {
- background-color: #ddd;
- }
- .collection .collection-item.avatar {
- min-height: 84px;
- padding-left: 72px;
- position: relative;
- }
- .collection .collection-item.avatar:not(.circle-clipper) > .circle,
- .collection .collection-item.avatar :not(.circle-clipper) > .circle {
- position: absolute;
- width: 42px;
- height: 42px;
- overflow: hidden;
- left: 15px;
- display: inline-block;
- vertical-align: middle;
- }
- .collection .collection-item.avatar i.circle {
- font-size: 18px;
- line-height: 42px;
- color: #fff;
- background-color: #999;
- text-align: center;
- }
- .collection .collection-item.avatar .title {
- font-size: 16px;
- }
- .collection .collection-item.avatar p {
- margin: 0;
- }
- .collection .collection-item.avatar .secondary-content {
- position: absolute;
- top: 16px;
- right: 16px;
- }
- .collection .collection-item:last-child {
- border-bottom: none;
- }
- .collection .collection-item.active {
- background-color: #26a69a;
- color: #eafaf9;
- }
- .collection .collection-item.active .secondary-content {
- color: #fff;
- }
- .collection a.collection-item {
- display: block;
- transition: 0.25s;
- color: #26a69a;
- }
- .collection a.collection-item:not(.active):hover {
- background-color: #ddd;
- }
- .collection.with-header .collection-header {
- background-color: #fff;
- border-bottom: 1px solid #e0e0e0;
- padding: 10px 20px;
- }
- .collection.with-header .collection-item {
- padding-left: 30px;
- }
- .collection.with-header .collection-item.avatar {
- padding-left: 72px;
- }
- .secondary-content {
- float: right;
- color: #26a69a;
- }
- .collapsible .collection {
- margin: 0;
- border: none;
- }
- .modal-overlay {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- height: 100vh;
- width: 100vw;
- padding: 20px 0 20px 0;
- background-color: rgba(0, 0, 0, 0.5);
- z-index: 999;
- display: flex;
- justify-content: center;
- }
- .modal-overlay .innerform {
- max-width: 650px;
- }
- .modal-overlay .innerform form {
- overflow: hidden;
- }
- /*********************
- Media Query Classes
- **********************/
- @media only screen and (max-width : 600px) {
- .hide-on-small-only, .hide-on-small-and-down {
- display: none !important;
- }
- }
- @media only screen and (max-width : 992px) {
- .hide-on-med-and-down {
- display: none !important;
- }
- }
- @media only screen and (min-width : 601px) {
- .hide-on-med-and-up {
- display: none !important;
- }
- }
- @media only screen and (min-width: 600px) and (max-width: 992px) {
- .hide-on-med-only {
- display: none !important;
- }
- }
- @media only screen and (min-width : 993px) {
- .hide-on-large-only {
- display: none !important;
- }
- }
- @media only screen and (min-width : 1201px) {
- .hide-on-extra-large-only {
- display: none !important;
- }
- }
- @media only screen and (min-width : 1201px) {
- .show-on-extra-large {
- display: block !important;
- }
- }
- @media only screen and (min-width : 993px) {
- .show-on-large {
- display: block !important;
- }
- }
- @media only screen and (min-width: 600px) and (max-width: 992px) {
- .show-on-medium {
- display: block !important;
- }
- }
- @media only screen and (max-width : 600px) {
- .show-on-small {
- display: block !important;
- }
- }
- @media only screen and (min-width : 601px) {
- .show-on-medium-and-up {
- display: block !important;
- }
- }
- @media only screen and (max-width : 992px) {
- .show-on-medium-and-down {
- display: block !important;
- }
- }
- @media only screen and (max-width : 600px) {
- .center-on-small-only {
- text-align: center;
- }
- }
- /*******************
- Utility Classes
- *******************/
- .hide {
- display: none !important;
- }
- .left-align {
- text-align: left;
- }
- .right-align {
- text-align: right;
- }
- .center, .center-align {
- text-align: center;
- }
- .left {
- float: left !important;
- }
- .right {
- float: right !important;
- }
- .no-select {
- user-select: none;
- }
- .circle {
- border-radius: 50%;
- }
- .center-block {
- display: block;
- margin-left: auto;
- margin-right: auto;
- }
- .truncate {
- display: block;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- .no-padding {
- padding: 0 !important;
- }
- span.badge {
- min-width: 3rem;
- padding: 0 6px;
- margin-left: 14px;
- text-align: center;
- font-size: 1rem;
- line-height: 22px;
- height: 22px;
- color: #757575;
- float: right;
- box-sizing: border-box;
- }
- span.badge.new {
- font-weight: 300;
- font-size: 0.8rem;
- color: #fff;
- background-color: #26a69a;
- border-radius: 2px;
- }
- span.badge.new:after {
- content: " new";
- }
- span.badge[data-badge-caption]::after {
- content: " " attr(data-badge-caption);
- }
- nav ul a span.badge {
- display: inline-block;
- float: none;
- margin-left: 4px;
- line-height: 22px;
- height: 22px;
- -webkit-font-smoothing: auto;
- }
- .collection-item span.badge {
- margin-top: calc(0.75rem - 11px);
- }
- .collapsible span.badge {
- margin-left: auto;
- }
- .sidenav span.badge {
- margin-top: 11.5px;
- }
- table span.badge {
- display: inline-block;
- float: none;
- margin-left: auto;
- }
- .chip {
- display: inline-block;
- height: 32px;
- font-size: 13px;
- font-weight: 500;
- color: rgba(0, 0, 0, 0.6);
- line-height: 32px;
- padding: 0 12px;
- border-radius: 16px;
- background-color: #e4e4e4;
- margin-bottom: 5px;
- margin-right: 5px;
- }
- .chip:focus {
- outline: none;
- background-color: #26a69a;
- color: #fff;
- }
- .chip > img {
- float: left;
- margin: 0 8px 0 -12px;
- height: 32px;
- width: 32px;
- border-radius: 50%;
- }
- .chip .close {
- cursor: pointer;
- float: right;
- font-size: 16px;
- line-height: 32px;
- padding-left: 8px;
- }
- .chips {
- border: none;
- border-bottom: 1px solid #9e9e9e;
- box-shadow: none;
- margin: 0 0 8px 0;
- min-height: 45px;
- outline: none;
- transition: all 0.3s;
- }
- .chips.focus {
- border-bottom: 1px solid #26a69a;
- box-shadow: 0 1px 0 0 #26a69a;
- }
- .chips:hover {
- cursor: text;
- }
- .chips .input {
- background: none;
- border: 0;
- color: rgba(0, 0, 0, 0.6);
- display: inline-block;
- font-size: 16px;
- height: 56px;
- line-height: 32px;
- outline: 0;
- margin: 0;
- padding: 0 !important;
- width: 120px !important;
- }
- .chips .input:focus {
- border: 0 !important;
- box-shadow: none !important;
- }
- .chips .autocomplete-content {
- margin-top: 0;
- margin-bottom: 0;
- }
- .prefix ~ .chips {
- margin-left: 3rem;
- width: 92%;
- width: calc(100% - 3rem);
- }
- .chips:empty ~ label {
- font-size: 0.8rem;
- transform: translateY(-140%);
- }
- .collapsible {
- border-top: 1px solid #ddd;
- border-right: 1px solid #ddd;
- border-left: 1px solid #ddd;
- margin: 0.3333333333rem 0 0.6666666667rem 0;
- }
- .collapsible-header {
- display: flex;
- cursor: pointer;
- -webkit-tap-highlight-color: transparent;
- line-height: 1.5;
- padding: 1rem;
- background-color: #fff;
- border-bottom: 1px solid #ddd;
- }
- .collapsible-header:focus {
- outline: 0;
- }
- .collapsible-header i {
- width: 2rem;
- font-size: 1.6rem;
- display: inline-block;
- text-align: center;
- margin-right: 1rem;
- }
- .keyboard-focused .collapsible-header:focus {
- background-color: #eee;
- }
- .collapsible-body {
- display: none;
- border-bottom: 1px solid #ddd;
- box-sizing: border-box;
- padding: 2rem;
- }
- .sidenav .collapsible,
- .sidenav.fixed .collapsible {
- border: none;
- box-shadow: none;
- }
- .sidenav .collapsible li,
- .sidenav.fixed .collapsible li {
- padding: 0;
- }
- .sidenav .collapsible-header,
- .sidenav.fixed .collapsible-header {
- background-color: transparent;
- border: none;
- line-height: inherit;
- height: inherit;
- padding: 0 15px;
- }
- .sidenav .collapsible-header:hover,
- .sidenav.fixed .collapsible-header:hover {
- background-color: rgba(0, 0, 0, 0.05);
- }
- .sidenav .collapsible-header i,
- .sidenav.fixed .collapsible-header i {
- line-height: inherit;
- }
- .sidenav .collapsible-body,
- .sidenav.fixed .collapsible-body {
- border: 0;
- background-color: #fff;
- }
- .sidenav .collapsible-body li a,
- .sidenav.fixed .collapsible-body li a {
- padding: 0 22.5px 0 30px;
- }
- .collapsible.popout {
- border: none;
- box-shadow: none;
- }
- .collapsible.popout > li {
- box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
- margin: 0 24px;
- transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- }
- .collapsible.popout > li.active {
- box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
- margin: 16px 0;
- }
- .collection {
- margin: 0.3333333333rem 0 0.6666666667rem 0;
- border: 1px solid #e0e0e0;
- border-radius: 2px;
- overflow: hidden;
- position: relative;
- }
- .collection .collection-item {
- background-color: #fff;
- line-height: 1.5rem;
- padding: 10px 20px;
- margin: 0;
- border-bottom: 1px solid #e0e0e0;
- }
- .collection .collection-item.avatar {
- min-height: 84px;
- padding-left: 72px;
- position: relative;
- }
- .collection .collection-item.avatar:not(.circle-clipper) > .circle,
- .collection .collection-item.avatar :not(.circle-clipper) > .circle {
- position: absolute;
- width: 42px;
- height: 42px;
- overflow: hidden;
- left: 15px;
- display: inline-block;
- vertical-align: middle;
- }
- .collection .collection-item.avatar i.circle {
- font-size: 18px;
- line-height: 42px;
- color: #fff;
- background-color: #999;
- text-align: center;
- }
- .collection .collection-item.avatar .title {
- font-size: 16px;
- }
- .collection .collection-item.avatar p {
- margin: 0;
- }
- .collection .collection-item.avatar .secondary-content {
- position: absolute;
- top: 16px;
- right: 16px;
- }
- .collection .collection-item:last-child {
- border-bottom: none;
- }
- .collection .collection-item.active {
- background-color: #26a69a;
- color: #eafaf9;
- }
- .collection .collection-item.active .secondary-content {
- color: #fff;
- }
- .collection a.collection-item {
- display: block;
- transition: 0.25s;
- color: #26a69a;
- }
- .collection a.collection-item:not(.active):hover {
- background-color: #ddd;
- }
- .collection.with-header .collection-header {
- background-color: #fff;
- border-bottom: 1px solid #e0e0e0;
- padding: 10px 20px;
- }
- .collection.with-header .collection-item {
- padding-left: 30px;
- }
- .collection.with-header .collection-item.avatar {
- padding-left: 72px;
- }
- .collection .secondary-content {
- float: right;
- color: #26a69a;
- }
- select:focus {
- outline: 1px solid #c9f3ef;
- }
- button:focus {
- outline: none;
- background-color: #2ab7a9;
- }
- label {
- font-size: 0.8rem;
- color: #9e9e9e;
- }
- /* Text Inputs + Textarea
- ========================================================================== */
- /* Style Placeholders */
- ::placeholder {
- color: #d1d1d1;
- }
- /* Text inputs */
- input:not([type]),
- input[type=text]:not(.browser-default),
- input[type=password]:not(.browser-default),
- input[type=email]:not(.browser-default),
- input[type=url]:not(.browser-default),
- input[type=time]:not(.browser-default),
- input[type=date]:not(.browser-default),
- input[type=datetime]:not(.browser-default),
- input[type=datetime-local]:not(.browser-default),
- input[type=tel]:not(.browser-default),
- input[type=number]:not(.browser-default),
- input[type=search]:not(.browser-default),
- textarea.textarea {
- background-color: transparent;
- border: none;
- border-bottom: 1px solid #9e9e9e;
- border-radius: 0;
- outline: none;
- height: 56px;
- width: 100%;
- font-size: 16px;
- margin: 0 0 8px 0;
- padding: 0;
- box-shadow: none;
- box-sizing: content-box;
- transition: box-shadow 0.3s, border 0.3s;
- }
- input:not([type]):disabled, input:not([type])[readonly=readonly],
- input[type=text]:not(.browser-default):disabled,
- input[type=text]:not(.browser-default)[readonly=readonly],
- input[type=password]:not(.browser-default):disabled,
- input[type=password]:not(.browser-default)[readonly=readonly],
- input[type=email]:not(.browser-default):disabled,
- input[type=email]:not(.browser-default)[readonly=readonly],
- input[type=url]:not(.browser-default):disabled,
- input[type=url]:not(.browser-default)[readonly=readonly],
- input[type=time]:not(.browser-default):disabled,
- input[type=time]:not(.browser-default)[readonly=readonly],
- input[type=date]:not(.browser-default):disabled,
- input[type=date]:not(.browser-default)[readonly=readonly],
- input[type=datetime]:not(.browser-default):disabled,
- input[type=datetime]:not(.browser-default)[readonly=readonly],
- input[type=datetime-local]:not(.browser-default):disabled,
- input[type=datetime-local]:not(.browser-default)[readonly=readonly],
- input[type=tel]:not(.browser-default):disabled,
- input[type=tel]:not(.browser-default)[readonly=readonly],
- input[type=number]:not(.browser-default):disabled,
- input[type=number]:not(.browser-default)[readonly=readonly],
- input[type=search]:not(.browser-default):disabled,
- input[type=search]:not(.browser-default)[readonly=readonly],
- textarea.textarea:disabled,
- textarea.textarea[readonly=readonly] {
- color: rgba(0, 0, 0, 0.42);
- border-bottom: 1px dotted rgba(0, 0, 0, 0.42);
- }
- input:not([type]):disabled + label, input:not([type])[readonly=readonly] + label,
- input[type=text]:not(.browser-default):disabled + label,
- input[type=text]:not(.browser-default)[readonly=readonly] + label,
- input[type=password]:not(.browser-default):disabled + label,
- input[type=password]:not(.browser-default)[readonly=readonly] + label,
- input[type=email]:not(.browser-default):disabled + label,
- input[type=email]:not(.browser-default)[readonly=readonly] + label,
- input[type=url]:not(.browser-default):disabled + label,
- input[type=url]:not(.browser-default)[readonly=readonly] + label,
- input[type=time]:not(.browser-default):disabled + label,
- input[type=time]:not(.browser-default)[readonly=readonly] + label,
- input[type=date]:not(.browser-default):disabled + label,
- input[type=date]:not(.browser-default)[readonly=readonly] + label,
- input[type=datetime]:not(.browser-default):disabled + label,
- input[type=datetime]:not(.browser-default)[readonly=readonly] + label,
- input[type=datetime-local]:not(.browser-default):disabled + label,
- input[type=datetime-local]:not(.browser-default)[readonly=readonly] + label,
- input[type=tel]:not(.browser-default):disabled + label,
- input[type=tel]:not(.browser-default)[readonly=readonly] + label,
- input[type=number]:not(.browser-default):disabled + label,
- input[type=number]:not(.browser-default)[readonly=readonly] + label,
- input[type=search]:not(.browser-default):disabled + label,
- input[type=search]:not(.browser-default)[readonly=readonly] + label,
- textarea.textarea:disabled + label,
- textarea.textarea[readonly=readonly] + label {
- color: rgba(0, 0, 0, 0.42);
- }
- input:not([type]):focus:not([readonly]),
- input[type=text]:not(.browser-default):focus:not([readonly]),
- input[type=password]:not(.browser-default):focus:not([readonly]),
- input[type=email]:not(.browser-default):focus:not([readonly]),
- input[type=url]:not(.browser-default):focus:not([readonly]),
- input[type=time]:not(.browser-default):focus:not([readonly]),
- input[type=date]:not(.browser-default):focus:not([readonly]),
- input[type=datetime]:not(.browser-default):focus:not([readonly]),
- input[type=datetime-local]:not(.browser-default):focus:not([readonly]),
- input[type=tel]:not(.browser-default):focus:not([readonly]),
- input[type=number]:not(.browser-default):focus:not([readonly]),
- input[type=search]:not(.browser-default):focus:not([readonly]),
- textarea.textarea:focus:not([readonly]) {
- border-bottom: 1px solid #26a69a;
- box-shadow: 0 1px 0 0 #26a69a;
- }
- input:not([type]):focus:not([readonly]) + label,
- input[type=text]:not(.browser-default):focus:not([readonly]) + label,
- input[type=password]:not(.browser-default):focus:not([readonly]) + label,
- input[type=email]:not(.browser-default):focus:not([readonly]) + label,
- input[type=url]:not(.browser-default):focus:not([readonly]) + label,
- input[type=time]:not(.browser-default):focus:not([readonly]) + label,
- input[type=date]:not(.browser-default):focus:not([readonly]) + label,
- input[type=datetime]:not(.browser-default):focus:not([readonly]) + label,
- input[type=datetime-local]:not(.browser-default):focus:not([readonly]) + label,
- input[type=tel]:not(.browser-default):focus:not([readonly]) + label,
- input[type=number]:not(.browser-default):focus:not([readonly]) + label,
- input[type=search]:not(.browser-default):focus:not([readonly]) + label,
- textarea.textarea:focus:not([readonly]) + label {
- color: #26a69a;
- }
- input:not([type]):focus.valid ~ label,
- input[type=text]:not(.browser-default):focus.valid ~ label,
- input[type=password]:not(.browser-default):focus.valid ~ label,
- input[type=email]:not(.browser-default):focus.valid ~ label,
- input[type=url]:not(.browser-default):focus.valid ~ label,
- input[type=time]:not(.browser-default):focus.valid ~ label,
- input[type=date]:not(.browser-default):focus.valid ~ label,
- input[type=datetime]:not(.browser-default):focus.valid ~ label,
- input[type=datetime-local]:not(.browser-default):focus.valid ~ label,
- input[type=tel]:not(.browser-default):focus.valid ~ label,
- input[type=number]:not(.browser-default):focus.valid ~ label,
- input[type=search]:not(.browser-default):focus.valid ~ label,
- textarea.textarea:focus.valid ~ label {
- color: #4caf50;
- }
- input:not([type]):focus.invalid ~ label,
- input[type=text]:not(.browser-default):focus.invalid ~ label,
- input[type=password]:not(.browser-default):focus.invalid ~ label,
- input[type=email]:not(.browser-default):focus.invalid ~ label,
- input[type=url]:not(.browser-default):focus.invalid ~ label,
- input[type=time]:not(.browser-default):focus.invalid ~ label,
- input[type=date]:not(.browser-default):focus.invalid ~ label,
- input[type=datetime]:not(.browser-default):focus.invalid ~ label,
- input[type=datetime-local]:not(.browser-default):focus.invalid ~ label,
- input[type=tel]:not(.browser-default):focus.invalid ~ label,
- input[type=number]:not(.browser-default):focus.invalid ~ label,
- input[type=search]:not(.browser-default):focus.invalid ~ label,
- textarea.textarea:focus.invalid ~ label {
- color: #f44336;
- }
- input:not([type]).validate + label,
- input[type=text]:not(.browser-default).validate + label,
- input[type=password]:not(.browser-default).validate + label,
- input[type=email]:not(.browser-default).validate + label,
- input[type=url]:not(.browser-default).validate + label,
- input[type=time]:not(.browser-default).validate + label,
- input[type=date]:not(.browser-default).validate + label,
- input[type=datetime]:not(.browser-default).validate + label,
- input[type=datetime-local]:not(.browser-default).validate + label,
- input[type=tel]:not(.browser-default).validate + label,
- input[type=number]:not(.browser-default).validate + label,
- input[type=search]:not(.browser-default).validate + label,
- textarea.textarea.validate + label {
- width: 100%;
- }
- /* Validation Sass Placeholders */
- .select-wrapper.valid > input.select-dropdown, input:not([type]).valid, input:not([type]):focus.valid,
- input[type=text]:not(.browser-default).valid,
- input[type=text]:not(.browser-default):focus.valid,
- input[type=password]:not(.browser-default).valid,
- input[type=password]:not(.browser-default):focus.valid,
- input[type=email]:not(.browser-default).valid,
- input[type=email]:not(.browser-default):focus.valid,
- input[type=url]:not(.browser-default).valid,
- input[type=url]:not(.browser-default):focus.valid,
- input[type=time]:not(.browser-default).valid,
- input[type=time]:not(.browser-default):focus.valid,
- input[type=date]:not(.browser-default).valid,
- input[type=date]:not(.browser-default):focus.valid,
- input[type=datetime]:not(.browser-default).valid,
- input[type=datetime]:not(.browser-default):focus.valid,
- input[type=datetime-local]:not(.browser-default).valid,
- input[type=datetime-local]:not(.browser-default):focus.valid,
- input[type=tel]:not(.browser-default).valid,
- input[type=tel]:not(.browser-default):focus.valid,
- input[type=number]:not(.browser-default).valid,
- input[type=number]:not(.browser-default):focus.valid,
- input[type=search]:not(.browser-default).valid,
- input[type=search]:not(.browser-default):focus.valid,
- textarea.textarea.valid,
- textarea.textarea:focus.valid {
- border-bottom: 1px solid #4caf50;
- box-shadow: 0 1px 0 0 #4caf50;
- }
- .select-wrapper.invalid > input.select-dropdown, .select-wrapper.invalid > input.select-dropdown:focus, input:not([type]).invalid, input:not([type]):focus.invalid,
- input[type=text]:not(.browser-default).invalid,
- input[type=text]:not(.browser-default):focus.invalid,
- input[type=password]:not(.browser-default).invalid,
- input[type=password]:not(.browser-default):focus.invalid,
- input[type=email]:not(.browser-default).invalid,
- input[type=email]:not(.browser-default):focus.invalid,
- input[type=url]:not(.browser-default).invalid,
- input[type=url]:not(.browser-default):focus.invalid,
- input[type=time]:not(.browser-default).invalid,
- input[type=time]:not(.browser-default):focus.invalid,
- input[type=date]:not(.browser-default).invalid,
- input[type=date]:not(.browser-default):focus.invalid,
- input[type=datetime]:not(.browser-default).invalid,
- input[type=datetime]:not(.browser-default):focus.invalid,
- input[type=datetime-local]:not(.browser-default).invalid,
- input[type=datetime-local]:not(.browser-default):focus.invalid,
- input[type=tel]:not(.browser-default).invalid,
- input[type=tel]:not(.browser-default):focus.invalid,
- input[type=number]:not(.browser-default).invalid,
- input[type=number]:not(.browser-default):focus.invalid,
- input[type=search]:not(.browser-default).invalid,
- input[type=search]:not(.browser-default):focus.invalid,
- textarea.textarea.invalid,
- textarea.textarea:focus.invalid {
- border-bottom: 1px solid #f44336;
- box-shadow: 0 1px 0 0 #f44336;
- }
- .select-wrapper.valid .helper-text[data-success], .select-wrapper.invalid ~ .helper-text[data-error], input:not([type]).valid ~ .helper-text[data-success], input:not([type]):focus.valid ~ .helper-text[data-success], input:not([type]).invalid ~ .helper-text[data-error], input:not([type]):focus.invalid ~ .helper-text[data-error],
- input[type=text]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=text]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=text]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=text]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=password]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=password]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=password]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=password]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=email]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=email]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=email]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=email]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=url]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=url]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=url]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=url]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=time]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=time]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=time]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=time]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=date]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=date]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=date]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=date]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=datetime]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=datetime]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=datetime-local]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=tel]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=tel]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=tel]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=number]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=number]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=number]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=number]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- input[type=search]:not(.browser-default).valid ~ .helper-text[data-success],
- input[type=search]:not(.browser-default):focus.valid ~ .helper-text[data-success],
- input[type=search]:not(.browser-default).invalid ~ .helper-text[data-error],
- input[type=search]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
- textarea.textarea.valid ~ .helper-text[data-success],
- textarea.textarea:focus.valid ~ .helper-text[data-success],
- textarea.textarea.invalid ~ .helper-text[data-error],
- textarea.textarea:focus.invalid ~ .helper-text[data-error] {
- color: transparent;
- user-select: none;
- pointer-events: none;
- }
- .select-wrapper.valid ~ .helper-text:after, input:not([type]).valid ~ .helper-text:after, input:not([type]):focus.valid ~ .helper-text:after,
- input[type=text]:not(.browser-default).valid ~ .helper-text:after,
- input[type=text]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=password]:not(.browser-default).valid ~ .helper-text:after,
- input[type=password]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=email]:not(.browser-default).valid ~ .helper-text:after,
- input[type=email]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=url]:not(.browser-default).valid ~ .helper-text:after,
- input[type=url]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=time]:not(.browser-default).valid ~ .helper-text:after,
- input[type=time]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=date]:not(.browser-default).valid ~ .helper-text:after,
- input[type=date]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=datetime]:not(.browser-default).valid ~ .helper-text:after,
- input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=datetime-local]:not(.browser-default).valid ~ .helper-text:after,
- input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=tel]:not(.browser-default).valid ~ .helper-text:after,
- input[type=tel]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=number]:not(.browser-default).valid ~ .helper-text:after,
- input[type=number]:not(.browser-default):focus.valid ~ .helper-text:after,
- input[type=search]:not(.browser-default).valid ~ .helper-text:after,
- input[type=search]:not(.browser-default):focus.valid ~ .helper-text:after,
- textarea.textarea.valid ~ .helper-text:after,
- textarea.textarea:focus.valid ~ .helper-text:after {
- content: attr(data-success);
- color: #4caf50;
- }
- .select-wrapper.invalid ~ .helper-text:after, input:not([type]).invalid ~ .helper-text:after, input:not([type]):focus.invalid ~ .helper-text:after,
- input[type=text]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=text]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=password]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=password]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=email]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=email]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=url]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=url]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=time]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=time]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=date]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=date]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=datetime]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=tel]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=number]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=number]:not(.browser-default):focus.invalid ~ .helper-text:after,
- input[type=search]:not(.browser-default).invalid ~ .helper-text:after,
- input[type=search]:not(.browser-default):focus.invalid ~ .helper-text:after,
- textarea.textarea.invalid ~ .helper-text:after,
- textarea.textarea:focus.invalid ~ .helper-text:after {
- content: attr(data-error);
- color: #f44336;
- }
- .select-wrapper + label:after, input:not([type]) + label:after,
- input[type=text]:not(.browser-default) + label:after,
- input[type=password]:not(.browser-default) + label:after,
- input[type=email]:not(.browser-default) + label:after,
- input[type=url]:not(.browser-default) + label:after,
- input[type=time]:not(.browser-default) + label:after,
- input[type=date]:not(.browser-default) + label:after,
- input[type=datetime]:not(.browser-default) + label:after,
- input[type=datetime-local]:not(.browser-default) + label:after,
- input[type=tel]:not(.browser-default) + label:after,
- input[type=number]:not(.browser-default) + label:after,
- input[type=search]:not(.browser-default) + label:after,
- textarea.textarea + label:after {
- display: block;
- content: "";
- position: absolute;
- top: 100%;
- left: 0;
- opacity: 0;
- transition: 0.2s opacity ease-out, 0.2s color ease-out;
- }
- .input-field {
- position: relative;
- margin-top: 1rem;
- margin-bottom: 1rem;
- }
- .input-field.inline {
- display: inline-block;
- vertical-align: middle;
- margin-left: 5px;
- }
- .input-field.inline input,
- .input-field.inline .select-dropdown {
- margin-bottom: 1rem;
- }
- .input-field.col label {
- left: 0.5rem;
- }
- .input-field.col .prefix ~ label,
- .input-field.col .prefix ~ .validate ~ label {
- width: calc(100% - 3rem - 1rem);
- }
- .input-field > label {
- color: #9e9e9e;
- position: absolute;
- top: 0;
- left: 0;
- font-size: 1rem;
- cursor: text;
- transition: transform 0.2s ease-out, color 0.2s ease-out;
- transform-origin: 0% 100%;
- text-align: initial;
- transform: translateY(12px);
- }
- .input-field > label:not(.label-icon).active {
- transform: translateY(-14px) scale(0.8);
- transform-origin: 0 0;
- }
- .input-field > input[type]:-webkit-autofill:not(.browser-default):not([type=search]) + label, .input-field > input[type=date]:not(.browser-default) + label, .input-field > input[type=time]:not(.browser-default) + label {
- transform: translateY(-14px) scale(0.8);
- transform-origin: 0 0;
- }
- .input-field .helper-text {
- position: relative;
- min-height: 18px;
- display: block;
- font-size: 12px;
- color: rgba(0, 0, 0, 0.54);
- }
- .input-field .helper-text::after {
- opacity: 1;
- position: absolute;
- top: 0;
- left: 0;
- }
- .input-field .prefix {
- position: absolute;
- width: 56px;
- font-size: 2rem;
- transition: color 0.2s;
- }
- .input-field .prefix.active {
- color: #26a69a;
- }
- .input-field .prefix ~ input,
- .input-field .prefix ~ textarea,
- .input-field .prefix ~ label,
- .input-field .prefix ~ .validate ~ label,
- .input-field .prefix ~ .helper-text,
- .input-field .prefix ~ .autocomplete-content {
- margin-left: 3rem;
- width: 92%;
- width: calc(100% - 3rem);
- }
- .input-field .prefix ~ label {
- margin-left: 3rem;
- }
- @media only screen and (max-width : 992px) {
- .input-field .prefix ~ input {
- width: 86%;
- width: calc(100% - 3rem);
- }
- }
- @media only screen and (max-width : 600px) {
- .input-field .prefix ~ input {
- width: 80%;
- width: calc(100% - 3rem);
- }
- }
- /* Search Field */
- .input-field input[type=search] {
- display: block;
- line-height: inherit;
- transition: 0.3s background-color;
- }
- .nav-wrapper .input-field input[type=search] {
- height: inherit;
- padding-left: 4rem;
- width: calc(100% - 4rem);
- border: 0;
- box-shadow: none;
- }
- .input-field input[type=search]:focus:not(.browser-default) {
- background-color: #fff;
- border: 0;
- box-shadow: none;
- color: #444;
- }
- .input-field input[type=search]:focus:not(.browser-default) + label i, .input-field input[type=search]:focus:not(.browser-default) ~ .mdi-navigation-close, .input-field input[type=search]:focus:not(.browser-default) ~ .material-icons {
- color: #444;
- }
- .input-field input[type=search] + .label-icon {
- transform: none;
- left: 1rem;
- }
- .input-field input[type=search] ~ .mdi-navigation-close, .input-field input[type=search] ~ .material-icons {
- position: absolute;
- top: 0;
- right: 1rem;
- color: transparent;
- cursor: pointer;
- font-size: 2rem;
- transition: 0.3s color;
- }
- /* Textarea */
- textarea {
- width: 100%;
- height: 56px;
- background-color: transparent;
- }
- textarea.textarea {
- line-height: normal;
- overflow-y: hidden; /* prevents scroll bar flash */
- padding: 0.8rem 0 0.8rem 0; /* prevents text jump on Enter keypress */
- resize: none;
- min-height: 56px;
- box-sizing: border-box;
- }
- .hiddendiv {
- visibility: hidden;
- white-space: pre-wrap;
- word-wrap: break-word;
- overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */
- padding-top: 1.2rem; /* prevents text jump on Enter keypress */
- position: absolute;
- top: 0;
- z-index: -1;
- }
- /* Autocomplete */
- .autocomplete-content li .highlight {
- color: #444;
- }
- .autocomplete-content li img {
- margin: 5px 15px;
- }
- /* Character Counter */
- .character-counter {
- min-height: 18px;
- }
- /* Radio Buttons
- ========================================================================== */
- [type=radio]:not(:checked),
- [type=radio]:checked {
- position: absolute;
- opacity: 0;
- pointer-events: none;
- }
- [type=radio]:not(:checked) + span,
- [type=radio]:checked + span {
- position: relative;
- padding-left: 35px;
- cursor: pointer;
- display: inline-block;
- height: 25px;
- line-height: 25px;
- font-size: 1rem;
- transition: 0.28s ease;
- user-select: none;
- }
- [type=radio] + span:before,
- [type=radio] + span:after {
- content: "";
- position: absolute;
- left: 0;
- top: 0;
- margin: 4px;
- width: 16px;
- height: 16px;
- z-index: 0;
- transition: 0.28s ease;
- }
- /* Unchecked styles */
- [type=radio]:not(:checked) + span:before,
- [type=radio]:not(:checked) + span:after,
- [type=radio]:checked + span:before,
- [type=radio]:checked + span:after,
- [type=radio].with-gap:checked + span:before,
- [type=radio].with-gap:checked + span:after {
- border-radius: 50%;
- }
- [type=radio]:not(:checked) + span:before,
- [type=radio]:not(:checked) + span:after {
- border: 2px solid #5a5a5a;
- }
- [type=radio]:not(:checked) + span:after {
- transform: scale(0);
- }
- /* Checked styles */
- [type=radio]:checked + span:before {
- border: 2px solid transparent;
- }
- [type=radio]:checked + span:after,
- [type=radio].with-gap:checked + span:before,
- [type=radio].with-gap:checked + span:after {
- border: 2px solid #26a69a;
- }
- [type=radio]:checked + span:after,
- [type=radio].with-gap:checked + span:after {
- background-color: #26a69a;
- }
- [type=radio]:checked + span:after {
- transform: scale(1.02);
- }
- /* Radio With gap */
- [type=radio].with-gap:checked + span:after {
- transform: scale(0.5);
- }
- /* Focused styles */
- [type=radio].tabbed:focus + span:before {
- box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
- }
- /* Disabled Radio With gap */
- [type=radio].with-gap:disabled:checked + span:before {
- border: 2px solid rgba(0, 0, 0, 0.42);
- }
- [type=radio].with-gap:disabled:checked + span:after {
- border: none;
- background-color: rgba(0, 0, 0, 0.42);
- }
- /* Disabled style */
- [type=radio]:disabled:not(:checked) + span:before,
- [type=radio]:disabled:checked + span:before {
- background-color: transparent;
- border-color: rgba(0, 0, 0, 0.42);
- }
- [type=radio]:disabled + span {
- color: rgba(0, 0, 0, 0.42);
- }
- [type=radio]:disabled:not(:checked) + span:before {
- border-color: rgba(0, 0, 0, 0.42);
- }
- [type=radio]:disabled:checked + span:after {
- background-color: rgba(0, 0, 0, 0.42);
- border-color: #949494;
- }
- /* Checkboxes
- ========================================================================== */
- /* Remove default checkbox */
- [type=checkbox]:not(:checked),
- [type=checkbox]:checked {
- position: absolute;
- opacity: 0;
- pointer-events: none;
- }
- [type=checkbox] {
- /* checkbox aspect */
- }
- [type=checkbox] + span:not(.lever) {
- position: relative;
- padding-left: 35px;
- cursor: pointer;
- display: inline-block;
- height: 25px;
- line-height: 25px;
- font-size: 1rem;
- user-select: none;
- }
- [type=checkbox] + span:not(.lever):before, [type=checkbox]:not(.filled-in) + span:not(.lever):after {
- content: "";
- position: absolute;
- top: 0;
- left: 0;
- width: 18px;
- height: 18px;
- z-index: 0;
- border: 2px solid #5a5a5a;
- border-radius: 1px;
- margin-top: 3px;
- transition: 0.2s;
- }
- [type=checkbox]:not(.filled-in) + span:not(.lever):after {
- border: 0;
- transform: scale(0);
- }
- [type=checkbox]:not(:checked):disabled + span:not(.lever):before {
- border: none;
- background-color: rgba(0, 0, 0, 0.42);
- }
- [type=checkbox].tabbed:focus + span:not(.lever):after {
- transform: scale(1);
- border: 0;
- border-radius: 50%;
- box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
- background-color: rgba(0, 0, 0, 0.1);
- }
- [type=checkbox]:checked + span:not(.lever):before {
- top: -4px;
- left: -5px;
- width: 12px;
- height: 22px;
- border-top: 2px solid transparent;
- border-left: 2px solid transparent;
- border-right: 2px solid #26a69a;
- border-bottom: 2px solid #26a69a;
- transform: rotate(40deg);
- backface-visibility: hidden;
- transform-origin: 100% 100%;
- }
- [type=checkbox]:checked:disabled + span:before {
- border-right: 2px solid rgba(0, 0, 0, 0.42);
- border-bottom: 2px solid rgba(0, 0, 0, 0.42);
- }
- /* Indeterminate checkbox */
- [type=checkbox]:indeterminate + span:not(.lever):before {
- top: -11px;
- left: -12px;
- width: 10px;
- height: 22px;
- border-top: none;
- border-left: none;
- border-right: 2px solid #26a69a;
- border-bottom: none;
- transform: rotate(90deg);
- backface-visibility: hidden;
- transform-origin: 100% 100%;
- }
- [type=checkbox]:indeterminate:disabled + span:not(.lever):before {
- border-right: 2px solid rgba(0, 0, 0, 0.42);
- background-color: transparent;
- }
- [type=checkbox].filled-in + span:not(.lever):after {
- border-radius: 2px;
- }
- [type=checkbox].filled-in + span:not(.lever):before,
- [type=checkbox].filled-in + span:not(.lever):after {
- content: "";
- left: 0;
- position: absolute;
- /* .1s delay is for check animation */
- transition: border 0.25s, background-color 0.25s, width 0.2s 0.1s, height 0.2s 0.1s, top 0.2s 0.1s, left 0.2s 0.1s;
- z-index: 1;
- }
- [type=checkbox].filled-in:not(:checked) + span:not(.lever):before {
- width: 0;
- height: 0;
- border: 3px solid transparent;
- left: 6px;
- top: 10px;
- transform: rotateZ(37deg);
- transform-origin: 100% 100%;
- }
- [type=checkbox].filled-in:not(:checked) + span:not(.lever):after {
- height: 20px;
- width: 20px;
- background-color: transparent;
- border: 2px solid #5a5a5a;
- top: 0px;
- z-index: 0;
- }
- [type=checkbox].filled-in:checked + span:not(.lever):before {
- top: 0;
- left: 1px;
- width: 8px;
- height: 13px;
- border-top: 2px solid transparent;
- border-left: 2px solid transparent;
- border-right: 2px solid #fff;
- border-bottom: 2px solid #fff;
- transform: rotateZ(37deg);
- transform-origin: 100% 100%;
- }
- [type=checkbox].filled-in:checked + span:not(.lever):after {
- top: 0;
- width: 20px;
- height: 20px;
- border: 2px solid #26a69a;
- background-color: #26a69a;
- z-index: 0;
- }
- [type=checkbox].filled-in.tabbed:focus + span:not(.lever):after {
- border-radius: 2px;
- border-color: #5a5a5a;
- background-color: rgba(0, 0, 0, 0.1);
- }
- [type=checkbox].filled-in.tabbed:checked:focus + span:not(.lever):after {
- border-radius: 2px;
- background-color: #26a69a;
- border-color: #26a69a;
- }
- [type=checkbox].filled-in:disabled:not(:checked) + span:not(.lever):before {
- background-color: transparent;
- border: 2px solid transparent;
- }
- [type=checkbox].filled-in:disabled:not(:checked) + span:not(.lever):after {
- border-color: transparent;
- background-color: #949494;
- }
- [type=checkbox].filled-in:disabled:checked + span:not(.lever):before {
- background-color: transparent;
- }
- [type=checkbox].filled-in:disabled:checked + span:not(.lever):after {
- background-color: #949494;
- border-color: #949494;
- }
- /* Switch
- ========================================================================== */
- .switch,
- .switch * {
- -webkit-tap-highlight-color: transparent;
- user-select: none;
- }
- .switch label {
- cursor: pointer;
- }
- .switch label input[type=checkbox] {
- opacity: 0;
- width: 0;
- height: 0;
- }
- .switch label input[type=checkbox]:checked + .lever {
- background-color: #84c7c1;
- }
- .switch label input[type=checkbox]:checked + .lever:before, .switch label input[type=checkbox]:checked + .lever:after {
- left: 18px;
- }
- .switch label input[type=checkbox]:checked + .lever:after {
- background-color: #26a69a;
- }
- .switch label .lever {
- content: "";
- display: inline-block;
- position: relative;
- width: 36px;
- height: 14px;
- background-color: rgba(0, 0, 0, 0.38);
- border-radius: 15px;
- transition: background 0.3s ease;
- vertical-align: middle;
- margin: 0 16px;
- }
- .switch label .lever:before, .switch label .lever:after {
- content: "";
- position: absolute;
- display: inline-block;
- width: 20px;
- height: 20px;
- border-radius: 50%;
- left: 0;
- top: -3px;
- transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease, transform 0.1s ease;
- }
- .switch label .lever:before {
- background-color: rgba(38, 166, 154, 0.15);
- }
- .switch label .lever:after {
- background-color: #F1F1F1;
- box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
- }
- input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,
- input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before {
- transform: scale(2.4);
- background-color: rgba(38, 166, 154, 0.15);
- }
- input[type=checkbox]:not(:disabled) ~ .lever:active:before,
- input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before {
- transform: scale(2.4);
- background-color: rgba(0, 0, 0, 0.08);
- }
- .switch input[type=checkbox][disabled] + .lever {
- cursor: default;
- background-color: rgba(0, 0, 0, 0.12);
- }
- .switch label input[type=checkbox][disabled] + .lever:after,
- .switch label input[type=checkbox][disabled]:checked + .lever:after {
- background-color: #949494;
- }
- /* Select Field
- ========================================================================== */
- select {
- display: none;
- }
- select.browser-default {
- display: block;
- }
- select {
- background-color: rgba(255, 255, 255, 0.9);
- width: 100%;
- padding: 5px;
- border: 1px solid #f2f2f2;
- border-radius: 2px;
- height: 56px;
- }
- .select-label {
- position: absolute;
- }
- .select-wrapper {
- position: relative;
- }
- .select-wrapper.valid + label, .select-wrapper.invalid + label {
- width: 100%;
- pointer-events: none;
- }
- .select-wrapper input.select-dropdown {
- position: relative;
- cursor: pointer;
- background-color: transparent;
- border: none;
- border-bottom: 1px solid #9e9e9e;
- outline: none;
- height: 56px;
- line-height: 56px;
- width: 100%;
- font-size: 16px;
- margin: 0 0 8px 0;
- padding: 0;
- display: block;
- user-select: none;
- z-index: 1;
- }
- .select-wrapper input.select-dropdown:focus {
- border-bottom: 1px solid #26a69a;
- }
- .select-wrapper .caret {
- position: absolute;
- right: 0;
- top: 0;
- bottom: 0;
- margin: auto 0;
- z-index: 0;
- fill: rgba(0, 0, 0, 0.87);
- }
- .select-wrapper + label {
- position: absolute;
- top: -26px;
- font-size: 0.8rem;
- }
- select:disabled {
- color: rgba(0, 0, 0, 0.42);
- }
- .select-wrapper.disabled + label {
- color: rgba(0, 0, 0, 0.42);
- }
- .select-wrapper.disabled .caret {
- fill: rgba(0, 0, 0, 0.42);
- }
- .select-wrapper input.select-dropdown:disabled {
- color: rgba(0, 0, 0, 0.42);
- cursor: default;
- user-select: none;
- }
- .select-wrapper i {
- color: rgba(0, 0, 0, 0.3);
- }
- .select-dropdown li.disabled,
- .select-dropdown li.disabled > span,
- .select-dropdown li.optgroup {
- color: rgba(0, 0, 0, 0.3);
- background-color: transparent;
- }
- body.keyboard-focused .select-dropdown.dropdown-content li:focus {
- background-color: rgba(0, 0, 0, 0.08);
- }
- .select-dropdown.dropdown-content li:hover {
- background-color: rgba(0, 0, 0, 0.08);
- }
- .select-dropdown.dropdown-content li.selected {
- background-color: rgba(0, 0, 0, 0.03);
- }
- .prefix ~ .select-wrapper {
- margin-left: 3rem;
- width: 92%;
- width: calc(100% - 3rem);
- }
- .prefix ~ label {
- margin-left: 3rem;
- }
- .select-dropdown li img {
- margin: 5px 15px;
- float: right;
- }
- .select-dropdown li.optgroup.selected > span {
- color: rgba(0, 0, 0, 0.7);
- }
- .select-dropdown li.optgroup > span {
- color: rgba(0, 0, 0, 0.4);
- }
- .select-dropdown li.optgroup ~ li.optgroup-option {
- padding-left: 1rem;
- }
- /* File Input
- ========================================================================== */
- .file-field {
- position: relative;
- }
- .file-field .file-path-wrapper {
- overflow: hidden;
- padding-left: 10px;
- }
- .file-field input.file-path {
- width: 100%;
- }
- .file-field .btn, .file-field .btn-small, .file-field .btn-large {
- float: left;
- height: 56px;
- line-height: 56px;
- }
- .file-field span {
- cursor: pointer;
- }
- .file-field input[type=file] {
- position: absolute;
- top: 0;
- right: 0;
- left: 0;
- bottom: 0;
- width: 100%;
- margin: 0;
- padding: 0;
- font-size: 20px;
- cursor: pointer;
- opacity: 0;
- filter: alpha(opacity=0);
- }
- .file-field input[type=file]::-webkit-file-upload-button {
- display: none;
- }
- /* Range
- ========================================================================== */
- .range-field {
- position: relative;
- }
- input[type=range],
- input[type=range] + .thumb {
- cursor: pointer;
- }
- input[type=range] {
- position: relative;
- background-color: transparent;
- border: none;
- outline: none;
- width: 100%;
- margin: 15px 0;
- padding: 0;
- }
- input[type=range]:focus {
- outline: none;
- }
- input[type=range] + .thumb {
- position: absolute;
- top: 10px;
- left: 0;
- border: none;
- height: 0;
- width: 0;
- border-radius: 50%;
- background-color: #26a69a;
- margin-left: 7px;
- transform-origin: 50% 50%;
- transform: rotate(-45deg);
- }
- input[type=range] + .thumb .value {
- display: block;
- width: 30px;
- text-align: center;
- color: #26a69a;
- font-size: 0;
- transform: rotate(45deg);
- }
- input[type=range] + .thumb.active {
- border-radius: 50% 50% 50% 0;
- }
- input[type=range] + .thumb.active .value {
- color: #fff;
- margin-left: -1px;
- margin-top: 8px;
- font-size: 10px;
- }
- input[type=range] {
- -webkit-appearance: none;
- }
- input[type=range]::-webkit-slider-runnable-track {
- height: 3px;
- background: #c2c0c2;
- border: none;
- }
- input[type=range]::-webkit-slider-thumb {
- border: none;
- height: 14px;
- width: 14px;
- border-radius: 50%;
- background: #26a69a;
- transition: box-shadow 0.3s;
- -webkit-appearance: none;
- background-color: #26a69a;
- transform-origin: 50% 50%;
- margin: -5px 0 0 0;
- }
- .keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb {
- box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);
- }
- input[type=range] {
- /* fix for FF unable to apply focus style bug */
- border: 1px solid white;
- /*required for proper track sizing in FF*/
- }
- input[type=range]::-moz-range-track {
- height: 3px;
- background: #c2c0c2;
- border: none;
- }
- input[type=range]::-moz-focus-inner {
- border: 0;
- }
- input[type=range]::-moz-range-thumb {
- border: none;
- height: 14px;
- width: 14px;
- border-radius: 50%;
- background: #26a69a;
- transition: box-shadow 0.3s;
- margin-top: -5px;
- }
- input[type=range]:-moz-focusring {
- outline: 1px solid #fff;
- outline-offset: -1px;
- }
- .keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb {
- box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);
- }
- input[type=range]::-ms-track {
- height: 3px;
- background: transparent;
- border-color: transparent;
- border-width: 6px 0;
- /*remove default tick marks*/
- color: transparent;
- }
- input[type=range]::-ms-fill-lower {
- background: #777;
- }
- input[type=range]::-ms-fill-upper {
- background: #ddd;
- }
- input[type=range]::-ms-thumb {
- border: none;
- height: 14px;
- width: 14px;
- border-radius: 50%;
- background: #26a69a;
- transition: box-shadow 0.3s;
- }
- .keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb {
- box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);
- }
- .parallax {
- /* Set a specific height */
- min-height: 500px;
- /* Create the parallax scrolling effect */
- background-attachment: fixed;
- background-position: center;
- background-repeat: no-repeat;
- background-size: cover;
- }
- * {
- box-sizing: border-box;
- }
- body {
- font-family: sans-serif;
- }
- .scene {
- width: 200px;
- height: 200px;
- border: 1px solid #CCC;
- margin: 80px;
- perspective: 400px;
- }
- .cube {
- width: 200px;
- height: 200px;
- position: relative;
- transform-style: preserve-3d;
- transform: translateZ(-400px);
- transition: transform 1s;
- }
- .cube.show-front {
- transform: translateZ(-10px) rotateY(0deg);
- }
- .cube.show-right {
- transform: translateZ(-10px) rotateY(-90deg);
- }
- .cube.show-back {
- transform: translateZ(-10px) rotateY(-180deg);
- }
- .cube.show-left {
- transform: translateZ(-10px) rotateY(90deg);
- }
- .cube.show-top {
- transform: translateZ(-10px) rotateX(-90deg);
- }
- .cube.show-bottom {
- transform: translateZ(-10px) rotateX(90deg);
- }
- .cube__face {
- position: absolute;
- width: 200px;
- height: 200px;
- border: 2px solid black;
- line-height: 200px;
- font-size: 40px;
- font-weight: bold;
- color: white;
- text-align: center;
- }
- .cube__face--front {
- background: hsla(0, 100%, 50%, 0.7);
- }
- .cube__face--right {
- background: hsla(60, 100%, 50%, 0.7);
- }
- .cube__face--back {
- background: hsla(120, 100%, 50%, 0.7);
- }
- .cube__face--left {
- background: hsla(180, 100%, 50%, 0.7);
- }
- .cube__face--top {
- background: hsla(240, 100%, 50%, 0.7);
- }
- .cube__face--bottom {
- background: hsla(300, 100%, 50%, 0.7);
- }
- .cube__face--front {
- transform: rotateY(0deg) translateZ(100px);
- }
- .cube__face--right {
- transform: rotateY(90deg) translateZ(100px);
- }
- .cube__face--back {
- transform: rotateY(180deg) translateZ(100px);
- }
- .cube__face--left {
- transform: rotateY(-90deg) translateZ(100px);
- }
- .cube__face--top {
- transform: rotateX(90deg) translateZ(100px);
- }
- .cube__face--bottom {
- transform: rotateX(-90deg) translateZ(100px);
- }
- label {
- margin-right: 10px;
- }
- .container {
- margin: 0 auto;
- max-width: 1280px;
- width: 90%;
- }
- @media only screen and (min-width : 601px) {
- .container {
- width: 85%;
- }
- }
- @media only screen and (min-width : 993px) {
- .container {
- width: 70%;
- }
- }
- .col .row {
- margin-left: -0.5rem;
- margin-right: -0.5rem;
- }
- .section {
- padding-top: 1rem;
- padding-bottom: 1rem;
- }
- .section.no-pad {
- padding: 0;
- }
- .section.no-pad-bot {
- padding-bottom: 0;
- }
- .section.no-pad-top {
- padding-top: 0;
- }
- .row {
- margin-left: auto;
- margin-right: auto;
- margin-bottom: 20px;
- }
- .row:after {
- content: "";
- display: table;
- clear: both;
- }
- .row .col {
- float: left;
- box-sizing: border-box;
- padding: 0 0.5rem;
- min-height: 1px;
- }
- .row .col[class*=push-], .row .col[class*=pull-] {
- position: relative;
- }
- .row .col.s1 {
- width: 8.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s2 {
- width: 16.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s3 {
- width: 25%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s4 {
- width: 33.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s5 {
- width: 41.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s6 {
- width: 50%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s7 {
- width: 58.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s8 {
- width: 66.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s9 {
- width: 75%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s10 {
- width: 83.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s11 {
- width: 91.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.s12 {
- width: 100%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.offset-s1 {
- margin-left: 8.3333333333%;
- }
- .row .col.pull-s1 {
- right: 8.3333333333%;
- }
- .row .col.push-s1 {
- left: 8.3333333333%;
- }
- .row .col.offset-s2 {
- margin-left: 16.6666666667%;
- }
- .row .col.pull-s2 {
- right: 16.6666666667%;
- }
- .row .col.push-s2 {
- left: 16.6666666667%;
- }
- .row .col.offset-s3 {
- margin-left: 25%;
- }
- .row .col.pull-s3 {
- right: 25%;
- }
- .row .col.push-s3 {
- left: 25%;
- }
- .row .col.offset-s4 {
- margin-left: 33.3333333333%;
- }
- .row .col.pull-s4 {
- right: 33.3333333333%;
- }
- .row .col.push-s4 {
- left: 33.3333333333%;
- }
- .row .col.offset-s5 {
- margin-left: 41.6666666667%;
- }
- .row .col.pull-s5 {
- right: 41.6666666667%;
- }
- .row .col.push-s5 {
- left: 41.6666666667%;
- }
- .row .col.offset-s6 {
- margin-left: 50%;
- }
- .row .col.pull-s6 {
- right: 50%;
- }
- .row .col.push-s6 {
- left: 50%;
- }
- .row .col.offset-s7 {
- margin-left: 58.3333333333%;
- }
- .row .col.pull-s7 {
- right: 58.3333333333%;
- }
- .row .col.push-s7 {
- left: 58.3333333333%;
- }
- .row .col.offset-s8 {
- margin-left: 66.6666666667%;
- }
- .row .col.pull-s8 {
- right: 66.6666666667%;
- }
- .row .col.push-s8 {
- left: 66.6666666667%;
- }
- .row .col.offset-s9 {
- margin-left: 75%;
- }
- .row .col.pull-s9 {
- right: 75%;
- }
- .row .col.push-s9 {
- left: 75%;
- }
- .row .col.offset-s10 {
- margin-left: 83.3333333333%;
- }
- .row .col.pull-s10 {
- right: 83.3333333333%;
- }
- .row .col.push-s10 {
- left: 83.3333333333%;
- }
- .row .col.offset-s11 {
- margin-left: 91.6666666667%;
- }
- .row .col.pull-s11 {
- right: 91.6666666667%;
- }
- .row .col.push-s11 {
- left: 91.6666666667%;
- }
- .row .col.offset-s12 {
- margin-left: 100%;
- }
- .row .col.pull-s12 {
- right: 100%;
- }
- .row .col.push-s12 {
- left: 100%;
- }
- @media only screen and (min-width : 601px) {
- .row .col.m1 {
- width: 8.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m2 {
- width: 16.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m3 {
- width: 25%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m4 {
- width: 33.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m5 {
- width: 41.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m6 {
- width: 50%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m7 {
- width: 58.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m8 {
- width: 66.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m9 {
- width: 75%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m10 {
- width: 83.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m11 {
- width: 91.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.m12 {
- width: 100%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.offset-m1 {
- margin-left: 8.3333333333%;
- }
- .row .col.pull-m1 {
- right: 8.3333333333%;
- }
- .row .col.push-m1 {
- left: 8.3333333333%;
- }
- .row .col.offset-m2 {
- margin-left: 16.6666666667%;
- }
- .row .col.pull-m2 {
- right: 16.6666666667%;
- }
- .row .col.push-m2 {
- left: 16.6666666667%;
- }
- .row .col.offset-m3 {
- margin-left: 25%;
- }
- .row .col.pull-m3 {
- right: 25%;
- }
- .row .col.push-m3 {
- left: 25%;
- }
- .row .col.offset-m4 {
- margin-left: 33.3333333333%;
- }
- .row .col.pull-m4 {
- right: 33.3333333333%;
- }
- .row .col.push-m4 {
- left: 33.3333333333%;
- }
- .row .col.offset-m5 {
- margin-left: 41.6666666667%;
- }
- .row .col.pull-m5 {
- right: 41.6666666667%;
- }
- .row .col.push-m5 {
- left: 41.6666666667%;
- }
- .row .col.offset-m6 {
- margin-left: 50%;
- }
- .row .col.pull-m6 {
- right: 50%;
- }
- .row .col.push-m6 {
- left: 50%;
- }
- .row .col.offset-m7 {
- margin-left: 58.3333333333%;
- }
- .row .col.pull-m7 {
- right: 58.3333333333%;
- }
- .row .col.push-m7 {
- left: 58.3333333333%;
- }
- .row .col.offset-m8 {
- margin-left: 66.6666666667%;
- }
- .row .col.pull-m8 {
- right: 66.6666666667%;
- }
- .row .col.push-m8 {
- left: 66.6666666667%;
- }
- .row .col.offset-m9 {
- margin-left: 75%;
- }
- .row .col.pull-m9 {
- right: 75%;
- }
- .row .col.push-m9 {
- left: 75%;
- }
- .row .col.offset-m10 {
- margin-left: 83.3333333333%;
- }
- .row .col.pull-m10 {
- right: 83.3333333333%;
- }
- .row .col.push-m10 {
- left: 83.3333333333%;
- }
- .row .col.offset-m11 {
- margin-left: 91.6666666667%;
- }
- .row .col.pull-m11 {
- right: 91.6666666667%;
- }
- .row .col.push-m11 {
- left: 91.6666666667%;
- }
- .row .col.offset-m12 {
- margin-left: 100%;
- }
- .row .col.pull-m12 {
- right: 100%;
- }
- .row .col.push-m12 {
- left: 100%;
- }
- }
- @media only screen and (min-width : 993px) {
- .row .col.l1 {
- width: 8.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l2 {
- width: 16.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l3 {
- width: 25%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l4 {
- width: 33.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l5 {
- width: 41.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l6 {
- width: 50%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l7 {
- width: 58.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l8 {
- width: 66.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l9 {
- width: 75%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l10 {
- width: 83.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l11 {
- width: 91.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.l12 {
- width: 100%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.offset-l1 {
- margin-left: 8.3333333333%;
- }
- .row .col.pull-l1 {
- right: 8.3333333333%;
- }
- .row .col.push-l1 {
- left: 8.3333333333%;
- }
- .row .col.offset-l2 {
- margin-left: 16.6666666667%;
- }
- .row .col.pull-l2 {
- right: 16.6666666667%;
- }
- .row .col.push-l2 {
- left: 16.6666666667%;
- }
- .row .col.offset-l3 {
- margin-left: 25%;
- }
- .row .col.pull-l3 {
- right: 25%;
- }
- .row .col.push-l3 {
- left: 25%;
- }
- .row .col.offset-l4 {
- margin-left: 33.3333333333%;
- }
- .row .col.pull-l4 {
- right: 33.3333333333%;
- }
- .row .col.push-l4 {
- left: 33.3333333333%;
- }
- .row .col.offset-l5 {
- margin-left: 41.6666666667%;
- }
- .row .col.pull-l5 {
- right: 41.6666666667%;
- }
- .row .col.push-l5 {
- left: 41.6666666667%;
- }
- .row .col.offset-l6 {
- margin-left: 50%;
- }
- .row .col.pull-l6 {
- right: 50%;
- }
- .row .col.push-l6 {
- left: 50%;
- }
- .row .col.offset-l7 {
- margin-left: 58.3333333333%;
- }
- .row .col.pull-l7 {
- right: 58.3333333333%;
- }
- .row .col.push-l7 {
- left: 58.3333333333%;
- }
- .row .col.offset-l8 {
- margin-left: 66.6666666667%;
- }
- .row .col.pull-l8 {
- right: 66.6666666667%;
- }
- .row .col.push-l8 {
- left: 66.6666666667%;
- }
- .row .col.offset-l9 {
- margin-left: 75%;
- }
- .row .col.pull-l9 {
- right: 75%;
- }
- .row .col.push-l9 {
- left: 75%;
- }
- .row .col.offset-l10 {
- margin-left: 83.3333333333%;
- }
- .row .col.pull-l10 {
- right: 83.3333333333%;
- }
- .row .col.push-l10 {
- left: 83.3333333333%;
- }
- .row .col.offset-l11 {
- margin-left: 91.6666666667%;
- }
- .row .col.pull-l11 {
- right: 91.6666666667%;
- }
- .row .col.push-l11 {
- left: 91.6666666667%;
- }
- .row .col.offset-l12 {
- margin-left: 100%;
- }
- .row .col.pull-l12 {
- right: 100%;
- }
- .row .col.push-l12 {
- left: 100%;
- }
- }
- @media only screen and (min-width : 1201px) {
- .row .col.xl1 {
- width: 8.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl2 {
- width: 16.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl3 {
- width: 25%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl4 {
- width: 33.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl5 {
- width: 41.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl6 {
- width: 50%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl7 {
- width: 58.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl8 {
- width: 66.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl9 {
- width: 75%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl10 {
- width: 83.3333333333%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl11 {
- width: 91.6666666667%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.xl12 {
- width: 100%;
- margin-left: auto;
- left: auto;
- right: auto;
- }
- .row .col.offset-xl1 {
- margin-left: 8.3333333333%;
- }
- .row .col.pull-xl1 {
- right: 8.3333333333%;
- }
- .row .col.push-xl1 {
- left: 8.3333333333%;
- }
- .row .col.offset-xl2 {
- margin-left: 16.6666666667%;
- }
- .row .col.pull-xl2 {
- right: 16.6666666667%;
- }
- .row .col.push-xl2 {
- left: 16.6666666667%;
- }
- .row .col.offset-xl3 {
- margin-left: 25%;
- }
- .row .col.pull-xl3 {
- right: 25%;
- }
- .row .col.push-xl3 {
- left: 25%;
- }
- .row .col.offset-xl4 {
- margin-left: 33.3333333333%;
- }
- .row .col.pull-xl4 {
- right: 33.3333333333%;
- }
- .row .col.push-xl4 {
- left: 33.3333333333%;
- }
- .row .col.offset-xl5 {
- margin-left: 41.6666666667%;
- }
- .row .col.pull-xl5 {
- right: 41.6666666667%;
- }
- .row .col.push-xl5 {
- left: 41.6666666667%;
- }
- .row .col.offset-xl6 {
- margin-left: 50%;
- }
- .row .col.pull-xl6 {
- right: 50%;
- }
- .row .col.push-xl6 {
- left: 50%;
- }
- .row .col.offset-xl7 {
- margin-left: 58.3333333333%;
- }
- .row .col.pull-xl7 {
- right: 58.3333333333%;
- }
- .row .col.push-xl7 {
- left: 58.3333333333%;
- }
- .row .col.offset-xl8 {
- margin-left: 66.6666666667%;
- }
- .row .col.pull-xl8 {
- right: 66.6666666667%;
- }
- .row .col.push-xl8 {
- left: 66.6666666667%;
- }
- .row .col.offset-xl9 {
- margin-left: 75%;
- }
- .row .col.pull-xl9 {
- right: 75%;
- }
- .row .col.push-xl9 {
- left: 75%;
- }
- .row .col.offset-xl10 {
- margin-left: 83.3333333333%;
- }
- .row .col.pull-xl10 {
- right: 83.3333333333%;
- }
- .row .col.push-xl10 {
- left: 83.3333333333%;
- }
- .row .col.offset-xl11 {
- margin-left: 91.6666666667%;
- }
- .row .col.pull-xl11 {
- right: 91.6666666667%;
- }
- .row .col.push-xl11 {
- left: 91.6666666667%;
- }
- .row .col.offset-xl12 {
- margin-left: 100%;
- }
- .row .col.pull-xl12 {
- right: 100%;
- }
- .row .col.push-xl12 {
- left: 100%;
- }
- }
- .sidenav {
- position: fixed;
- width: 300px;
- left: 0;
- top: 0;
- margin: 0;
- height: 100%;
- height: calc(100% + 60px);
- height: -moz-calc(100%);
- padding-bottom: 60px;
- background-color: #fff;
- z-index: 999;
- overflow-y: auto;
- will-change: transform;
- backface-visibility: hidden;
- transform: translateX(-105%);
- transition: transform 1s;
- }
- .sidenav.right-aligned {
- right: 0;
- left: auto;
- transform: translateX(100%);
- }
- .sidenav .collapsible {
- margin: 0;
- }
- .sidenav li {
- float: none;
- }
- .sidenav li .iconSideLink {
- display: flex;
- align-items: center;
- }
- .sidenav li .iconSideLink svg {
- stroke: rgba(0, 0, 0, 0.2);
- width: 30px;
- }
- .sidenav li.active {
- background-color: rgba(0, 0, 0, 0.05);
- }
- .sidenav li.active svg {
- stroke: white !important;
- width: 30px;
- }
- .sidenav li.last {
- position: sticky;
- top: calc(100% - 45px - 35px);
- }
- .sidenav li > a {
- color: rgba(0, 0, 0, 0.87);
- display: flex;
- font-size: 14px;
- font-weight: 700;
- height: 45px;
- line-height: 45px;
- padding: 0 30px;
- }
- .sidenav li > a:hover {
- background-color: rgba(0, 0, 0, 0.05);
- }
- .sidenav li > a.btn, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-flat, .sidenav li > a.btn-floating {
- margin: 10px 15px;
- }
- .sidenav li > a.btn, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-floating {
- color: #fff;
- }
- .sidenav li > a.btn-flat {
- color: #343434;
- }
- .sidenav li > a.btn:hover, .sidenav li > a.btn-small:hover, .sidenav li > a.btn-large:hover {
- background-color: #414141;
- }
- .sidenav li > a.btn-floating:hover {
- background-color: #343434;
- }
- .sidenav li > a > i, .sidenav li > a > [class^=mdi-],
- .sidenav li > a li > a > [class*=mdi-], .sidenav li > a > i.s-icon {
- float: left;
- height: 45px;
- line-height: 45px;
- margin: 0 30px 0 0;
- width: 22.5px;
- color: rgba(0, 0, 0, 0.54);
- }
- .sidenav .divider {
- margin: 7.5px 0 0 0;
- }
- .sidenav .subheader {
- cursor: initial;
- pointer-events: none;
- color: rgba(0, 0, 0, 0.54);
- font-size: 14px;
- font-weight: 500;
- line-height: 45px;
- }
- .sidenav .subheader:hover {
- background-color: transparent;
- }
- .sidenav .user-view {
- position: relative;
- padding: 30px 30px 0;
- margin-bottom: 7.5px;
- }
- .sidenav .user-view > a {
- height: auto;
- padding: 0;
- }
- .sidenav .user-view > a:hover {
- background-color: transparent;
- }
- .sidenav .user-view .background {
- overflow: hidden;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: -1;
- }
- .sidenav .user-view .circle,
- .sidenav .user-view .name,
- .sidenav .user-view .email {
- display: block;
- }
- .sidenav .user-view .circle {
- height: 64px;
- width: 64px;
- }
- .sidenav .user-view .name,
- .sidenav .user-view .email {
- font-size: 14px;
- line-height: 22.5px;
- }
- .sidenav .user-view .name {
- margin-top: 16px;
- font-weight: 500;
- }
- .sidenav .user-view .email {
- padding-bottom: 16px;
- font-weight: 400;
- }
- .drag-target {
- height: 100%;
- width: 10px;
- position: fixed;
- top: 0;
- z-index: 998;
- }
- .drag-target.right-aligned {
- right: 0;
- }
- .sidenav.sidenav-fixed {
- left: 0;
- transform: translateX(0);
- position: fixed;
- }
- .sidenav.sidenav-fixed.right-aligned {
- right: 0;
- left: auto;
- }
- @media only screen and (max-width : 992px) {
- .sidenav.sidenav-fixed {
- transform: translateX(-105%);
- }
- .sidenav.sidenav-fixed.right-aligned {
- transform: translateX(105%);
- }
- .sidenav > a {
- padding: 0 15px;
- }
- .sidenav .user-view {
- padding: 15px 15px 0;
- }
- }
- .sidenav .collapsible-body > ul:not(.collapsible) > li.active,
- .sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active {
- background-color: #90caf9;
- }
- .sidenav .collapsible-body > ul:not(.collapsible) > li.active a,
- .sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active a {
- color: #fff;
- }
- .sidenav .collapsible-body {
- padding: 0;
- }
- .sidenav-overlay {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- opacity: 0;
- height: 120vh;
- background-color: rgba(0, 0, 0, 0.5);
- z-index: 997;
- display: none;
- }
- .with-side-nav-open {
- padding-left: 300px;
- transition: padding 1s;
- }
- .btn, .btn-small, .btn-large,
- .btn-flat {
- border: none;
- border-radius: 2px;
- display: inline-block;
- height: 36px;
- line-height: 36px;
- padding: 0 16px;
- text-transform: uppercase;
- vertical-align: middle;
- -webkit-tap-highlight-color: transparent;
- }
- .btn.disabled,
- .btn-floating.disabled,
- .btn-large.disabled,
- .btn-small.disabled,
- .btn-flat.disabled,
- .btn:disabled,
- .btn-floating:disabled,
- .btn-large:disabled,
- .btn-small:disabled,
- .btn-flat:disabled,
- .btn[disabled],
- .btn-floating[disabled],
- .btn-large[disabled],
- .btn-small[disabled],
- .btn-flat[disabled] {
- pointer-events: none;
- background-color: #DFDFDF !important;
- box-shadow: none;
- color: #9F9F9F !important;
- cursor: default;
- }
- .btn.disabled:hover,
- .btn-floating.disabled:hover,
- .btn-large.disabled:hover,
- .btn-small.disabled:hover,
- .btn-flat.disabled:hover,
- .btn:disabled:hover,
- .btn-floating:disabled:hover,
- .btn-large:disabled:hover,
- .btn-small:disabled:hover,
- .btn-flat:disabled:hover,
- .btn[disabled]:hover,
- .btn-floating[disabled]:hover,
- .btn-large[disabled]:hover,
- .btn-small[disabled]:hover,
- .btn-flat[disabled]:hover {
- background-color: #DFDFDF !important;
- color: #9F9F9F !important;
- }
- .btn,
- .btn-small,
- .btn-large,
- .btn-floating,
- .btn-flat {
- font-size: 14px;
- outline: 0;
- }
- .btn i,
- .btn-floating i,
- .btn-large i,
- .btn-small i,
- .btn-flat i {
- font-size: 1.3rem;
- line-height: inherit;
- }
- .btn:focus, .btn-small:focus, .btn-large:focus,
- .btn-floating:focus {
- background-color: #1b1b1b;
- }
- .btn, .btn-small, .btn-large {
- text-decoration: none;
- color: #fff;
- background-color: #343434;
- text-align: center;
- letter-spacing: 0.5px;
- transition: background-color 0.2s ease-out;
- cursor: pointer;
- }
- .btn:hover, .btn-small:hover, .btn-large:hover {
- background-color: #414141;
- }
- .btn-floating {
- display: inline-block;
- color: #fff;
- position: relative;
- overflow: hidden;
- z-index: 1;
- width: 40px;
- height: 40px;
- line-height: 40px;
- padding: 0;
- background-color: #26a69a;
- border-radius: 50%;
- transition: background-color 0.3s;
- cursor: pointer;
- vertical-align: middle;
- }
- .btn-floating:hover {
- background-color: #26a69a;
- }
- .btn-floating:before {
- border-radius: 0;
- }
- .btn-floating.btn-large {
- width: 56px;
- height: 56px;
- padding: 0;
- }
- .btn-floating.btn-large.halfway-fab {
- bottom: 28px;
- }
- .btn-floating.btn-large i {
- line-height: 56px;
- }
- .btn-floating.btn-small {
- width: 32.4px;
- height: 32.4px;
- }
- .btn-floating.btn-small.halfway-fab {
- bottom: 16.2px;
- }
- .btn-floating.btn-small i {
- line-height: 32.4px;
- }
- .btn-floating.halfway-fab {
- position: absolute;
- right: 24px;
- bottom: 20px;
- }
- .btn-floating.halfway-fab.left {
- right: auto;
- left: 24px;
- }
- .btn-floating i {
- width: inherit;
- display: inline-block;
- text-align: center;
- color: #fff;
- font-size: 1.6rem;
- line-height: 40px;
- }
- button.btn-floating {
- border: none;
- }
- .fixed-action-btn {
- position: fixed;
- right: 23px;
- bottom: 23px;
- padding-top: 15px;
- margin-bottom: 0;
- z-index: 997;
- }
- .fixed-action-btn.active ul {
- visibility: visible;
- }
- .fixed-action-btn.direction-left, .fixed-action-btn.direction-right {
- padding: 0 0 0 15px;
- }
- .fixed-action-btn.direction-left ul, .fixed-action-btn.direction-right ul {
- text-align: right;
- right: 64px;
- top: 50%;
- transform: translateY(-50%);
- height: 100%;
- left: auto;
- /*width 100% only goes to width of button container */
- width: 500px;
- }
- .fixed-action-btn.direction-left ul li, .fixed-action-btn.direction-right ul li {
- display: inline-block;
- margin: 7.5px 15px 0 0;
- }
- .fixed-action-btn.direction-right {
- padding: 0 15px 0 0;
- }
- .fixed-action-btn.direction-right ul {
- text-align: left;
- direction: rtl;
- left: 64px;
- right: auto;
- }
- .fixed-action-btn.direction-right ul li {
- margin: 7.5px 0 0 15px;
- }
- .fixed-action-btn.direction-bottom {
- padding: 0 0 15px 0;
- }
- .fixed-action-btn.direction-bottom ul {
- top: 64px;
- bottom: auto;
- display: flex;
- flex-direction: column-reverse;
- }
- .fixed-action-btn.direction-bottom ul li {
- margin: 15px 0 0 0;
- }
- .fixed-action-btn.toolbar {
- padding: 0;
- height: 56px;
- }
- .fixed-action-btn.toolbar.active > a i {
- opacity: 0;
- }
- .fixed-action-btn.toolbar ul {
- display: flex;
- top: 0;
- bottom: 0;
- z-index: 1;
- }
- .fixed-action-btn.toolbar ul li {
- flex: 1;
- display: inline-block;
- margin: 0;
- height: 100%;
- transition: none;
- }
- .fixed-action-btn.toolbar ul li a {
- display: block;
- overflow: hidden;
- position: relative;
- width: 100%;
- height: 100%;
- background-color: transparent;
- box-shadow: none;
- color: #fff;
- line-height: 56px;
- z-index: 1;
- }
- .fixed-action-btn.toolbar ul li a i {
- line-height: inherit;
- }
- .fixed-action-btn ul {
- left: 0;
- right: 0;
- text-align: center;
- position: absolute;
- bottom: 64px;
- margin: 0;
- visibility: hidden;
- }
- .fixed-action-btn ul li {
- margin-bottom: 15px;
- }
- .fixed-action-btn ul a.btn-floating {
- opacity: 0;
- }
- .fixed-action-btn .fab-backdrop {
- position: absolute;
- top: 0;
- left: 0;
- z-index: -1;
- width: 40px;
- height: 40px;
- background-color: #26a69a;
- border-radius: 50%;
- transform: scale(0);
- }
- .btn-flat {
- box-shadow: none;
- background-color: transparent;
- color: #343434;
- cursor: pointer;
- transition: background-color 0.2s;
- }
- .btn-flat:focus, .btn-flat:hover {
- box-shadow: none;
- }
- .btn-flat:focus {
- background-color: rgba(0, 0, 0, 0.1);
- }
- .btn-flat.disabled, .btn-flat.btn-flat[disabled] {
- background-color: transparent !important;
- color: #b3b3b3 !important;
- cursor: default;
- }
- .btn-large {
- height: 54px;
- line-height: 54px;
- font-size: 15px;
- padding: 0 28px;
- }
- .btn-large i {
- font-size: 1.6rem;
- }
- .btn-small {
- height: 32.4px;
- line-height: 32.4px;
- font-size: 13px;
- }
- .btn-small i {
- font-size: 1.2rem;
- }
- .btn-block {
- display: block;
- }
- .communTabHeader, .tabs.activeTab-2 .tab-header-over2 .tab-header, .tabs.activeTab-2 .tab-header-over1 .tab-header, .tabs.activeTab-2 .tab-header-over0 .tab-header, .tabs.activeTab-1 .tab-header-over2 .tab-header, .tabs.activeTab-1 .tab-header-over1 .tab-header, .tabs.activeTab-1 .tab-header-over0 .tab-header, .tabs.activeTab-0 .tab-header-over2 .tab-header, .tabs.activeTab-0 .tab-header-over1 .tab-header, .tabs.activeTab-0 .tab-header-over0 .tab-header {
- height: 100px;
- padding: 40px;
- }
- .tabs {
- min-height: calc(100% - 150px);
- margin-top: 30px;
- padding: 0 !important;
- border-radius: 40px !important;
- }
- .tabs .innerpage {
- min-height: 70VH !important;
- }
- .tabs .tabs-header-overlay {
- display: flex;
- height: 100px;
- }
- .tabs.activeTab-0 .tab-header-over0 {
- flex: 1;
- background-color: #80c4fd;
- border-radius: 40px 0 0 0;
- }
- .tabs.activeTab-0 .tab-header-over0 .tab-header {
- background-color: #cbe7fe;
- border-radius: 40px 40px 0 0;
- }
- .tabs.activeTab-0 .tab-header-over1 {
- flex: 1;
- background: linear-gradient(0.25turn, #cbe7fe, #35a2fb);
- border-radius: 0 0 0 0;
- }
- .tabs.activeTab-0 .tab-header-over1 .tab-header {
- background-color: #80c4fd;
- border-radius: 0 40px 0 40px;
- }
- .tabs.activeTab-0 .tab-header-over2 {
- flex: 1;
- background-color: #80c4fd;
- border-radius: 0 40px 0 0;
- }
- .tabs.activeTab-0 .tab-header-over2 .tab-header {
- background-color: #35a2fb;
- border-radius: 0 40px 0 40px;
- }
- .tabs.activeTab-1 .tab-header-over0 {
- flex: 1;
- background-color: #cbe7fe;
- border-radius: 40px 0 0 0;
- }
- .tabs.activeTab-1 .tab-header-over0 .tab-header {
- background-color: #80c4fd;
- border-radius: 40px 0 40px 0;
- }
- .tabs.activeTab-1 .tab-header-over1 {
- flex: 1;
- background: linear-gradient(0.25turn, #80c4fd, #35a2fb);
- border-radius: 0 0 0 0;
- }
- .tabs.activeTab-1 .tab-header-over1 .tab-header {
- background-color: #cbe7fe;
- border-radius: 40px 40px 0 0;
- }
- .tabs.activeTab-1 .tab-header-over2 {
- flex: 1;
- background-color: #cbe7fe;
- border-radius: 0 40px 0 0;
- }
- .tabs.activeTab-1 .tab-header-over2 .tab-header {
- background-color: #35a2fb;
- border-radius: 0 40px 0 40px;
- }
- .tabs.activeTab-2 .tab-header-over0 {
- flex: 1;
- background-color: #35a2fb;
- border-radius: 40px 0 0 0;
- }
- .tabs.activeTab-2 .tab-header-over0 .tab-header {
- background-color: #80c4fd;
- border-radius: 40px 0 40px 0;
- }
- .tabs.activeTab-2 .tab-header-over1 {
- flex: 1;
- background: linear-gradient(0.25turn, #80c4fd, #cbe7fe);
- border-radius: 0 0 0 0;
- }
- .tabs.activeTab-2 .tab-header-over1 .tab-header {
- background-color: #35a2fb;
- border-radius: 40px 0 40px 0;
- }
- .tabs.activeTab-2 .tab-header-over2 {
- flex: 1;
- background-color: #35a2fb;
- border-radius: 0 40px 0 0;
- }
- .tabs.activeTab-2 .tab-header-over2 .tab-header {
- background-color: #cbe7fe;
- border-radius: 40px 40px 0 0;
- }
- .tabs .tab-content {
- background-color: #cbe7fe;
- padding: 10px;
- border-top: 0;
- min-height: 70vh;
- border-radius: 0 0 40px 40px;
- padding-bottom: 20px;
- }
- .loader-overlay {
- z-index: 999;
- position: absolute;
- height: 100vh;
- width: 100vw;
- top: 0;
- left: 0;
- background-color: rgba(102, 100, 100, 0.603);
- display: flex;
- justify-content: center;
- align-items: center;
- flex-direction: column;
- }
- .loader-overlay .loader {
- border: 7px solid #f3f3f3; /* Light grey */
- border-top: 7px solid #2ea2cc; /* Blue */
- border-radius: 50%;
- width: 70px;
- height: 70px;
- animation: spin 2s linear infinite;
- }
- .loader-overlay .loader-text {
- margin-top: 20px;
- font-size: 25px;
- color: #2ea2cc;
- }
- @keyframes spin {
- 0% {
- transform: rotate(0deg);
- }
- 100% {
- transform: rotate(360deg);
- }
- }
- .card-panel {
- transition: box-shadow 0.25s;
- padding: 24px;
- margin: 0.3333333333rem 0 0.6666666667rem 0;
- border-radius: 2px;
- background-color: #fff;
- }
- .card {
- position: relative;
- margin: 0.3333333333rem 0 0.6666666667rem 0;
- background-color: #fff;
- transition: box-shadow 0.25s;
- border-radius: 2px;
- }
- .card .card-title {
- font-size: 24px;
- font-weight: 300;
- }
- .card .card-title.activator {
- cursor: pointer;
- }
- .card.small, .card.medium, .card.large {
- position: relative;
- }
- .card.small .card-image, .card.medium .card-image, .card.large .card-image {
- max-height: 60%;
- overflow: hidden;
- }
- .card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content {
- max-height: 40%;
- }
- .card.small .card-content, .card.medium .card-content, .card.large .card-content {
- max-height: 100%;
- overflow: hidden;
- }
- .card.small .card-action, .card.medium .card-action, .card.large .card-action {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- }
- .card.small {
- height: 300px;
- }
- .card.medium {
- height: 400px;
- }
- .card.large {
- height: 500px;
- }
- .card.horizontal {
- display: flex;
- }
- .card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image {
- height: 100%;
- max-height: none;
- overflow: visible;
- }
- .card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img {
- height: 100%;
- }
- .card.horizontal .card-image {
- max-width: 50%;
- }
- .card.horizontal .card-image img {
- border-radius: 2px 0 0 2px;
- max-width: 100%;
- width: auto;
- }
- .card.horizontal .card-stacked {
- display: flex;
- flex-direction: column;
- flex: 1;
- position: relative;
- }
- .card.horizontal .card-stacked .card-content {
- flex-grow: 1;
- }
- .card.sticky-action .card-action {
- z-index: 2;
- }
- .card.sticky-action .card-reveal {
- z-index: 1;
- padding-bottom: 64px;
- }
- .card .card-image {
- position: relative;
- }
- .card .card-image img {
- display: block;
- border-radius: 2px 2px 0 0;
- position: relative;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0;
- width: 100%;
- }
- .card .card-image .card-title {
- color: #fff;
- position: absolute;
- bottom: 0;
- left: 0;
- max-width: 100%;
- padding: 24px;
- }
- .card .card-content {
- padding: 24px;
- border-radius: 0 0 2px 2px;
- }
- .card .card-content p {
- margin: 0;
- }
- .card .card-content .card-title {
- display: block;
- line-height: 32px;
- margin-bottom: 8px;
- }
- .card .card-content .card-title i {
- line-height: 32px;
- }
- .card .card-action {
- background-color: inherit;
- border-top: 1px solid rgba(160, 160, 160, 0.2);
- position: relative;
- padding: 16px 24px;
- }
- .card .card-action:last-child {
- border-radius: 0 0 2px 2px;
- }
- .card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating) {
- color: #ffab40;
- margin-right: 24px;
- transition: color 0.3s ease;
- text-transform: uppercase;
- }
- .card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating):hover {
- color: #ffd8a6;
- }
- .card .card-reveal {
- padding: 24px;
- position: absolute;
- background-color: #fff;
- width: 100%;
- overflow-y: auto;
- left: 0;
- top: 100%;
- height: 100%;
- z-index: 3;
- display: none;
- }
- .card .card-reveal .card-title {
- cursor: pointer;
- display: block;
- }
- /*
- @license
- Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
- This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
- The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
- The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
- Code distributed by Google as part of the polymer project is also
- subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
- */
- /**************************/
- /* STYLES FOR THE SPINNER */
- /**************************/
- /*
- * Constants:
- * STROKEWIDTH = 3px
- * ARCSIZE = 270 degrees (amount of circle the arc takes up)
- * ARCTIME = 1333ms (time it takes to expand and contract arc)
- * ARCSTARTROT = 216 degrees (how much the start location of the arc
- * should rotate each time, 216 gives us a
- * 5 pointed star shape (it's 360/5 * 3).
- * For a 7 pointed star, we might do
- * 360/7 * 3 = 154.286)
- * CONTAINERWIDTH = 28px
- * SHRINK_TIME = 400ms
- */
- .preloader-wrapper {
- display: inline-block;
- position: relative;
- width: 50px;
- height: 50px;
- }
- .preloader-wrapper.small {
- width: 36px;
- height: 36px;
- }
- .preloader-wrapper.big {
- width: 64px;
- height: 64px;
- }
- .preloader-wrapper.active {
- /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */
- -webkit-animation: container-rotate 1568ms linear infinite;
- animation: container-rotate 1568ms linear infinite;
- }
- @-webkit-keyframes container-rotate {
- to {
- -webkit-transform: rotate(360deg);
- }
- }
- @keyframes container-rotate {
- to {
- transform: rotate(360deg);
- }
- }
- .spinner-layer {
- position: absolute;
- width: 100%;
- height: 100%;
- opacity: 0;
- border-color: #26a69a;
- }
- .spinner-blue,
- .spinner-blue-only {
- border-color: #4285f4;
- }
- .spinner-red,
- .spinner-red-only {
- border-color: #db4437;
- }
- .spinner-yellow,
- .spinner-yellow-only {
- border-color: #f4b400;
- }
- .spinner-green,
- .spinner-green-only {
- border-color: #0f9d58;
- }
- /**
- * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):
- *
- * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't
- * guarantee that the animation will start _exactly_ after that value. So we avoid using
- * animation-delay and instead set custom keyframes for each color (as redundant as it
- * seems).
- *
- * We write out each animation in full (instead of separating animation-name,
- * animation-duration, etc.) because under the polyfill, Safari does not recognize those
- * specific properties properly, treats them as -webkit-animation, and overrides the
- * other animation rules. See https://github.com/Polymer/platform/issues/53.
- */
- .active .spinner-layer.spinner-blue {
- /* durations: 4 * ARCTIME */
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- }
- .active .spinner-layer.spinner-red {
- /* durations: 4 * ARCTIME */
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- }
- .active .spinner-layer.spinner-yellow {
- /* durations: 4 * ARCTIME */
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- }
- .active .spinner-layer.spinner-green {
- /* durations: 4 * ARCTIME */
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- }
- .active .spinner-layer,
- .active .spinner-layer.spinner-blue-only,
- .active .spinner-layer.spinner-red-only,
- .active .spinner-layer.spinner-yellow-only,
- .active .spinner-layer.spinner-green-only {
- /* durations: 4 * ARCTIME */
- opacity: 1;
- -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- }
- @-webkit-keyframes fill-unfill-rotate {
- 12.5% {
- -webkit-transform: rotate(135deg);
- } /* 0.5 * ARCSIZE */
- 25% {
- -webkit-transform: rotate(270deg);
- } /* 1 * ARCSIZE */
- 37.5% {
- -webkit-transform: rotate(405deg);
- } /* 1.5 * ARCSIZE */
- 50% {
- -webkit-transform: rotate(540deg);
- } /* 2 * ARCSIZE */
- 62.5% {
- -webkit-transform: rotate(675deg);
- } /* 2.5 * ARCSIZE */
- 75% {
- -webkit-transform: rotate(810deg);
- } /* 3 * ARCSIZE */
- 87.5% {
- -webkit-transform: rotate(945deg);
- } /* 3.5 * ARCSIZE */
- to {
- -webkit-transform: rotate(1080deg);
- } /* 4 * ARCSIZE */
- }
- @keyframes fill-unfill-rotate {
- 12.5% {
- transform: rotate(135deg);
- } /* 0.5 * ARCSIZE */
- 25% {
- transform: rotate(270deg);
- } /* 1 * ARCSIZE */
- 37.5% {
- transform: rotate(405deg);
- } /* 1.5 * ARCSIZE */
- 50% {
- transform: rotate(540deg);
- } /* 2 * ARCSIZE */
- 62.5% {
- transform: rotate(675deg);
- } /* 2.5 * ARCSIZE */
- 75% {
- transform: rotate(810deg);
- } /* 3 * ARCSIZE */
- 87.5% {
- transform: rotate(945deg);
- } /* 3.5 * ARCSIZE */
- to {
- transform: rotate(1080deg);
- } /* 4 * ARCSIZE */
- }
- @-webkit-keyframes blue-fade-in-out {
- from {
- opacity: 1;
- }
- 25% {
- opacity: 1;
- }
- 26% {
- opacity: 0;
- }
- 89% {
- opacity: 0;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 1;
- }
- }
- @keyframes blue-fade-in-out {
- from {
- opacity: 1;
- }
- 25% {
- opacity: 1;
- }
- 26% {
- opacity: 0;
- }
- 89% {
- opacity: 0;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 1;
- }
- }
- @-webkit-keyframes red-fade-in-out {
- from {
- opacity: 0;
- }
- 15% {
- opacity: 0;
- }
- 25% {
- opacity: 1;
- }
- 50% {
- opacity: 1;
- }
- 51% {
- opacity: 0;
- }
- }
- @keyframes red-fade-in-out {
- from {
- opacity: 0;
- }
- 15% {
- opacity: 0;
- }
- 25% {
- opacity: 1;
- }
- 50% {
- opacity: 1;
- }
- 51% {
- opacity: 0;
- }
- }
- @-webkit-keyframes yellow-fade-in-out {
- from {
- opacity: 0;
- }
- 40% {
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 75% {
- opacity: 1;
- }
- 76% {
- opacity: 0;
- }
- }
- @keyframes yellow-fade-in-out {
- from {
- opacity: 0;
- }
- 40% {
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 75% {
- opacity: 1;
- }
- 76% {
- opacity: 0;
- }
- }
- @-webkit-keyframes green-fade-in-out {
- from {
- opacity: 0;
- }
- 65% {
- opacity: 0;
- }
- 75% {
- opacity: 1;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 0;
- }
- }
- @keyframes green-fade-in-out {
- from {
- opacity: 0;
- }
- 65% {
- opacity: 0;
- }
- 75% {
- opacity: 1;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 0;
- }
- }
- /**
- * Patch the gap that appear between the two adjacent div.circle-clipper while the
- * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).
- */
- .gap-patch {
- position: absolute;
- top: 0;
- left: 45%;
- width: 10%;
- height: 100%;
- overflow: hidden;
- border-color: inherit;
- }
- .gap-patch .circle {
- width: 1000%;
- left: -450%;
- }
- .circle-clipper {
- display: inline-block;
- position: relative;
- width: 50%;
- height: 100%;
- overflow: hidden;
- border-color: inherit;
- }
- .circle-clipper .circle {
- width: 200%;
- height: 100%;
- border-width: 3px; /* STROKEWIDTH */
- border-style: solid;
- border-color: inherit;
- border-bottom-color: transparent !important;
- border-radius: 50%;
- -webkit-animation: none;
- animation: none;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- }
- .circle-clipper.left .circle {
- left: 0;
- border-right-color: transparent !important;
- -webkit-transform: rotate(129deg);
- transform: rotate(129deg);
- }
- .circle-clipper.right .circle {
- left: -100%;
- border-left-color: transparent !important;
- -webkit-transform: rotate(-129deg);
- transform: rotate(-129deg);
- }
- .active .circle-clipper.left .circle {
- /* duration: ARCTIME */
- -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- }
- .active .circle-clipper.right .circle {
- /* duration: ARCTIME */
- -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
- }
- @-webkit-keyframes left-spin {
- from {
- -webkit-transform: rotate(130deg);
- }
- 50% {
- -webkit-transform: rotate(-5deg);
- }
- to {
- -webkit-transform: rotate(130deg);
- }
- }
- @keyframes left-spin {
- from {
- transform: rotate(130deg);
- }
- 50% {
- transform: rotate(-5deg);
- }
- to {
- transform: rotate(130deg);
- }
- }
- @-webkit-keyframes right-spin {
- from {
- -webkit-transform: rotate(-130deg);
- }
- 50% {
- -webkit-transform: rotate(5deg);
- }
- to {
- -webkit-transform: rotate(-130deg);
- }
- }
- @keyframes right-spin {
- from {
- transform: rotate(-130deg);
- }
- 50% {
- transform: rotate(5deg);
- }
- to {
- transform: rotate(-130deg);
- }
- }
- #spinnerContainer.cooldown {
- /* duration: SHRINK_TIME */
- -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);
- animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);
- }
- @-webkit-keyframes fade-out {
- from {
- opacity: 1;
- }
- to {
- opacity: 0;
- }
- }
- @keyframes fade-out {
- from {
- opacity: 1;
- }
- to {
- opacity: 0;
- }
- }
- .progress {
- position: relative;
- height: 4px;
- display: block;
- width: 100%;
- background-color: #acece6;
- border-radius: 2px;
- margin: 0.3333333333rem 0 0.6666666667rem 0;
- overflow: hidden;
- }
- .progress .determinate {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- background-color: #26a69a;
- transition: width 0.3s linear;
- }
- .progress .indeterminate {
- background-color: #26a69a;
- }
- .progress .indeterminate:before {
- content: "";
- position: absolute;
- background-color: inherit;
- top: 0;
- left: 0;
- bottom: 0;
- will-change: left, right;
- animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
- }
- .progress .indeterminate:after {
- content: "";
- position: absolute;
- background-color: inherit;
- top: 0;
- left: 0;
- bottom: 0;
- will-change: left, right;
- animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
- animation-delay: 1.15s;
- }
- @keyframes indeterminate {
- 0% {
- left: -35%;
- right: 100%;
- }
- 60% {
- left: 100%;
- right: -90%;
- }
- 100% {
- left: 100%;
- right: -90%;
- }
- }
- @keyframes indeterminate-short {
- 0% {
- left: -200%;
- right: 100%;
- }
- 60% {
- left: 107%;
- right: -8%;
- }
- 100% {
- left: 107%;
- right: -8%;
- }
- }
- .flash-message {
- position: absolute;
- padding: 2px 10px;
- border-radius: 5px;
- z-index: 99999;
- right: 0;
- bottom: 0;
- font-size: 14px;
- }
- .flash-message.info {
- background-color: #beddbe;
- border: 1px solid #728f72;
- }
- .flash-message.warn {
- background-color: #f5e6d0;
- border: 1px solid #ea7d17;
- }
- .flash-message.error {
- background-color: #e5b2bc;
- border: 1px solid #e33257;
- }
- @keyframes messageIn {
- from {
- right: 80%;
- }
- to {
- right: 0;
- }
- }
- .pulse {
- overflow: visible;
- position: relative;
- }
- .pulse::before {
- content: "";
- display: block;
- position: absolute;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- background-color: inherit;
- border-radius: inherit;
- transition: opacity 0.3s, transform 0.3s;
- animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
- }
- @keyframes pulse-animation {
- 0% {
- opacity: 1;
- transform: scale(1);
- }
- 50% {
- opacity: 0;
- transform: scale(1.5);
- }
- 100% {
- opacity: 0;
- transform: scale(1.5);
- }
- }
- .dropdown-content {
- background-color: #fff;
- margin: 0;
- display: flow;
- min-width: 100px;
- overflow-y: auto;
- position: absolute;
- left: 0;
- top: 0;
- z-index: 9999;
- transform-origin: 0 0;
- }
- .dropdown-content:focus {
- outline: 0;
- }
- .dropdown-content li {
- clear: both;
- color: rgba(0, 0, 0, 0.87);
- cursor: pointer;
- min-height: 50px;
- line-height: 1.5rem;
- width: 100%;
- text-align: left;
- }
- .dropdown-content li:hover, .dropdown-content li.active {
- background-color: #eee;
- }
- .dropdown-content li:focus {
- outline: none;
- }
- .dropdown-content li.divider {
- min-height: 0;
- height: 1px;
- }
- .dropdown-content li > a, .dropdown-content li > span {
- font-size: 16px;
- color: #26a69a;
- display: block;
- line-height: 22px;
- padding: 14px 16px;
- }
- .dropdown-content li > span > label {
- top: 1px;
- left: 0;
- height: 18px;
- }
- .dropdown-content li > a > i {
- height: inherit;
- line-height: inherit;
- float: left;
- margin: 0 24px 0 0;
- width: 24px;
- }
- body.keyboard-focused .dropdown-content li:focus {
- background-color: #dadada;
- }
- .input-field.col .dropdown-content [type=checkbox] + label {
- top: 1px;
- left: 0;
- height: 18px;
- transform: none;
- }
- .dropdown-trigger {
- cursor: pointer;
- }
- nav {
- color: #fff;
- background-color: #90caf9;
- width: 100%;
- height: 56px;
- line-height: 56px;
- }
- nav.nav-extended {
- height: auto;
- }
- nav.nav-extended .nav-wrapper {
- display: flex;
- align-items: center;
- min-height: 56px;
- height: auto;
- }
- nav.nav-extended .nav-content {
- position: relative;
- line-height: normal;
- }
- nav a {
- color: #fff;
- }
- nav i,
- nav [class^=mdi-], nav [class*=mdi-],
- nav i.s-icons {
- display: block;
- font-size: 24px;
- height: 56px;
- line-height: 56px;
- }
- nav .nav-wrapper {
- position: relative;
- height: 100%;
- }
- @media only screen and (min-width : 993px) {
- nav a.sidenav-trigger {
- display: none;
- }
- }
- nav .sidenav-trigger {
- float: left;
- position: relative;
- z-index: 1;
- height: 56px;
- margin: 0 18px;
- }
- nav .sidenav-trigger i {
- height: 56px;
- line-height: 56px;
- }
- nav .brand-logo {
- position: absolute;
- color: #fff;
- display: inline-block;
- font-size: 2.1rem;
- padding: 0;
- }
- nav .brand-logo img.circle {
- height: 32px;
- width: 32px;
- }
- nav .brand-logo.center {
- left: 50%;
- transform: translateX(-50%);
- }
- @media only screen and (max-width : 992px) {
- nav .brand-logo {
- left: 50%;
- transform: translateX(-50%);
- }
- nav .brand-logo.left, nav .brand-logo.right {
- padding: 0;
- transform: none;
- }
- nav .brand-logo.left {
- left: 0.5rem;
- }
- nav .brand-logo.right {
- right: 0.5rem;
- left: auto;
- }
- }
- nav .brand-logo.right {
- right: 0.5rem;
- padding: 0;
- }
- nav .brand-logo i,
- nav .brand-logo [class^=mdi-], nav .brand-logo [class*=mdi-],
- nav .brand-logo i.s-icons {
- float: left;
- margin-right: 15px;
- }
- nav .nav-title {
- display: inline-block;
- font-size: 32px;
- padding: 28px 0;
- }
- nav ul {
- margin: 0;
- }
- nav ul li {
- transition: background-color 0.3s;
- float: left;
- padding: 0;
- }
- nav ul li.active {
- background-color: rgba(0, 0, 0, 0.1);
- }
- nav ul a {
- transition: background-color 0.3s;
- font-size: 1rem;
- color: #fff;
- display: block;
- padding: 0 15px;
- cursor: pointer;
- }
- nav ul a.btn, nav ul a.btn-small, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating {
- margin-top: -2px;
- margin-left: 15px;
- margin-right: 15px;
- }
- nav ul a.btn > .material-icons, nav ul a.btn-small > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons {
- height: inherit;
- line-height: inherit;
- }
- nav ul a:hover {
- background-color: rgba(0, 0, 0, 0.1);
- }
- nav ul.left {
- float: left;
- }
- nav form {
- height: 100%;
- }
- nav .input-field {
- margin: 0;
- height: 100%;
- }
- nav .input-field input {
- height: 100%;
- font-size: 1.2rem;
- border: none;
- padding-left: 2rem;
- }
- nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid {
- border: none;
- box-shadow: none;
- }
- nav .input-field label {
- top: 0;
- left: 0;
- }
- nav .input-field label i {
- color: rgba(255, 255, 255, 0.7);
- transition: color 0.3s;
- }
- nav .input-field label.active i {
- color: #fff;
- }
- .navbar-fixed {
- position: relative;
- height: 56px;
- z-index: 997;
- }
- .navbar-fixed nav {
- position: fixed;
- }
- @media only screen and (min-width : 601px) {
- nav.nav-extended .nav-wrapper {
- min-height: 64px;
- }
- nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i {
- height: 64px;
- line-height: 64px;
- }
- .navbar-fixed {
- height: 64px;
- }
- }`, "",{"version":3,"sources":["webpack://./src/sass/d3v4pp.scss","webpack://./src/sass/_colors.scss","webpack://./src/sass/_code-dark.scss","webpack://./src/sass/_terminal.scss","webpack://./src/sass/_tooltip.scss","webpack://./src/sass/_shadows.scss","webpack://./src/sass/_waves.scss","webpack://./src/sass/_modal.scss","webpack://./src/sass/_global.scss","webpack://./src/sass/_variables.scss","webpack://./src/sass/_badges.scss","webpack://./src/sass/_chips.scss","webpack://./src/sass/_collapsible.scss","webpack://./src/sass/_collection.scss","webpack://./src/sass/forms/_forms.scss","webpack://./src/sass/forms/_input-fields.scss","webpack://./src/sass/forms/_radio-buttons.scss","webpack://./src/sass/forms/_checkboxes.scss","webpack://./src/sass/forms/_switches.scss","webpack://./src/sass/forms/_select.scss","webpack://./src/sass/forms/_file-input.scss","webpack://./src/sass/forms/_range.scss","webpack://./src/sass/_paralax.scss","webpack://./src/sass/_cube.scss","webpack://./src/sass/_grid.scss","webpack://./src/sass/_sidenav.scss","webpack://./src/sass/_buttons.scss","webpack://./src/sass/_tabs.scss","webpack://./src/sass/_loader.scss","webpack://./src/sass/_cards.scss","webpack://./src/sass/_preloader.scss","webpack://./src/sass/_progress.scss","webpack://./src/sass/_flash-message.scss","webpack://./src/sass/_pulse.scss","webpack://./src/sass/_dropdown.scss","webpack://./src/sass/_navbar.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACKV;EACE,oCAAA;ADFR;;ACIM;EACE,yBAAA;ADDR;;ACGM;EACE,oCAAA;ADAR;;ACGM;EACE,oCAAA;ADAR;;ACEM;EACE,yBAAA;ADCR;;ACCM;EACE,oCAAA;ADER;;ACTM;EACE,oCAAA;ADYR;;ACVM;EACE,yBAAA;ADaR;;ACXM;EACE,oCAAA;ADcR;;ACrBM;EACE,oCAAA;ADwBR;;ACtBM;EACE,yBAAA;ADyBR;;ACvBM;EACE,oCAAA;AD0BR;;ACjCM;EACE,oCAAA;ADoCR;;AClCM;EACE,yBAAA;ADqCR;;ACnCM;EACE,oCAAA;ADsCR;;AC7CM;EACE,oCAAA;ADgDR;;AC9CM;EACE,yBAAA;ADiDR;;AC/CM;EACE,oCAAA;ADkDR;;ACzDM;EACE,oCAAA;AD4DR;;AC1DM;EACE,yBAAA;AD6DR;;AC3DM;EACE,oCAAA;AD8DR;;ACrEM;EACE,oCAAA;ADwER;;ACtEM;EACE,yBAAA;ADyER;;ACvEM;EACE,oCAAA;AD0ER;;ACjFM;EACE,oCAAA;ADoFR;;AClFM;EACE,yBAAA;ADqFR;;ACnFM;EACE,oCAAA;ADsFR;;AC7FM;EACE,oCAAA;ADgGR;;AC9FM;EACE,yBAAA;ADiGR;;AC/FM;EACE,oCAAA;ADkGR;;ACzGM;EACE,oCAAA;AD4GR;;AC1GM;EACE,yBAAA;AD6GR;;AC3GM;EACE,oCAAA;AD8GR;;ACrHM;EACE,oCAAA;ADwHR;;ACtHM;EACE,yBAAA;ADyHR;;ACvHM;EACE,oCAAA;AD0HR;;ACjIM;EACE,oCAAA;ADoIR;;AClIM;EACE,yBAAA;ADqIR;;ACnIM;EACE,oCAAA;ADsIR;;AC7IM;EACE,oCAAA;ADgJR;;AC9IM;EACE,yBAAA;ADiJR;;AC/IM;EACE,oCAAA;ADkJR;;ACnKM;EACE,oCAAA;ADsKR;;ACpKM;EACE,yBAAA;ADuKR;;ACrKM;EACE,oCAAA;ADwKR;;ACrKM;EACE,oCAAA;ADwKR;;ACtKM;EACE,yBAAA;ADyKR;;ACvKM;EACE,oCAAA;AD0KR;;ACjLM;EACE,oCAAA;ADoLR;;AClLM;EACE,yBAAA;ADqLR;;ACnLM;EACE,oCAAA;ADsLR;;AC7LM;EACE,oCAAA;ADgMR;;AC9LM;EACE,yBAAA;ADiMR;;AC/LM;EACE,oCAAA;ADkMR;;ACzMM;EACE,oCAAA;AD4MR;;AC1MM;EACE,yBAAA;AD6MR;;AC3MM;EACE,oCAAA;AD8MR;;ACrNM;EACE,oCAAA;ADwNR;;ACtNM;EACE,yBAAA;ADyNR;;ACvNM;EACE,oCAAA;AD0NR;;ACjOM;EACE,oCAAA;ADoOR;;AClOM;EACE,yBAAA;ADqOR;;ACnOM;EACE,oCAAA;ADsOR;;AC7OM;EACE,oCAAA;ADgPR;;AC9OM;EACE,yBAAA;ADiPR;;AC/OM;EACE,oCAAA;ADkPR;;ACzPM;EACE,oCAAA;AD4PR;;AC1PM;EACE,yBAAA;AD6PR;;AC3PM;EACE,oCAAA;AD8PR;;ACrQM;EACE,oCAAA;ADwQR;;ACtQM;EACE,yBAAA;ADyQR;;ACvQM;EACE,oCAAA;AD0QR;;ACjRM;EACE,oCAAA;ADoRR;;AClRM;EACE,yBAAA;ADqRR;;ACnRM;EACE,oCAAA;ADsRR;;AC7RM;EACE,oCAAA;ADgSR;;AC9RM;EACE,yBAAA;ADiSR;;AC/RM;EACE,oCAAA;ADkSR;;ACzSM;EACE,oCAAA;AD4SR;;AC1SM;EACE,yBAAA;AD6SR;;AC3SM;EACE,oCAAA;AD8SR;;ACrTM;EACE,oCAAA;ADwTR;;ACtTM;EACE,yBAAA;ADyTR;;ACvTM;EACE,oCAAA;AD0TR;;AC3UM;EACE,oCAAA;AD8UR;;AC5UM;EACE,yBAAA;AD+UR;;AC7UM;EACE,oCAAA;ADgVR;;AC7UM;EACE,oCAAA;ADgVR;;AC9UM;EACE,yBAAA;ADiVR;;AC/UM;EACE,oCAAA;ADkVR;;ACzVM;EACE,oCAAA;AD4VR;;AC1VM;EACE,yBAAA;AD6VR;;AC3VM;EACE,oCAAA;AD8VR;;ACrWM;EACE,oCAAA;ADwWR;;ACtWM;EACE,yBAAA;ADyWR;;ACvWM;EACE,oCAAA;AD0WR;;ACjXM;EACE,oCAAA;ADoXR;;AClXM;EACE,yBAAA;ADqXR;;ACnXM;EACE,oCAAA;ADsXR;;AC7XM;EACE,oCAAA;ADgYR;;AC9XM;EACE,yBAAA;ADiYR;;AC/XM;EACE,oCAAA;ADkYR;;ACzYM;EACE,oCAAA;AD4YR;;AC1YM;EACE,yBAAA;AD6YR;;AC3YM;EACE,oCAAA;AD8YR;;ACrZM;EACE,oCAAA;ADwZR;;ACtZM;EACE,yBAAA;ADyZR;;ACvZM;EACE,oCAAA;AD0ZR;;ACjaM;EACE,oCAAA;ADoaR;;AClaM;EACE,yBAAA;ADqaR;;ACnaM;EACE,oCAAA;ADsaR;;AC7aM;EACE,oCAAA;ADgbR;;AC9aM;EACE,yBAAA;ADibR;;AC/aM;EACE,oCAAA;ADkbR;;ACzbM;EACE,oCAAA;AD4bR;;AC1bM;EACE,yBAAA;AD6bR;;AC3bM;EACE,oCAAA;AD8bR;;ACrcM;EACE,oCAAA;ADwcR;;ACtcM;EACE,yBAAA;ADycR;;ACvcM;EACE,oCAAA;AD0cR;;ACjdM;EACE,oCAAA;ADodR;;ACldM;EACE,yBAAA;ADqdR;;ACndM;EACE,oCAAA;ADsdR;;AC7dM;EACE,oCAAA;ADgeR;;AC9dM;EACE,yBAAA;ADieR;;AC/dM;EACE,oCAAA;ADkeR;;ACnfM;EACE,oCAAA;ADsfR;;ACpfM;EACE,yBAAA;ADufR;;ACrfM;EACE,oCAAA;ADwfR;;ACrfM;EACE,oCAAA;ADwfR;;ACtfM;EACE,yBAAA;ADyfR;;ACvfM;EACE,oCAAA;AD0fR;;ACjgBM;EACE,oCAAA;ADogBR;;AClgBM;EACE,yBAAA;ADqgBR;;ACngBM;EACE,oCAAA;ADsgBR;;AC7gBM;EACE,oCAAA;ADghBR;;AC9gBM;EACE,yBAAA;ADihBR;;AC/gBM;EACE,oCAAA;ADkhBR;;ACzhBM;EACE,oCAAA;AD4hBR;;AC1hBM;EACE,yBAAA;AD6hBR;;AC3hBM;EACE,oCAAA;AD8hBR;;ACriBM;EACE,oCAAA;ADwiBR;;ACtiBM;EACE,yBAAA;ADyiBR;;ACviBM;EACE,oCAAA;AD0iBR;;ACjjBM;EACE,oCAAA;ADojBR;;ACljBM;EACE,yBAAA;ADqjBR;;ACnjBM;EACE,oCAAA;ADsjBR;;AC7jBM;EACE,oCAAA;ADgkBR;;AC9jBM;EACE,yBAAA;ADikBR;;AC/jBM;EACE,oCAAA;ADkkBR;;ACzkBM;EACE,oCAAA;AD4kBR;;AC1kBM;EACE,yBAAA;AD6kBR;;AC3kBM;EACE,oCAAA;AD8kBR;;ACrlBM;EACE,oCAAA;ADwlBR;;ACtlBM;EACE,yBAAA;ADylBR;;ACvlBM;EACE,oCAAA;AD0lBR;;ACjmBM;EACE,oCAAA;ADomBR;;AClmBM;EACE,yBAAA;ADqmBR;;ACnmBM;EACE,oCAAA;ADsmBR;;AC7mBM;EACE,oCAAA;ADgnBR;;AC9mBM;EACE,yBAAA;ADinBR;;AC/mBM;EACE,oCAAA;ADknBR;;ACznBM;EACE,oCAAA;AD4nBR;;AC1nBM;EACE,yBAAA;AD6nBR;;AC3nBM;EACE,oCAAA;AD8nBR;;ACroBM;EACE,oCAAA;ADwoBR;;ACtoBM;EACE,yBAAA;ADyoBR;;ACvoBM;EACE,oCAAA;AD0oBR;;AC3pBM;EACE,oCAAA;AD8pBR;;AC5pBM;EACE,yBAAA;AD+pBR;;AC7pBM;EACE,oCAAA;ADgqBR;;AC7pBM;EACE,oCAAA;ADgqBR;;AC9pBM;EACE,yBAAA;ADiqBR;;AC/pBM;EACE,oCAAA;ADkqBR;;ACzqBM;EACE,oCAAA;AD4qBR;;AC1qBM;EACE,yBAAA;AD6qBR;;AC3qBM;EACE,oCAAA;AD8qBR;;ACrrBM;EACE,oCAAA;ADwrBR;;ACtrBM;EACE,yBAAA;ADyrBR;;ACvrBM;EACE,oCAAA;AD0rBR;;ACjsBM;EACE,oCAAA;ADosBR;;AClsBM;EACE,yBAAA;ADqsBR;;ACnsBM;EACE,oCAAA;ADssBR;;AC7sBM;EACE,oCAAA;ADgtBR;;AC9sBM;EACE,yBAAA;ADitBR;;AC/sBM;EACE,oCAAA;ADktBR;;ACztBM;EACE,oCAAA;AD4tBR;;AC1tBM;EACE,yBAAA;AD6tBR;;AC3tBM;EACE,oCAAA;AD8tBR;;ACruBM;EACE,oCAAA;ADwuBR;;ACtuBM;EACE,yBAAA;ADyuBR;;ACvuBM;EACE,oCAAA;AD0uBR;;ACjvBM;EACE,oCAAA;ADovBR;;AClvBM;EACE,yBAAA;ADqvBR;;ACnvBM;EACE,oCAAA;ADsvBR;;AC7vBM;EACE,oCAAA;ADgwBR;;AC9vBM;EACE,yBAAA;ADiwBR;;AC/vBM;EACE,oCAAA;ADkwBR;;ACzwBM;EACE,oCAAA;AD4wBR;;AC1wBM;EACE,yBAAA;AD6wBR;;AC3wBM;EACE,oCAAA;AD8wBR;;ACrxBM;EACE,oCAAA;ADwxBR;;ACtxBM;EACE,yBAAA;ADyxBR;;ACvxBM;EACE,oCAAA;AD0xBR;;ACjyBM;EACE,oCAAA;ADoyBR;;AClyBM;EACE,yBAAA;ADqyBR;;ACnyBM;EACE,oCAAA;ADsyBR;;AC7yBM;EACE,oCAAA;ADgzBR;;AC9yBM;EACE,yBAAA;ADizBR;;AC/yBM;EACE,oCAAA;ADkzBR;;ACn0BM;EACE,oCAAA;ADs0BR;;ACp0BM;EACE,yBAAA;ADu0BR;;ACr0BM;EACE,oCAAA;ADw0BR;;ACr0BM;EACE,oCAAA;ADw0BR;;ACt0BM;EACE,yBAAA;ADy0BR;;ACv0BM;EACE,oCAAA;AD00BR;;ACj1BM;EACE,oCAAA;ADo1BR;;ACl1BM;EACE,yBAAA;ADq1BR;;ACn1BM;EACE,oCAAA;ADs1BR;;AC71BM;EACE,oCAAA;ADg2BR;;AC91BM;EACE,yBAAA;ADi2BR;;AC/1BM;EACE,oCAAA;ADk2BR;;ACz2BM;EACE,oCAAA;AD42BR;;AC12BM;EACE,yBAAA;AD62BR;;AC32BM;EACE,oCAAA;AD82BR;;ACr3BM;EACE,oCAAA;ADw3BR;;ACt3BM;EACE,yBAAA;ADy3BR;;ACv3BM;EACE,oCAAA;AD03BR;;ACj4BM;EACE,oCAAA;ADo4BR;;ACl4BM;EACE,yBAAA;ADq4BR;;ACn4BM;EACE,oCAAA;ADs4BR;;AC74BM;EACE,oCAAA;ADg5BR;;AC94BM;EACE,yBAAA;ADi5BR;;AC/4BM;EACE,oCAAA;ADk5BR;;ACz5BM;EACE,oCAAA;AD45BR;;AC15BM;EACE,yBAAA;AD65BR;;AC35BM;EACE,oCAAA;AD85BR;;ACr6BM;EACE,oCAAA;ADw6BR;;ACt6BM;EACE,yBAAA;ADy6BR;;ACv6BM;EACE,oCAAA;AD06BR;;ACj7BM;EACE,oCAAA;ADo7BR;;ACl7BM;EACE,yBAAA;ADq7BR;;ACn7BM;EACE,oCAAA;ADs7BR;;AC77BM;EACE,oCAAA;ADg8BR;;AC97BM;EACE,yBAAA;ADi8BR;;AC/7BM;EACE,oCAAA;ADk8BR;;ACz8BM;EACE,oCAAA;AD48BR;;AC18BM;EACE,yBAAA;AD68BR;;AC38BM;EACE,oCAAA;AD88BR;;ACr9BM;EACE,oCAAA;ADw9BR;;ACt9BM;EACE,yBAAA;ADy9BR;;ACv9BM;EACE,oCAAA;AD09BR;;AC3+BM;EACE,oCAAA;AD8+BR;;AC5+BM;EACE,yBAAA;AD++BR;;AC7+BM;EACE,oCAAA;ADg/BR;;AC7+BM;EACE,oCAAA;ADg/BR;;AC9+BM;EACE,yBAAA;ADi/BR;;AC/+BM;EACE,oCAAA;ADk/BR;;ACz/BM;EACE,oCAAA;AD4/BR;;AC1/BM;EACE,yBAAA;AD6/BR;;AC3/BM;EACE,oCAAA;AD8/BR;;ACrgCM;EACE,oCAAA;ADwgCR;;ACtgCM;EACE,yBAAA;ADygCR;;ACvgCM;EACE,oCAAA;AD0gCR;;ACjhCM;EACE,oCAAA;ADohCR;;AClhCM;EACE,yBAAA;ADqhCR;;ACnhCM;EACE,oCAAA;ADshCR;;AC7hCM;EACE,oCAAA;ADgiCR;;AC9hCM;EACE,yBAAA;ADiiCR;;AC/hCM;EACE,oCAAA;ADkiCR;;ACziCM;EACE,oCAAA;AD4iCR;;AC1iCM;EACE,yBAAA;AD6iCR;;AC3iCM;EACE,oCAAA;AD8iCR;;ACrjCM;EACE,oCAAA;ADwjCR;;ACtjCM;EACE,yBAAA;ADyjCR;;ACvjCM;EACE,oCAAA;AD0jCR;;ACjkCM;EACE,oCAAA;ADokCR;;AClkCM;EACE,yBAAA;ADqkCR;;ACnkCM;EACE,oCAAA;ADskCR;;AC7kCM;EACE,oCAAA;ADglCR;;AC9kCM;EACE,yBAAA;ADilCR;;AC/kCM;EACE,oCAAA;ADklCR;;ACzlCM;EACE,oCAAA;AD4lCR;;AC1lCM;EACE,yBAAA;AD6lCR;;AC3lCM;EACE,oCAAA;AD8lCR;;ACrmCM;EACE,oCAAA;ADwmCR;;ACtmCM;EACE,yBAAA;ADymCR;;ACvmCM;EACE,oCAAA;AD0mCR;;ACjnCM;EACE,oCAAA;ADonCR;;AClnCM;EACE,yBAAA;ADqnCR;;ACnnCM;EACE,oCAAA;ADsnCR;;AC7nCM;EACE,oCAAA;ADgoCR;;AC9nCM;EACE,yBAAA;ADioCR;;AC/nCM;EACE,oCAAA;ADkoCR;;ACnpCM;EACE,oCAAA;ADspCR;;ACppCM;EACE,yBAAA;ADupCR;;ACrpCM;EACE,oCAAA;ADwpCR;;ACrpCM;EACE,oCAAA;ADwpCR;;ACtpCM;EACE,yBAAA;ADypCR;;ACvpCM;EACE,oCAAA;AD0pCR;;ACjqCM;EACE,oCAAA;ADoqCR;;AClqCM;EACE,yBAAA;ADqqCR;;ACnqCM;EACE,oCAAA;ADsqCR;;AC7qCM;EACE,oCAAA;ADgrCR;;AC9qCM;EACE,yBAAA;ADirCR;;AC/qCM;EACE,oCAAA;ADkrCR;;ACzrCM;EACE,oCAAA;AD4rCR;;AC1rCM;EACE,yBAAA;AD6rCR;;AC3rCM;EACE,oCAAA;AD8rCR;;ACrsCM;EACE,oCAAA;ADwsCR;;ACtsCM;EACE,yBAAA;ADysCR;;ACvsCM;EACE,oCAAA;AD0sCR;;ACjtCM;EACE,oCAAA;ADotCR;;ACltCM;EACE,yBAAA;ADqtCR;;ACntCM;EACE,oCAAA;ADstCR;;AC7tCM;EACE,oCAAA;ADguCR;;AC9tCM;EACE,yBAAA;ADiuCR;;AC/tCM;EACE,oCAAA;ADkuCR;;ACzuCM;EACE,oCAAA;AD4uCR;;AC1uCM;EACE,yBAAA;AD6uCR;;AC3uCM;EACE,oCAAA;AD8uCR;;ACrvCM;EACE,oCAAA;ADwvCR;;ACtvCM;EACE,yBAAA;ADyvCR;;ACvvCM;EACE,oCAAA;AD0vCR;;ACjwCM;EACE,oCAAA;ADowCR;;AClwCM;EACE,yBAAA;ADqwCR;;ACnwCM;EACE,oCAAA;ADswCR;;AC7wCM;EACE,oCAAA;ADgxCR;;AC9wCM;EACE,yBAAA;ADixCR;;AC/wCM;EACE,oCAAA;ADkxCR;;ACzxCM;EACE,oCAAA;AD4xCR;;AC1xCM;EACE,yBAAA;AD6xCR;;AC3xCM;EACE,oCAAA;AD8xCR;;ACryCM;EACE,oCAAA;ADwyCR;;ACtyCM;EACE,yBAAA;ADyyCR;;ACvyCM;EACE,oCAAA;AD0yCR;;AC3zCM;EACE,oCAAA;AD8zCR;;AC5zCM;EACE,yBAAA;AD+zCR;;AC7zCM;EACE,oCAAA;ADg0CR;;AC7zCM;EACE,oCAAA;ADg0CR;;AC9zCM;EACE,yBAAA;ADi0CR;;AC/zCM;EACE,oCAAA;ADk0CR;;ACz0CM;EACE,oCAAA;AD40CR;;AC10CM;EACE,yBAAA;AD60CR;;AC30CM;EACE,oCAAA;AD80CR;;ACr1CM;EACE,oCAAA;ADw1CR;;ACt1CM;EACE,yBAAA;ADy1CR;;ACv1CM;EACE,oCAAA;AD01CR;;ACj2CM;EACE,oCAAA;ADo2CR;;ACl2CM;EACE,yBAAA;ADq2CR;;ACn2CM;EACE,oCAAA;ADs2CR;;AC72CM;EACE,oCAAA;ADg3CR;;AC92CM;EACE,yBAAA;ADi3CR;;AC/2CM;EACE,oCAAA;ADk3CR;;ACz3CM;EACE,oCAAA;AD43CR;;AC13CM;EACE,yBAAA;AD63CR;;AC33CM;EACE,oCAAA;AD83CR;;ACr4CM;EACE,oCAAA;ADw4CR;;ACt4CM;EACE,yBAAA;ADy4CR;;ACv4CM;EACE,oCAAA;AD04CR;;ACj5CM;EACE,oCAAA;ADo5CR;;ACl5CM;EACE,yBAAA;ADq5CR;;ACn5CM;EACE,oCAAA;ADs5CR;;AC75CM;EACE,oCAAA;ADg6CR;;AC95CM;EACE,yBAAA;ADi6CR;;AC/5CM;EACE,oCAAA;ADk6CR;;ACz6CM;EACE,oCAAA;AD46CR;;AC16CM;EACE,yBAAA;AD66CR;;AC36CM;EACE,oCAAA;AD86CR;;ACr7CM;EACE,oCAAA;ADw7CR;;ACt7CM;EACE,yBAAA;ADy7CR;;ACv7CM;EACE,oCAAA;AD07CR;;ACj8CM;EACE,oCAAA;ADo8CR;;ACl8CM;EACE,yBAAA;ADq8CR;;ACn8CM;EACE,oCAAA;ADs8CR;;AC78CM;EACE,oCAAA;ADg9CR;;AC98CM;EACE,yBAAA;ADi9CR;;AC/8CM;EACE,oCAAA;ADk9CR;;ACn+CM;EACE,oCAAA;ADs+CR;;ACp+CM;EACE,yBAAA;ADu+CR;;ACr+CM;EACE,oCAAA;ADw+CR;;ACr+CM;EACE,oCAAA;ADw+CR;;ACt+CM;EACE,yBAAA;ADy+CR;;ACv+CM;EACE,oCAAA;AD0+CR;;ACj/CM;EACE,oCAAA;ADo/CR;;ACl/CM;EACE,yBAAA;ADq/CR;;ACn/CM;EACE,oCAAA;ADs/CR;;AC7/CM;EACE,oCAAA;ADggDR;;AC9/CM;EACE,yBAAA;ADigDR;;AC//CM;EACE,oCAAA;ADkgDR;;ACzgDM;EACE,oCAAA;AD4gDR;;AC1gDM;EACE,yBAAA;AD6gDR;;AC3gDM;EACE,oCAAA;AD8gDR;;ACrhDM;EACE,oCAAA;ADwhDR;;ACthDM;EACE,yBAAA;ADyhDR;;ACvhDM;EACE,oCAAA;AD0hDR;;ACjiDM;EACE,oCAAA;ADoiDR;;ACliDM;EACE,yBAAA;ADqiDR;;ACniDM;EACE,oCAAA;ADsiDR;;AC7iDM;EACE,oCAAA;ADgjDR;;AC9iDM;EACE,yBAAA;ADijDR;;AC/iDM;EACE,oCAAA;ADkjDR;;ACzjDM;EACE,oCAAA;AD4jDR;;AC1jDM;EACE,yBAAA;AD6jDR;;AC3jDM;EACE,oCAAA;AD8jDR;;ACrkDM;EACE,oCAAA;ADwkDR;;ACtkDM;EACE,yBAAA;ADykDR;;ACvkDM;EACE,oCAAA;AD0kDR;;ACjlDM;EACE,oCAAA;ADolDR;;ACllDM;EACE,yBAAA;ADqlDR;;ACnlDM;EACE,oCAAA;ADslDR;;AC7lDM;EACE,oCAAA;ADgmDR;;AC9lDM;EACE,yBAAA;ADimDR;;AC/lDM;EACE,oCAAA;ADkmDR;;ACzmDM;EACE,oCAAA;AD4mDR;;AC1mDM;EACE,yBAAA;AD6mDR;;AC3mDM;EACE,oCAAA;AD8mDR;;ACrnDM;EACE,oCAAA;ADwnDR;;ACtnDM;EACE,yBAAA;ADynDR;;ACvnDM;EACE,oCAAA;AD0nDR;;AC3oDM;EACE,oCAAA;AD8oDR;;AC5oDM;EACE,yBAAA;AD+oDR;;AC7oDM;EACE,oCAAA;ADgpDR;;AC7oDM;EACE,oCAAA;ADgpDR;;AC9oDM;EACE,yBAAA;ADipDR;;AC/oDM;EACE,oCAAA;ADkpDR;;ACzpDM;EACE,oCAAA;AD4pDR;;AC1pDM;EACE,yBAAA;AD6pDR;;AC3pDM;EACE,oCAAA;AD8pDR;;ACrqDM;EACE,oCAAA;ADwqDR;;ACtqDM;EACE,yBAAA;ADyqDR;;ACvqDM;EACE,oCAAA;AD0qDR;;ACjrDM;EACE,oCAAA;ADorDR;;AClrDM;EACE,yBAAA;ADqrDR;;ACnrDM;EACE,oCAAA;ADsrDR;;AC7rDM;EACE,oCAAA;ADgsDR;;AC9rDM;EACE,yBAAA;ADisDR;;AC/rDM;EACE,oCAAA;ADksDR;;ACzsDM;EACE,oCAAA;AD4sDR;;AC1sDM;EACE,yBAAA;AD6sDR;;AC3sDM;EACE,oCAAA;AD8sDR;;ACrtDM;EACE,oCAAA;ADwtDR;;ACttDM;EACE,yBAAA;ADytDR;;ACvtDM;EACE,oCAAA;AD0tDR;;ACjuDM;EACE,oCAAA;ADouDR;;ACluDM;EACE,yBAAA;ADquDR;;ACnuDM;EACE,oCAAA;ADsuDR;;AC7uDM;EACE,oCAAA;ADgvDR;;AC9uDM;EACE,yBAAA;ADivDR;;AC/uDM;EACE,oCAAA;ADkvDR;;ACzvDM;EACE,oCAAA;AD4vDR;;AC1vDM;EACE,yBAAA;AD6vDR;;AC3vDM;EACE,oCAAA;AD8vDR;;ACrwDM;EACE,oCAAA;ADwwDR;;ACtwDM;EACE,yBAAA;ADywDR;;ACvwDM;EACE,oCAAA;AD0wDR;;ACjxDM;EACE,oCAAA;ADoxDR;;AClxDM;EACE,yBAAA;ADqxDR;;ACnxDM;EACE,oCAAA;ADsxDR;;AC7xDM;EACE,oCAAA;ADgyDR;;AC9xDM;EACE,yBAAA;ADiyDR;;AC/xDM;EACE,oCAAA;ADkyDR;;ACnzDM;EACE,oCAAA;ADszDR;;ACpzDM;EACE,yBAAA;ADuzDR;;ACrzDM;EACE,oCAAA;ADwzDR;;ACrzDM;EACE,oCAAA;ADwzDR;;ACtzDM;EACE,yBAAA;ADyzDR;;ACvzDM;EACE,oCAAA;AD0zDR;;ACj0DM;EACE,oCAAA;ADo0DR;;ACl0DM;EACE,yBAAA;ADq0DR;;ACn0DM;EACE,oCAAA;ADs0DR;;AC70DM;EACE,oCAAA;ADg1DR;;AC90DM;EACE,yBAAA;ADi1DR;;AC/0DM;EACE,oCAAA;ADk1DR;;ACz1DM;EACE,oCAAA;AD41DR;;AC11DM;EACE,yBAAA;AD61DR;;AC31DM;EACE,oCAAA;AD81DR;;ACr2DM;EACE,oCAAA;ADw2DR;;ACt2DM;EACE,yBAAA;ADy2DR;;ACv2DM;EACE,oCAAA;AD02DR;;ACj3DM;EACE,oCAAA;ADo3DR;;ACl3DM;EACE,yBAAA;ADq3DR;;ACn3DM;EACE,oCAAA;ADs3DR;;AC73DM;EACE,oCAAA;ADg4DR;;AC93DM;EACE,yBAAA;ADi4DR;;AC/3DM;EACE,oCAAA;ADk4DR;;ACz4DM;EACE,oCAAA;AD44DR;;AC14DM;EACE,yBAAA;AD64DR;;AC34DM;EACE,oCAAA;AD84DR;;ACr5DM;EACE,oCAAA;ADw5DR;;ACt5DM;EACE,yBAAA;ADy5DR;;ACv5DM;EACE,oCAAA;AD05DR;;ACj6DM;EACE,oCAAA;ADo6DR;;ACl6DM;EACE,yBAAA;ADq6DR;;ACn6DM;EACE,oCAAA;ADs6DR;;AC76DM;EACE,oCAAA;ADg7DR;;AC96DM;EACE,yBAAA;ADi7DR;;AC/6DM;EACE,oCAAA;ADk7DR;;ACz7DM;EACE,oCAAA;AD47DR;;AC17DM;EACE,yBAAA;AD67DR;;AC37DM;EACE,oCAAA;AD87DR;;ACr8DM;EACE,oCAAA;ADw8DR;;ACt8DM;EACE,yBAAA;ADy8DR;;ACv8DM;EACE,oCAAA;AD08DR;;AC39DM;EACE,oCAAA;AD89DR;;AC59DM;EACE,yBAAA;AD+9DR;;AC79DM;EACE,oCAAA;ADg+DR;;AC79DM;EACE,oCAAA;ADg+DR;;AC99DM;EACE,yBAAA;ADi+DR;;AC/9DM;EACE,oCAAA;ADk+DR;;ACz+DM;EACE,oCAAA;AD4+DR;;AC1+DM;EACE,yBAAA;AD6+DR;;AC3+DM;EACE,oCAAA;AD8+DR;;ACr/DM;EACE,oCAAA;ADw/DR;;ACt/DM;EACE,yBAAA;ADy/DR;;ACv/DM;EACE,oCAAA;AD0/DR;;ACjgEM;EACE,oCAAA;ADogER;;AClgEM;EACE,yBAAA;ADqgER;;ACngEM;EACE,oCAAA;ADsgER;;AC7gEM;EACE,oCAAA;ADghER;;AC9gEM;EACE,yBAAA;ADihER;;AC/gEM;EACE,oCAAA;ADkhER;;ACzhEM;EACE,oCAAA;AD4hER;;AC1hEM;EACE,yBAAA;AD6hER;;AC3hEM;EACE,oCAAA;AD8hER;;ACriEM;EACE,oCAAA;ADwiER;;ACtiEM;EACE,yBAAA;ADyiER;;ACviEM;EACE,oCAAA;AD0iER;;ACjjEM;EACE,oCAAA;ADojER;;ACljEM;EACE,yBAAA;ADqjER;;ACnjEM;EACE,oCAAA;ADsjER;;AC7jEM;EACE,oCAAA;ADgkER;;AC9jEM;EACE,yBAAA;ADikER;;AC/jEM;EACE,oCAAA;ADkkER;;ACzkEM;EACE,oCAAA;AD4kER;;AC1kEM;EACE,yBAAA;AD6kER;;AC3kEM;EACE,oCAAA;AD8kER;;ACrlEM;EACE,oCAAA;ADwlER;;ACtlEM;EACE,yBAAA;ADylER;;ACvlEM;EACE,oCAAA;AD0lER;;ACjmEM;EACE,oCAAA;ADomER;;AClmEM;EACE,yBAAA;ADqmER;;ACnmEM;EACE,oCAAA;ADsmER;;AC7mEM;EACE,oCAAA;ADgnER;;AC9mEM;EACE,yBAAA;ADinER;;AC/mEM;EACE,oCAAA;ADknER;;ACnoEM;EACE,oCAAA;ADsoER;;ACpoEM;EACE,yBAAA;ADuoER;;ACroEM;EACE,oCAAA;ADwoER;;ACroEM;EACE,oCAAA;ADwoER;;ACtoEM;EACE,yBAAA;ADyoER;;ACvoEM;EACE,oCAAA;AD0oER;;ACjpEM;EACE,oCAAA;ADopER;;AClpEM;EACE,yBAAA;ADqpER;;ACnpEM;EACE,oCAAA;ADspER;;AC7pEM;EACE,oCAAA;ADgqER;;AC9pEM;EACE,yBAAA;ADiqER;;AC/pEM;EACE,oCAAA;ADkqER;;ACzqEM;EACE,oCAAA;AD4qER;;AC1qEM;EACE,yBAAA;AD6qER;;AC3qEM;EACE,oCAAA;AD8qER;;ACrrEM;EACE,oCAAA;ADwrER;;ACtrEM;EACE,yBAAA;ADyrER;;ACvrEM;EACE,oCAAA;AD0rER;;ACjsEM;EACE,oCAAA;ADosER;;AClsEM;EACE,yBAAA;ADqsER;;ACnsEM;EACE,oCAAA;ADssER;;AC7sEM;EACE,oCAAA;ADgtER;;AC9sEM;EACE,yBAAA;ADitER;;AC/sEM;EACE,oCAAA;ADktER;;ACztEM;EACE,oCAAA;AD4tER;;AC1tEM;EACE,yBAAA;AD6tER;;AC3tEM;EACE,oCAAA;AD8tER;;ACruEM;EACE,oCAAA;ADwuER;;ACtuEM;EACE,yBAAA;ADyuER;;ACvuEM;EACE,oCAAA;AD0uER;;ACjvEM;EACE,oCAAA;ADovER;;AClvEM;EACE,yBAAA;ADqvER;;ACnvEM;EACE,oCAAA;ADsvER;;AC7vEM;EACE,oCAAA;ADgwER;;AC9vEM;EACE,yBAAA;ADiwER;;AC/vEM;EACE,oCAAA;ADkwER;;ACzwEM;EACE,oCAAA;AD4wER;;AC1wEM;EACE,yBAAA;AD6wER;;AC3wEM;EACE,oCAAA;AD8wER;;ACrxEM;EACE,oCAAA;ADwxER;;ACtxEM;EACE,yBAAA;ADyxER;;ACvxEM;EACE,oCAAA;AD0xER;;AC3yEM;EACE,oCAAA;AD8yER;;AC5yEM;EACE,yBAAA;AD+yER;;AC7yEM;EACE,oCAAA;ADgzER;;AC7yEM;EACE,oCAAA;ADgzER;;AC9yEM;EACE,yBAAA;ADizER;;AC/yEM;EACE,oCAAA;ADkzER;;ACzzEM;EACE,oCAAA;AD4zER;;AC1zEM;EACE,yBAAA;AD6zER;;AC3zEM;EACE,oCAAA;AD8zER;;ACr0EM;EACE,oCAAA;ADw0ER;;ACt0EM;EACE,yBAAA;ADy0ER;;ACv0EM;EACE,oCAAA;AD00ER;;ACj1EM;EACE,oCAAA;ADo1ER;;ACl1EM;EACE,yBAAA;ADq1ER;;ACn1EM;EACE,oCAAA;ADs1ER;;AC71EM;EACE,oCAAA;ADg2ER;;AC91EM;EACE,yBAAA;ADi2ER;;AC/1EM;EACE,oCAAA;ADk2ER;;ACz2EM;EACE,oCAAA;AD42ER;;AC12EM;EACE,yBAAA;AD62ER;;AC32EM;EACE,oCAAA;AD82ER;;ACr3EM;EACE,oCAAA;ADw3ER;;ACt3EM;EACE,yBAAA;ADy3ER;;ACv3EM;EACE,oCAAA;AD03ER;;ACj4EM;EACE,oCAAA;ADo4ER;;ACl4EM;EACE,yBAAA;ADq4ER;;ACn4EM;EACE,oCAAA;ADs4ER;;AC74EM;EACE,oCAAA;ADg5ER;;AC94EM;EACE,yBAAA;ADi5ER;;AC/4EM;EACE,oCAAA;ADk5ER;;ACz5EM;EACE,oCAAA;AD45ER;;AC15EM;EACE,yBAAA;AD65ER;;AC35EM;EACE,oCAAA;AD85ER;;ACr6EM;EACE,oCAAA;ADw6ER;;ACt6EM;EACE,yBAAA;ADy6ER;;ACv6EM;EACE,oCAAA;AD06ER;;ACj7EM;EACE,oCAAA;ADo7ER;;ACl7EM;EACE,yBAAA;ADq7ER;;ACn7EM;EACE,oCAAA;ADs7ER;;AC77EM;EACE,oCAAA;ADg8ER;;AC97EM;EACE,yBAAA;ADi8ER;;AC/7EM;EACE,oCAAA;ADk8ER;;ACn9EM;EACE,oCAAA;ADs9ER;;ACp9EM;EACE,yBAAA;ADu9ER;;ACr9EM;EACE,oCAAA;ADw9ER;;ACr9EM;EACE,oCAAA;ADw9ER;;ACt9EM;EACE,yBAAA;ADy9ER;;ACv9EM;EACE,oCAAA;AD09ER;;ACj+EM;EACE,oCAAA;ADo+ER;;ACl+EM;EACE,yBAAA;ADq+ER;;ACn+EM;EACE,oCAAA;ADs+ER;;AC7+EM;EACE,oCAAA;ADg/ER;;AC9+EM;EACE,yBAAA;ADi/ER;;AC/+EM;EACE,oCAAA;ADk/ER;;ACz/EM;EACE,oCAAA;AD4/ER;;AC1/EM;EACE,yBAAA;AD6/ER;;AC3/EM;EACE,oCAAA;AD8/ER;;ACrgFM;EACE,oCAAA;ADwgFR;;ACtgFM;EACE,yBAAA;ADygFR;;ACvgFM;EACE,oCAAA;AD0gFR;;ACjhFM;EACE,oCAAA;ADohFR;;AClhFM;EACE,yBAAA;ADqhFR;;ACnhFM;EACE,oCAAA;ADshFR;;AC7hFM;EACE,oCAAA;ADgiFR;;AC9hFM;EACE,yBAAA;ADiiFR;;AC/hFM;EACE,oCAAA;ADkiFR;;ACziFM;EACE,oCAAA;AD4iFR;;AC1iFM;EACE,yBAAA;AD6iFR;;AC3iFM;EACE,oCAAA;AD8iFR;;ACrjFM;EACE,oCAAA;ADwjFR;;ACtjFM;EACE,yBAAA;ADyjFR;;ACvjFM;EACE,oCAAA;AD0jFR;;ACjkFM;EACE,oCAAA;ADokFR;;AClkFM;EACE,yBAAA;ADqkFR;;ACnkFM;EACE,oCAAA;ADskFR;;AC7kFM;EACE,oCAAA;ADglFR;;AC9kFM;EACE,yBAAA;ADilFR;;AC/kFM;EACE,oCAAA;ADklFR;;ACzlFM;EACE,oCAAA;AD4lFR;;AC1lFM;EACE,yBAAA;AD6lFR;;AC3lFM;EACE,oCAAA;AD8lFR;;ACrmFM;EACE,oCAAA;ADwmFR;;ACtmFM;EACE,yBAAA;ADymFR;;ACvmFM;EACE,oCAAA;AD0mFR;;AC3nFM;EACE,oCAAA;AD8nFR;;AC5nFM;EACE,yBAAA;AD+nFR;;AC7nFM;EACE,oCAAA;ADgoFR;;AC7nFM;EACE,oCAAA;ADgoFR;;AC9nFM;EACE,yBAAA;ADioFR;;AC/nFM;EACE,oCAAA;ADkoFR;;ACzoFM;EACE,oCAAA;AD4oFR;;AC1oFM;EACE,yBAAA;AD6oFR;;AC3oFM;EACE,oCAAA;AD8oFR;;ACrpFM;EACE,oCAAA;ADwpFR;;ACtpFM;EACE,yBAAA;ADypFR;;ACvpFM;EACE,oCAAA;AD0pFR;;ACjqFM;EACE,oCAAA;ADoqFR;;AClqFM;EACE,yBAAA;ADqqFR;;ACnqFM;EACE,oCAAA;ADsqFR;;AC7qFM;EACE,oCAAA;ADgrFR;;AC9qFM;EACE,yBAAA;ADirFR;;AC/qFM;EACE,oCAAA;ADkrFR;;ACzrFM;EACE,oCAAA;AD4rFR;;AC1rFM;EACE,yBAAA;AD6rFR;;AC3rFM;EACE,oCAAA;AD8rFR;;ACrsFM;EACE,oCAAA;ADwsFR;;ACtsFM;EACE,yBAAA;ADysFR;;ACvsFM;EACE,oCAAA;AD0sFR;;ACjtFM;EACE,oCAAA;ADotFR;;ACltFM;EACE,yBAAA;ADqtFR;;ACntFM;EACE,oCAAA;ADstFR;;AC7tFM;EACE,oCAAA;ADguFR;;AC9tFM;EACE,yBAAA;ADiuFR;;AC/tFM;EACE,oCAAA;ADkuFR;;ACzuFM;EACE,oCAAA;AD4uFR;;AC1uFM;EACE,yBAAA;AD6uFR;;AC3uFM;EACE,oCAAA;AD8uFR;;ACrvFM;EACE,oCAAA;ADwvFR;;ACtvFM;EACE,yBAAA;ADyvFR;;ACvvFM;EACE,oCAAA;AD0vFR;;ACjwFM;EACE,oCAAA;ADowFR;;AClwFM;EACE,yBAAA;ADqwFR;;ACnwFM;EACE,oCAAA;ADswFR;;AC7wFM;EACE,oCAAA;ADgxFR;;AC9wFM;EACE,yBAAA;ADixFR;;AC/wFM;EACE,oCAAA;ADkxFR;;ACnyFM;EACE,oCAAA;ADsyFR;;ACpyFM;EACE,yBAAA;ADuyFR;;ACryFM;EACE,oCAAA;ADwyFR;;ACryFM;EACE,oCAAA;ADwyFR;;ACtyFM;EACE,yBAAA;ADyyFR;;ACvyFM;EACE,oCAAA;AD0yFR;;ACjzFM;EACE,oCAAA;ADozFR;;AClzFM;EACE,yBAAA;ADqzFR;;ACnzFM;EACE,oCAAA;ADszFR;;AC7zFM;EACE,oCAAA;ADg0FR;;AC9zFM;EACE,yBAAA;ADi0FR;;AC/zFM;EACE,oCAAA;ADk0FR;;ACz0FM;EACE,oCAAA;AD40FR;;AC10FM;EACE,yBAAA;AD60FR;;AC30FM;EACE,oCAAA;AD80FR;;ACr1FM;EACE,oCAAA;ADw1FR;;ACt1FM;EACE,yBAAA;ADy1FR;;ACv1FM;EACE,oCAAA;AD01FR;;ACj2FM;EACE,oCAAA;ADo2FR;;ACl2FM;EACE,yBAAA;ADq2FR;;ACn2FM;EACE,oCAAA;ADs2FR;;AC72FM;EACE,oCAAA;ADg3FR;;AC92FM;EACE,yBAAA;ADi3FR;;AC/2FM;EACE,oCAAA;ADk3FR;;ACz3FM;EACE,oCAAA;AD43FR;;AC13FM;EACE,yBAAA;AD63FR;;AC33FM;EACE,oCAAA;AD83FR;;ACr4FM;EACE,oCAAA;ADw4FR;;ACt4FM;EACE,yBAAA;ADy4FR;;ACv4FM;EACE,oCAAA;AD04FR;;AC35FM;EACE,oCAAA;AD85FR;;AC55FM;EACE,yBAAA;AD+5FR;;AC75FM;EACE,oCAAA;ADg6FR;;AC75FM;EACE,oCAAA;ADg6FR;;AC95FM;EACE,yBAAA;ADi6FR;;AC/5FM;EACE,oCAAA;ADk6FR;;ACz6FM;EACE,oCAAA;AD46FR;;AC16FM;EACE,yBAAA;AD66FR;;AC36FM;EACE,oCAAA;AD86FR;;ACr7FM;EACE,oCAAA;ADw7FR;;ACt7FM;EACE,yBAAA;ADy7FR;;ACv7FM;EACE,oCAAA;AD07FR;;ACj8FM;EACE,oCAAA;ADo8FR;;ACl8FM;EACE,yBAAA;ADq8FR;;ACn8FM;EACE,oCAAA;ADs8FR;;AC78FM;EACE,oCAAA;ADg9FR;;AC98FM;EACE,yBAAA;ADi9FR;;AC/8FM;EACE,oCAAA;ADk9FR;;ACz9FM;EACE,oCAAA;AD49FR;;AC19FM;EACE,yBAAA;AD69FR;;AC39FM;EACE,oCAAA;AD89FR;;ACr+FM;EACE,oCAAA;ADw+FR;;ACt+FM;EACE,yBAAA;ADy+FR;;ACv+FM;EACE,oCAAA;AD0+FR;;ACj/FM;EACE,oCAAA;ADo/FR;;ACl/FM;EACE,yBAAA;ADq/FR;;ACn/FM;EACE,oCAAA;ADs/FR;;AC7/FM;EACE,oCAAA;ADggGR;;AC9/FM;EACE,yBAAA;ADigGR;;AC//FM;EACE,oCAAA;ADkgGR;;ACnhGM;EACE,oCAAA;ADshGR;;ACphGM;EACE,yBAAA;ADuhGR;;ACrhGM;EACE,oCAAA;ADwhGR;;ACrhGM;EACE,oCAAA;ADwhGR;;ACthGM;EACE,yBAAA;ADyhGR;;ACvhGM;EACE,oCAAA;AD0hGR;;ACjiGM;EACE,oCAAA;ADoiGR;;ACliGM;EACE,yBAAA;ADqiGR;;ACniGM;EACE,oCAAA;ADsiGR;;AC7iGM;EACE,oCAAA;ADgjGR;;AC9iGM;EACE,yBAAA;ADijGR;;AC/iGM;EACE,oCAAA;ADkjGR;;ACzjGM;EACE,oCAAA;AD4jGR;;AC1jGM;EACE,yBAAA;AD6jGR;;AC3jGM;EACE,oCAAA;AD8jGR;;ACrkGM;EACE,oCAAA;ADwkGR;;ACtkGM;EACE,yBAAA;ADykGR;;ACvkGM;EACE,oCAAA;AD0kGR;;ACjlGM;EACE,oCAAA;ADolGR;;ACllGM;EACE,yBAAA;ADqlGR;;ACnlGM;EACE,oCAAA;ADslGR;;AC7lGM;EACE,oCAAA;ADgmGR;;AC9lGM;EACE,yBAAA;ADimGR;;AC/lGM;EACE,oCAAA;ADkmGR;;ACzmGM;EACE,oCAAA;AD4mGR;;AC1mGM;EACE,yBAAA;AD6mGR;;AC3mGM;EACE,oCAAA;AD8mGR;;ACrnGM;EACE,oCAAA;ADwnGR;;ACtnGM;EACE,yBAAA;ADynGR;;ACvnGM;EACE,oCAAA;AD0nGR;;AC5mGE;EACE,oCAAA;AD+mGJ;;AC7mGE;EACE,yBAAA;ADgnGJ;;ACpnGE;EACE,oCAAA;ADunGJ;;ACrnGE;EACE,yBAAA;ADwnGJ;;AC5nGE;EACE,wCAAA;AD+nGJ;;AC7nGE;EACE,6BAAA;ADgoGJ;;AExqGA;;;;EAAA;AAKC;;EAEC,YAAA;EACA,gBAAA;EACA,sEAAA;EACA,gBAAA;EACA,iCAAA;EACA,gBAAA;EACA,oBAAA;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;EAEA,gBAAA;EACA,cAAA;EACA,WAAA;EAEA,qBAAA;EACA,kBAAA;EACA,iBAAA;EACA,aAAA;AFyqGF;;AEtqGC;;EAEC,0BAAA,EAAA,YAAA;AFyqGF;;AEtqGC,gBAAA;AACA;EACC,oBAAA;EACA,mCAAA,EAAA,YAAA;EACA,qCAAA;EACA,eAAA;EACA,cAAA;EACA,YAAA;AFyqGF;;AEtqGC;EACC,YAAA;EACA,6BAAA,EAAA,YAAA;AFyqGF;;AEtqGC;EACC,WAAA;EACA,6BAAA,EAAA,YAAA;AFyqGF;;AEtqGC,0BAAA;AACA;;EAEC,iBAAA;EACA,kCAAA,EAAA,YAAA;AFyqGF;;AEtqGC;;EAEC,iBAAA;EACA,kCAAA,EAAA,YAAA;AFyqGF;;AEtqGC,gBAAA;AACA;EACC,oBAAA;EACA,oCAAA,EAAA,YAAA;EACA,4CAAA;EACA,4BAAA;EACA,mBAAA;AFyqGF;;AEtqGC;;;;EAIC,sBAAA,EAAA,YAAA;AFyqGF;;AEtqGC;EACC,YAAA;AFyqGF;;AEtqGC;EACC,YAAA;AFyqGF;;AEtqGC;;;;EAIC,wBAAA,EAAA,YAAA;AFyqGF;;AEtqGC;;;;;;EAMC,wBAAA,EAAA,YAAA;AFyqGF;;AEtqGC;;;;;;;;;;;EAWC,wBAAA,EAAA,YAAA;AFyqGF;;AEtqGC;EACC,yBAAA,EAAA,YAAA;AFyqGF;;AEtqGC;;EAEC,wBAAA,EAAA,YAAA;AFyqGF;;AEtqGC;;EAEC,iBAAA;AFyqGF;;AEvqGC;EACC,kBAAA;AF0qGF;;AEvqGC;EACC,YAAA;AF0qGF;;AEvqGC;EACC,sBAAA;EACA,kBAAA;AF0qGF;;AEvqGC,WAAA;AACA;;;EAGC,wBAAA,EAAA,YAAA;AF0qGF;;AEvqGC,kFAAA;AACA;EACC,kBAAA;EACA,UAAA;AF0qGF;;AEvqGC;EACC,kCAAA,EAAA,YAAA;EACA,qFAAA,EAAA,YAAA;EACA,yCAAA,EAAA,YAAA;EACA,sCAAA,EAAA,YAAA;EACA,OAAA;EACA,oBAAA;EACA,kBAAA,EAAA,iCAAA;EACA,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,QAAA;EACA,gBAAA;EACA,UAAA;AF0qGF;;AEvqGC;;EAEC,oCAAA,EAAA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,wBAAA,EAAA,YAAA;EACA,yBAAA;EACA,6BAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,iBAAA;EACA,UAAA;EACA,qBAAA;AF0qGF;;AEvqGC;EACC,aAAA;EACA,uBAAA;EACA,SAAA;AF0qGF;;AG12GA;EACE,iCAAA;EACA,eAAA;EACA,YAAA;EACA,iBAAA;EACA,mBAAA;EACA,aAAA;EACA,kBAAA;EACA,iBAAA;EACC,kCAAA;AH62GH;;AG12GA;EACI,cAAA;EACA,aAAA;EACA,kBAAA;AH62GJ;;AG12GA;EACI,WAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;AH62GJ;;AG12GA;EACE,YAAA;EACA,mBAAA;EACA,aAAA;EACA,kBAAA;EACA,SAAA;EACA,iBAAA;EACA,WAAA;EACA,gBAAA;AH62GF;AG32GI;EACI,4BAAA;EACA,cAAA;AH62GR;AGx2GI;EACI,aAAA;EACA,cAAA;AH02GR;;AGp2GA,4BAAA;AAEA;EACE,WAAA;EACA,YAAA;EACA,mBAAA;EACA,cAAA;EACA,kBAAA;EACA,iBAAA;AHs2GF;;AGn2GA;EACE,YAAA;EACA,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,SAAA;EACA,eAAA;AHs2GF;;AGn2GA;EACE,iBAAA;EACA,WAAA;EACA,mBAAA;EACA,aAAA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;AHs2GF;;AGn2GA,cAAA;AAEA;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;EACA,gBAAA;EACA,YAAA;AHq2GF;;AGl2GA;EACE,mBAAA;AHq2GF;;AGl2GA;EACE,mBAAA;AHq2GF;;AGl2GA;EACE,mBAAA;AHq2GF;;AGl2GA;EACE,aAAA;AHq2GF;;AGl2GA;EACE,YAAA;EACA,MAAA;AHq2GF;;AGl2GA;EACI,WAAA;EACA,iBAAA;EACA,aAAA;AHq2GJ;;AI79GA;EACE,iBAAA;EACA,eAAA;EACA,aAAA;EACA,kBAAA;EACA,WAAA;EACA,gBAAA;EACA,iBAAA;EACA,UAAA;EACA,kBAAA;EACA,kBAAA;EACA,2BAAA;EACA,gBAAA;EACA,OAAA;EACA,MAAA;EACA,oBAAA;EACA,kBAAA;EACA,yBAAA;AJg+GF;;AI79GA;EACE,kBAAA;EACA,UAAA;EACA,WAAA;EACA,WAAA;EACA,0BAAA;EACA,yBAAA;EACA,WAAA;EACA,wBAAA;EACA,kBAAA;AJg+GF;;AK5/GA;EACE,2BAAA;AL+/GF;;AK5/GA,0BAAA;AACA;EACE,+GAAA;AL+/GF;;AK5/GA;EACE,+GAAA;AL+/GF;;AK3/GA,0BAAA;AACA;EACE,gHAAA;AL8/GF;;AK1/GA,2BAAA;AACA;EACE,qHAAA;AL6/GF;;AKz/GA,mBAAA;AACA;EACE,uHAAA;AL4/GF;;AKx/GA,mBAAA;AACA;EACE,wHAAA;AL2/GF;;AKv/GA,mBAAA;AACA;EACI,yGACA;ALy/GJ;;AKp/GA;EACE,4BAAA;ALu/GF;AKr/GE;EACE,6EAAA;ALu/GJ;;AMziHA;;;;;;;EAAA;AAUA;EACE,kBAAA;EACA,eAAA;EACA,qBAAA;EACA,gBAAA;EACA,iBAAA;EACA,wCAAA;EACA,sBAAA;EACA,UAAA;EACA,yBAAA;AN0iHF;AMxiHE;EACE,kBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EACA,UAAA;EAEA,8BAAA;EACA,6BAAA;EACA,uCAAA;EACA,mBAAA;EACA,oBAAA;ANyiHJ;AMriHE;EACE,2CAAA;ANuiHJ;AMriHE;EACE,wCAAA;ANuiHJ;AMriHE;EACE,yCAAA;ANuiHJ;AMriHE;EACE,wCAAA;ANuiHJ;AMriHE;EACE,yCAAA;ANuiHJ;AMriHE;EACE,wCAAA;ANuiHJ;AMriHE;EACE,wCAAA;ANuiHJ;AMniHE;EACE,SAAA;EACA,kBAAA;EACA,kBAAA;EACA,uBAAA;EACA,gBAAA;ANqiHJ;AMliHE;EACE,kBAAA;EACA,WAAA;ANoiHJ;;AMhiHA;EACE,2BAAA;ANmiHF;;AMhiHA;EACE,wBAAA;EACA,2EAAA;ANmiHF;;AMhiHA;EACE,oBAAA;EACA,sBAAA;ANmiHF;AMjiHE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,UAAA;ANmiHJ;;AM/hHA;EACE,kBAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,kBAAA;EACA,wBAAA;ANkiHF;;AM/hHA;EACE,cAAA;ANkiHF;;AM/hHA,oCAAA;AACA;EACE,WAAA;ANkiHF;;AOlpHA;EAQE,eAAA;EACA,OAAA;EACA,QAAA;EACA,yBAAA;EACA,UAAA;EACA,eAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;EAEA,kBAAA;EACA,yBAAA;AP6oHF;AO/pHE;EACE,aAAA;APiqHJ;AO9oHE;EArBF;IAsBG,UAAA;EPipHD;AACF;AO/oHE;EACE,aAAA;APipHJ;AO9oHE;EACE,aAAA;APgpHJ;AO9oHE;EACE,eAAA;APgpHJ;AO7oHE;EACE,0BAAA;EACA,yBAAA;EACA,gBAAA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;AP+oHJ;AO7oHI;EACE,aAAA;AP+oHN;AO5oHE;EACE,0BAAA;EACA,yBAAA;EACA,gBAAA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;AP8oHJ;AO5oHI;EACE,aAAA;AP8oHN;;AO1oHA;EACE,eAAA;EACA,YAAA;EACA,SAAA;EACA,OAAA;EACA,SAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;EACA,gBAAA;EACA,aAAA;EAEA,oBAAA;AP4oHF;;AOxoHA;EACE,UAAA;EACA,WAAA;AP2oHF;AOzoHE;EACE,kBAAA;EACA,yBAAA;EACA,gBAAA;EACA,WAAA;EACA,gBAAA;AP2oHJ;AOxoHE;EACE,wCAAA;EACA,kBAAA;EACA,SAAA;AP0oHJ;;AOroHA;EACE,SAAA;EACA,aAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,gBAAA;EACA,4BAAA;APwoHF;;AQhvHA;;;EAGE,SAAA;EACA,YAAA;ARmvHF;;AQ/uHA;EACE,SAAA;EACA,UAAA;EACA,sBAAA;ARkvHF;;AQ/uHA;EACE,2BAAA,EAAA,eAAA;EACA,yBAAA,EAAA,WAAA;EACA,wBAAA,EAAA,mBAAA;EACA,sBAAA,EAAA,4BAAA;EACA,qBAAA,EAAA,2BAAA;EACA,iBAAA;EACA;iFAAA;ARmvHF;;AQ9uHE;EACE,eAAA;EACA,qBAAA;ARivHJ;AQ/uHI;EACE,qBAAA;ARivHN;;AQ5uHA;EACC,cC7BY;ED8BZ,qBAAA;EAGC,wCAAA;AR6uHF;;AQ1uHA;EACE,WAAA;AR6uHF;;AQ1uHA;EACE,iBAAA;AR6uHF;;AQ3uHA;EACE,kBAAA;AR8uHF;;AQ3uHA;EACE,aAAA;EACA,mBAAA;AR8uHF;;AQ1uHA;EACE,mBAAA;AR6uHF;;AQxuHA;EACE,2CAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;AR2uHF;AQ1uHE;EACE,sBCoKkB;EDnKlB,mBCwKqB;EDvKrB,kBAAA;EACA,SAAA;EACA,gCAAA;AR4uHJ;AQzuHM;EACE,sBC+JoB;AT4kH5B;AQtuHI;EACE,gBAAA;EACA,kBAAA;EACA,kBAAA;ARwuHN;AQpuHM;;EAEE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,UAAA;EACA,qBAAA;EACA,sBAAA;ARsuHR;AQnuHM;EACE,eAAA;EACA,iBAAA;EACA,WAAA;EACA,sBAAA;EACA,kBAAA;ARquHR;AQjuHM;EACE,eAAA;ARmuHR;AQhuHM;EACE,SAAA;ARkuHR;AQ/tHM;EACE,kBAAA;EACA,SAAA;EACA,WAAA;ARiuHR;AQ3tHI;EACE,mBAAA;AR6tHN;AQ1tHI;EACE,yBCnIY;EDoIZ,cCuGoB;ATqnH1B;AQ1tHM;EACE,WAAA;AR4tHR;AQvtHE;EACE,cAAA;EACA,iBAAA;EACA,cC/Ic;ATw2HlB;AQttHM;EACE,sBCyFoB;AT+nH5B;AQltHI;EACE,sBC+EgB;ED9EhB,gCAAA;EACA,kBAAA;ARotHN;AQjtHI;EACE,kBAAA;ARmtHN;AQhtHI;EACE,kBAAA;ARktHN;;AQ3sHA;EACE,YAAA;EACA,cC7KgB;AT23HlB;;AQ3sHA;EACE,SAAA;EACA,YAAA;AR8sHF;;AQ1sHA;EACE,eAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,aAAA;EACA,YAAA;EACA,sBAAA;EACA,oCAAA;EACA,YAAA;EACA,aAAA;EACA,uBAAA;AR6sHF;AQ3sHE;EACE,gBAAA;AR6sHJ;AQ5sHI;EACE,gBAAA;AR8sHN;;AQ/rHA;;sBAAA;AAIE;EADF;IAEI,wBAAA;ERksHF;AACF;;AQ/rHE;EADF;IAEI,wBAAA;ERmsHF;AACF;;AQhsHE;EADF;IAEI,wBAAA;ERosHF;AACF;;AQjsHE;EADF;IAEI,wBAAA;ERqsHF;AACF;;AQlsHE;EADF;IAEI,wBAAA;ERssHF;AACF;;AQnsHE;EADF;IAEI,wBAAA;ERusHF;AACF;;AQpsHE;EADF;IAEI,yBAAA;ERwsHF;AACF;;AQrsHE;EADF;IAEI,yBAAA;ERysHF;AACF;;AQtsHE;EADF;IAEI,yBAAA;ER0sHF;AACF;;AQvsHE;EADF;IAEI,yBAAA;ER2sHF;AACF;;AQxsHE;EADF;IAEI,yBAAA;ER4sHF;AACF;;AQzsHE;EADF;IAEI,yBAAA;ER6sHF;AACF;;AQvsHE;EADF;IAEI,kBAAA;ER2sHF;AACF;;AQjsHA;;mBAAA;AAIA;EACE,wBAAA;ARmsHF;;AQ/rHA;EACE,gBAAA;ARksHF;;AQhsHA;EACE,iBAAA;ARmsHF;;AQjsHA;EACE,kBAAA;ARosHF;;AQjsHA;EACE,sBAAA;ARosHF;;AQlsHA;EACE,uBAAA;ARqsHF;;AQjsHA;EACE,iBAAA;ARosHF;;AQjsHA;EACE,kBAAA;ARosHF;;AQjsHA;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;ARosHF;;AQjsHA;EACE,cAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;ARosHF;;AQjsHA;EACE,qBAAA;ARosHF;;AU7hIA;EACE,eAAA;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,eAAA;EACA,iBDSa;ECRb,YDQa;ECPb,cAAA;EACA,YAAA;EACA,sBAAA;AVgiIF;AU9hIE;EACE,gBAAA;EACA,iBAAA;EACA,WAAA;EACA,yBDZc;ECad,kBAAA;AVgiIJ;AU7hIE;EACE,eAAA;AV+hIJ;AU5hIE;EACE,qCAAA;AV8hIJ;;AUzhIA;EACE,qBAAA;EACA,WAAA;EACA,gBAAA;EACA,iBDnBa;ECoBb,YDpBa;ECqBb,4BAAA;AV4hIF;;AUxhIA;EACE,gCAAA;AV2hIF;;AUxhIA;EACE,iBAAA;AV2hIF;;AUxhIA;EACE,kBAAA;AV2hIF;;AUxhIA;EACE,qBAAA;EACA,WAAA;EACA,iBAAA;AV2hIF;;AWnlIA;EAOE,qBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EACA,iBAAA;EACA,eAAA;EACA,mBAAA;EACA,yBFQc;EEPd,kBFUY;EETZ,iBFSY;ATukId;AWhmIE;EACE,aAAA;EACA,yBFsBkB;EErBlB,WAAA;AXkmIJ;AWnlIE;EACE,WAAA;EACA,qBAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;AXqlIJ;AWllIE;EACE,eAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;EACA,iBAAA;AXolIJ;;AWhlIA;EACE,YAAA;EACA,gCAAA;EACA,gBAAA;EACA,iBF4Ba;EE3Bb,gBAAA;EACA,aAAA;EACA,oBAAA;AXmlIF;AWjlIE;EACE,gCAAA;EACA,6BAAA;AXmlIJ;AWhlIE;EACE,YAAA;AXklIJ;AW/kIE;EACE,gBAAA;EACA,SAAA;EACA,yBAAA;EACA,qBAAA;EACA,eFOc;EENd,YFfW;EEgBX,iBAAA;EACA,UAAA;EACA,SAAA;EACA,qBAAA;EACA,uBAAA;AXilIJ;AW9kIE;EACE,oBAAA;EACA,2BAAA;AXglIJ;AW5kIE;EACE,aAAA;EACA,gBAAA;AX8kIJ;;AWzkIA;EACE,iBAAA;EACA,UAAA;EACA,wBAAA;AX4kIF;;AW1kIA;EACE,iBAAA;EACA,4BAAA;AX6kIF;;AYrqIA;EACE,0BAAA;EACA,4BAAA;EACA,2BAAA;EACA,2CAAA;AZwqIF;;AYpqIA;EAKE,aAAA;EACA,eAAA;EACA,wCAAA;EACA,gBAAA;EACA,aAAA;EACA,sBHkCyB;EGjCzB,6BAAA;AZmqIF;AY7qIE;EACE,UAAA;AZ+qIJ;AYpqIE;EACE,WAAA;EACA,iBAAA;EACA,qBAAA;EACA,kBAAA;EACA,kBAAA;AZsqIJ;;AYnqIA;EACE,sBAAA;AZsqIF;;AYnqIA;EACE,aAAA;EACA,6BAAA;EACA,sBAAA;EACA,aAAA;AZsqIF;;AY/pIE;;EACE,YAAA;EACA,gBAAA;AZmqIJ;AYjqII;;EAAK,UAAA;AZqqIT;AYlqIE;;EACE,6BAAA;EACA,YAAA;EACA,oBAAA;EACA,eAAA;EACA,eAAA;AZqqIJ;AYnqII;;EAAU,qCAAA;AZuqId;AYtqII;;EAAI,oBAAA;AZ0qIR;AYvqIE;;EACE,SAAA;EACA,sBHZuB;ATsrI3B;AYxqII;;EACE,wBAAA;AZ2qIN;;AYlqIA;EACE,YAAA;EACA,gBAAA;AZqqIF;AYpqIE;EACE,6EAAA;EAEA,cAAA;EACA,6DAAA;AZqqIJ;AYnqIE;EACE,8EAAA;EACA,cAAA;AZqqIJ;;Aa/uIA;EACI,2CAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;AbkvIJ;AahvII;EACE,sBJyNgB;EIxNhB,mBJ6NmB;EI5NnB,kBAAA;EACA,SAAA;EACA,gCAAA;AbkvIN;Aa/uIM;EACE,gBAAA;EACA,kBAAA;EACA,kBAAA;AbivIR;Aa9uIQ;;EAEE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,UAAA;EACA,qBAAA;EACA,sBAAA;AbgvIV;Aa9uIQ;EACE,eAAA;EACA,iBAAA;EACA,WAAA;EACA,sBAAA;EACA,kBAAA;AbgvIV;Aa5uIQ;EACE,eAAA;Ab8uIV;Aa3uIQ;EACE,SAAA;Ab6uIV;Aa1uIQ;EACE,kBAAA;EACA,SAAA;EACA,WAAA;Ab4uIV;AatuIM;EACE,mBAAA;AbwuIR;AaruIM;EACE,yBJtEU;EIuEV,cJoKkB;ATmkI1B;AaruIQ;EACE,WAAA;AbuuIV;AanuII;EACE,cAAA;EACA,iBAAA;EACA,cJjFY;ATszIlB;AanuIQ;EACE,sBJwJkB;AT6kI5B;Aa/tIM;EACE,sBJ8Ic;EI7Id,gCAAA;EACA,kBAAA;AbiuIR;Aa/tIM;EACE,kBAAA;AbiuIR;Aa/tIM;EACE,kBAAA;AbiuIR;Aa9tII;EACE,YAAA;EACA,cJxGY;ATw0IlB;;Ac50IA;EACE,0BLyFa;ATsvIf;;Ac50IA;EACE,aAAA;EACA,yBL4KwB;ATmqI1B;;Ac50IA;EACE,iBL2DgB;EK1DhB,cLgDmB;AT+xIrB;;Ae31IA;+EAAA;AAGA,uBAAA;AAEA;EACE,cNsEuB;ATsxIzB;;Aez1IA,gBAAA;AAEA;;;;;;;;;;;;;EAeE,6BAAA;EACA,YAAA;EACA,gCNiCa;EMhCb,gBAAA;EACA,aAAA;EACA,YNca;EMbb,WAAA;EACA,eNiCgB;EMhChB,iBNkCa;EMjCb,UNkCc;EMjCd,gBAAA;EACA,uBAAA;EACA,wCAAA;Afy1IF;Aet1IE;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,0BN4BmB;EM3BnB,6CN6BoB;ATk1IxB;Ae32IE;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,0BNqBmB;AT+2IvB;Aeh4IE;;;;;;;;;;;;;EACE,gCAAA;EACA,6BAAA;Af84IJ;Ae14IE;;;;;;;;;;;;;EACE,cNxDc;ATg9IlB;Ael4IE;;;;;;;;;;;;;EACE,cN9EY;AT89IhB;Ael4IE;;;;;;;;;;;;;EACE,cN5FU;AT4+Id;Ae54IE;;;;;;;;;;;;;EACE,WAAA;Af05IJ;Aeh5IA,iCAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;EACE,gCAAA;EACA,6BAAA;Af06IF;;Aex6IA;;;;;;;;;;;;;;;;;;;;;;;;;EACE,gCN9CqB;EM+CrB,6BAAA;Afm8IF;;Aej8IA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACE,kBAAA;EACA,iBAAA;EACA,oBAAA;Afo/IF;;Ael/IA;;;;;;;;;;;;;;;;;;;;;;;;;EACE,2BAAA;EACA,cN5Hc;ATyoJhB;;Ae3gJA;;;;;;;;;;;;;;;;;;;;;;;;;EACE,yBAAA;EACA,cN/HY;ATqqJd;;AepiJA;;;;;;;;;;;;;EACE,cAAA;EACA,WAAA;EACA,kBAAA;EACA,SAAA;EACA,OAAA;EACA,UAAA;EACA,sDAAA;AfmjJF;;Ae9iJA;EAyBE,kBAAA;EACA,gBAAA;EACA,mBAAA;AfyhJF;AeljJE;EACE,qBAAA;EACA,sBAAA;EACA,gBAAA;AfojJJ;AeljJI;;EAEE,mBAAA;AfojJN;Ae9iJI;EACE,YAAA;AfgjJN;Ae7iJI;;EAEE,+BAAA;Af+iJN;AeviJE;EACE,cNtHiB;EMuHjB,kBAAA;EACA,MAAA;EACA,OAAA;EACA,eAAA;EACA,YAAA;EACA,wDAAA;EACA,yBAAA;EACA,mBAAA;EACA,2BAAA;AfyiJJ;AeviJI;EACE,uCAAA;EACA,qBAAA;AfyiJN;AepiJE;EAGE,uCAAA;EACA,qBAAA;AfoiJJ;AejiJE;EAQE,kBAAA;EACA,gBAAA;EACA,cAAA;EACA,eAAA;EACA,0BAAA;Af4hJJ;AeviJI;EACE,UAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;AfyiJN;Ae9hJE;EACE,kBAAA;EACA,WNhLW;EMiLX,eNnJc;EMoJd,sBAAA;AfgiJJ;Ae7hJI;EAAW,cN7NG;AT6vJlB;Ae7hJE;;;;;;EAME,iBAAA;EACA,UAAA;EACA,wBAAA;Af+hJJ;Ae5hJE;EAAkB,iBAAA;Af+hJpB;Ae7hJE;EACE;IACE,UAAA;IACA,wBAAA;Ef+hJJ;AACF;Ae5hJE;EACE;IACE,UAAA;IACA,wBAAA;Ef8hJJ;AACF;;AezhJA,iBAAA;AAEA;EACE,cAAA;EACA,oBAAA;EACA,iCAAA;Af2hJF;AezhJE;EACE,eAAA;EACA,kBAAA;EACA,wBAAA;EACA,SAAA;EACA,gBAAA;Af2hJJ;AexhJE;EACE,sBNpNe;EMqNf,SAAA;EACA,gBAAA;EACA,WAAA;Af0hJJ;AexhJI;EAGE,WAAA;AfwhJN;AephJE;EACE,eAAA;EACA,UAAA;AfshJJ;AenhJE;EAEE,kBAAA;EACA,MAAA;EACA,WAAA;EACA,kBAAA;EACA,eAAA;EACA,eN/Nc;EMgOd,sBAAA;AfohJJ;;Ae/gJA,aAAA;AAGA;EACE,WAAA;EACA,YNxQa;EMyQb,6BAAA;AfghJF;Ae9gJE;EACE,mBAAA;EACA,kBAAA,EAAA,8BAAA;EACA,0BAAA,EAAA,yCAAA;EACA,YAAA;EACA,gBNhRW;EMiRX,sBAAA;AfghJJ;;Ae1gJA;EACE,kBAAA;EACA,qBAAA;EACA,qBAAA;EACA,yBAAA,EAAA,6CAAA;EACA,mBAAA,EAAA,yCAAA;EAGA,kBAAA;EACA,MAAA;EACA,WAAA;Af2gJF;;AevgJA,iBAAA;AAGI;EAAa,WAAA;AfygJjB;AevgJI;EAGE,gBAAA;AfugJN;;AelgJA,sBAAA;AACA;EACE,gBAAA;AfqgJF;;AgBt2JA;+EAAA;AAIA;;EAEE,kBAAA;EACA,UAAA;EACA,oBAAA;AhBu2JF;;AgBp2JA;;EAEE,kBAAA;EACA,kBAAA;EACA,eAAA;EACA,qBAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,sBAAA;EACA,iBAAA;AhBu2JF;;AgBp2JA;;EAEE,WAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,sBAAA;AhBu2JF;;AgBp2JA,qBAAA;AACA;;;;;;EAME,kBAAA;AhBu2JF;;AgBp2JA;;EAEE,yBAAA;AhBu2JF;;AgBp2JA;EACE,mBAAA;AhBu2JF;;AgBp2JA,mBAAA;AACA;EACE,6BAAA;AhBu2JF;;AgBp2JA;;;EAGE,yBPiBa;ATs1Jf;;AgBp2JA;;EAEE,yBPhEgB;ATu6JlB;;AgBp2JA;EACE,sBAAA;AhBu2JF;;AgBp2JA,mBAAA;AACA;EACE,qBAAA;AhBu2JF;;AgBp2JA,mBAAA;AACA;EACE,yCAAA;AhBu2JF;;AgBp2JA,4BAAA;AACA;EACE,qCAAA;AhBu2JF;;AgBp2JA;EACE,YAAA;EACA,qCPtBqB;AT63JvB;;AgBp2JA,mBAAA;AACA;;EAEE,6BAAA;EACA,iCP7BqB;ATo4JvB;;AgBp2JA;EACE,0BPjCqB;ATw4JvB;;AgBp2JA;EACE,iCPrCqB;AT44JvB;;AgBp2JA;EACE,qCPzCqB;EO0CrB,qBPzC2B;ATg5J7B;;AiBx9JA;+EAAA;AAGA,4BAAA;AACA;;EAEE,kBAAA;EACA,UAAA;EACA,oBAAA;AjB09JF;;AiBt9JA;EAaE,oBAAA;AjB68JF;AiBx9JE;EACE,kBAAA;EACA,kBAAA;EACA,eAAA;EACA,qBAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,iBAAA;AjB09JJ;AiBt9JE;EAEE,WAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,yBAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;AjBu9JJ;AiBp9JE;EACE,SAAA;EACA,mBAAA;AjBs9JJ;AiBn9JE;EACE,YAAA;EACA,qCRuBmB;AT87JvB;AiBj9JE;EACE,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,yCAAA;EACA,oCAAA;AjBm9JJ;;AiB98JE;EACE,SAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,iCAAA;EACA,kCAAA;EACA,+BRYW;EQXX,gCRWW;EQVX,wBAAA;EACA,2BAAA;EACA,2BAAA;AjBi9JJ;AiB98JE;EACE,2CAAA;EACA,4CAAA;AjBg9JJ;;AiB58JA,2BAAA;AAEE;EACE,UAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,+BRVW;EQWX,mBAAA;EACA,wBAAA;EACA,2BAAA;EACA,2BAAA;AjB88JJ;AiB18JE;EACE,2CAAA;EACA,6BAAA;AjB48JJ;;AiBr8JE;EACE,kBAAA;AjBw8JJ;AiBr8JE;;EAEE,WAAA;EACA,OAAA;EACA,kBAAA;EACA,qCAAA;EACA,kHAAA;EACA,UAAA;AjBu8JJ;AiBn8JE;EACE,QAAA;EACA,SAAA;EACA,6BAAA;EACA,SAAA;EACA,SAAA;EACA,yBAAA;EACA,2BAAA;AjBq8JJ;AiBl8JE;EACE,YAAA;EACA,WAAA;EACA,6BAAA;EACA,yBAAA;EACA,QAAA;EACA,UAAA;AjBo8JJ;AiB/7JI;EACE,MAAA;EACA,SAAA;EACA,UAAA;EACA,YAAA;EACA,iCAAA;EACA,kCAAA;EACA,4BAAA;EACA,6BAAA;EACA,yBAAA;EACA,2BAAA;AjBi8JN;AiB97JI;EACE,MAAA;EACA,WAAA;EACA,YAAA;EACA,yBAAA;EACA,yBR7JY;EQ8JZ,UAAA;AjBg8JN;AiB37JE;EACE,kBAAA;EACA,qBR1FgB;EQ2FhB,oCAAA;AjB67JJ;AiB17JE;EACE,kBAAA;EACA,yBR3Kc;EQ4Kd,qBR5Kc;ATwmKlB;AiBx7JE;EACE,6BAAA;EACA,6BAAA;AjB07JJ;AiBv7JE;EACE,yBAAA;EACA,yBRpHyB;AT6iK7B;AiBt7JE;EACE,6BAAA;AjBw7JJ;AiBr7JE;EACE,yBR5HyB;EQ6HzB,qBR7HyB;ATojK7B;;AkB5nKA;+EAAA;AAGA;;EAEE,wCAAA;EACA,iBAAA;AlB8nKF;;AkB3nKA;EACE,eAAA;AlB8nKF;;AkB3nKA;EACE,UAAA;EACA,QAAA;EACA,SAAA;AlB8nKF;AkB5nKE;EACE,yBTkFsB;AT4iK1B;AkB5nKI;EACE,UAAA;AlB8nKN;AkB3nKI;EACE,yBTrBY;ATkpKlB;;AkBxnKA;EACE,WAAA;EACA,qBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,qCTkE0B;ESjE1B,mBTkEc;EShEd,gCAAA;EACA,sBAAA;EACA,cAAA;AlB0nKF;AkBxnKE;EACE,WAAA;EACA,kBAAA;EACA,qBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,OAAA;EACA,SAAA;EACA,2FAAA;AlB0nKJ;AkBvnKE;EACE,0CAAA;AlBynKJ;AkBtnKE;EACE,yBTyCkB;ESxClB,yHAAA;AlBwnKJ;;AkBnnKA;;EAEE,qBAAA;EACA,0CAAA;AlBsnKF;;AkBnnKA;;EAEE,qBAAA;EACA,qCAAA;AlBsnKF;;AkBlnKA;EACE,eAAA;EACA,qCAAA;AlBqnKF;;AkBlnKA;;EAEE,yBTf2B;ATooK7B;;AmB5sKA;+EAAA;AAGA;EAAS,aAAA;AnB+sKT;;AmB9sKA;EAAyB,cAAA;AnBktKzB;;AmBhtKA;EACE,0CVmFkB;EUlFlB,WAAA;EACA,YVsFe;EUrFf,yBV+Ec;EU9Ed,kBVqFc;EUpFd,YViCa;ATkrKf;;AmBhtKA;EACE,kBAAA;AnBmtKF;;AmBhtKA;EAqCE,kBAAA;AnB+qKF;AmBzrKE;EAEE,WAAA;EACA,oBAAA;AnB0rKJ;AmBjrKE;EAIE,kBAAA;EACA,eAAA;EACA,6BAAA;EACA,YAAA;EACA,gCVLW;EUMX,aAAA;EACA,YVvBW;EUwBX,iBVxBW;EUyBX,WAAA;EACA,eVLc;EUMd,iBVJW;EUKX,UAAA;EACA,cAAA;EACA,iBAAA;EACA,UAAA;AnBgrKJ;AmBjsKI;EACE,gCAAA;AnBmsKN;AmBhrKE;EACE,kBAAA;EACA,QAAA;EACA,MAAA;EACA,SAAA;EACA,cAAA;EACA,UAAA;EACA,yBAAA;AnBkrKJ;AmB/qKE;EACE,kBAAA;EACA,UAAA;EACA,iBVtBc;ATusKlB;;AmB5qKA;EACE,0BV3BqB;AT0sKvB;;AmB3qKE;EACE,0BVhCmB;AT8sKvB;AmB5qKE;EACE,yBVnCmB;ATitKvB;;AmB1qKA;EACE,0BVxCqB;EUyCrB,eAAA;EACA,iBAAA;AnB6qKF;;AmB1qKA;EACE,yBVpBsB;ATisKxB;;AmB1qKA;;;EAGE,yBV1BsB;EU2BtB,6BAAA;AnB6qKF;;AmBzqKE;EACE,qCVpCkB;ATgtKtB;;AmBtqKI;EACE,qCV5CgB;ATqtKtB;AmBtqKI;EACE,qCV9CmB;ATstKzB;;AmBlqKA;EACE,iBAAA;EACA,UAAA;EACA,wBAAA;AnBqqKF;;AmBlqKA;EAAkB,iBAAA;AnBsqKlB;;AmBlqKE;EAGE,gBAAA;EACA,YAAA;AnBmqKJ;;AmB3pKE;EACE,yBAAA;AnB8pKJ;AmB3pKE;EACE,yBAAA;AnB6pKJ;AmB1pKE;EACE,kBAAA;AnB4pKJ;;AoB70KA;+EAAA;AAGA;EACE,kBAAA;ApB+0KF;AoB70KE;EACE,gBAAA;EACA,kBAAA;ApB+0KJ;AoB50KE;EAAkB,WAAA;ApB+0KpB;AoB70KE;EACE,WAAA;EACA,YX8BW;EW7BX,iBX6BW;ATkzKf;AoB50KE;EACE,eAAA;ApB80KJ;AoB30KE;EAOE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,SAAA;EACA,UAAA;EACA,eAAA;EACA,eAAA;EACA,UAAA;EACA,wBAAA;ApBu0KJ;AoBt1KI;EACE,aAAA;ApBw1KN;;AqBn3KA;+EAAA;AAGA;EACE,kBAAA;ArBq3KF;;AqBl3KA;;EAGE,eAAA;ArBo3KF;;AqBj3KA;EACE,kBAAA;EACA,6BAAA;EACA,YAAA;EACA,aAAA;EACA,WAAA;EACA,cAAA;EACA,UAAA;ArBo3KF;AqBl3KE;EACE,aAAA;ArBo3KJ;;AqBh3KA;EACE,kBAAA;EACA,SAAA;EACA,OAAA;EACA,YAAA;EACA,SAAA;EACA,QAAA;EACA,kBAAA;EACA,yBZ9BgB;EY+BhB,gBAAA;EAEA,yBAAA;EACA,yBAAA;ArBk3KF;AqBh3KE;EACE,cAAA;EACA,WAAA;EACA,kBAAA;EACA,cZxCc;EYyCd,YAAA;EACA,wBAAA;ArBk3KJ;AqB/2KE;EACE,4BAAA;ArBi3KJ;AqB/2KI;EACE,WZQa;EYPb,iBAAA;EACA,eAAA;EACA,eAAA;ArBi3KN;;AqB31KA;EACE,wBAAA;ArB81KF;;AqB31KA;EAnBE,WZsBa;EYrBb,mBAAA;EACA,YAAA;ArBk3KF;;AqB71KA;EAjBE,YAAA;EACA,YZaa;EYZb,WZaY;EYZZ,kBAAA;EACA,mBZrEgB;EYsEhB,2BAAA;EAcA,wBAAA;EACA,yBZrFgB;EYsFhB,yBAAA;EACA,kBAAA;ArBq2KF;;AqBj2KA;EACE,+CAAA;ArBo2KF;;AqBh2KA;EACE,gDAAA;EACA,uBAAA;EAEA,yCAAA;ArBk2KF;;AqB/1KA;EA5CE,WZsBa;EYrBb,mBAAA;EACA,YAAA;ArB+4KF;;AqBj2KA;EACE,SAAA;ArBo2KF;;AqBj2KA;EA9CE,YAAA;EACA,YZaa;EYZb,WZaY;EYZZ,kBAAA;EACA,mBZrEgB;EYsEhB,2BAAA;EA2CA,gBAAA;ArBy2KF;;AqBr2KA;EACE,uBAAA;EACA,oBAAA;ArBw2KF;;AqBr2KA;EACE,+CAAA;ArBw2KF;;AqBp2KA;EACE,WZ/Ca;EYkDb,uBAAA;EAGA,yBAAA;EACA,mBAAA;EAEA,4BAAA;EACA,kBAAA;ArBk2KF;;AqB/1KA;EACE,gBAAA;ArBk2KF;;AqB/1KA;EACE,gBAAA;ArBk2KF;;AqB/1KA;EApFE,YAAA;EACA,YZaa;EYZb,WZaY;EYZZ,kBAAA;EACA,mBZrEgB;EYsEhB,2BAAA;ArBu7KF;;AqBp2KA;EACE,+CAAA;ArBu2KF;;AsBtgLA;EAEE,0BAAA;EACA,iBAAA;EAEA,yCAAA;EACA,4BAAA;EACA,2BAAA;EACA,4BAAA;EACA,sBAAA;AtBugLF;;AuB/gLA;EAAI,sBAAA;AvBmhLJ;;AuBjhLA;EAAO,uBAAA;AvBqhLP;;AuBnhLA;EACE,YANW;EAOX,aAPW;EAQX,sBAAA;EACA,YAAA;EACA,kBAAA;AvBshLF;;AuBnhLA;EACE,YAdW;EAeX,aAfW;EAgBX,kBAAA;EACA,4BAAA;EACA,6BAAA;EACA,wBAAA;AvBshLF;;AuBnhLA;EAAoB,0CAAA;AvBuhLpB;;AuBthLA;EAAoB,4CAAA;AvB0hLpB;;AuBzhLA;EAAoB,6CAAA;AvB6hLpB;;AuB5hLA;EAAoB,2CAAA;AvBgiLpB;;AuB/hLA;EAAoB,4CAAA;AvBmiLpB;;AuBliLA;EAAoB,2CAAA;AvBsiLpB;;AuBpiLA;EACE,kBAAA;EACA,YA/BW;EAgCX,aAhCW;EAiCX,uBAAA;EACA,kBAlCW;EAmCX,eAAA;EACA,iBAAA;EACA,YAAA;EACA,kBAAA;AvBuiLF;;AuBpiLA;EAAsB,mCAAA;AvBwiLtB;;AuBviLA;EAAsB,oCAAA;AvB2iLtB;;AuB1iLA;EAAsB,qCAAA;AvB8iLtB;;AuB7iLA;EAAsB,qCAAA;AvBijLtB;;AuBhjLA;EAAsB,qCAAA;AvBojLtB;;AuBnjLA;EAAsB,qCAAA;AvBujLtB;;AuBrjLA;EAAsB,0CAAA;AvByjLtB;;AuBxjLA;EAAsB,2CAAA;AvB4jLtB;;AuB3jLA;EAAsB,4CAAA;AvB+jLtB;;AuB9jLA;EAAsB,4CAAA;AvBkkLtB;;AuBjkLA;EAAsB,2CAAA;AvBqkLtB;;AuBpkLA;EAAsB,4CAAA;AvBwkLtB;;AuBtkLA;EAAQ,kBAAA;AvB0kLR;;AwBhoLA;EACE,cAAA;EACA,iBAAA;EACA,UAAA;AxBmoLF;;AwBjoLA;EACE;IACE,UAAA;ExBooLF;AACF;AwBloLA;EACE;IACE,UAAA;ExBooLF;AACF;AwBloLA;EACE,oBAAA;EACA,qBAAA;AxBooLF;;AwBjoLA;EACE,iBAAA;EACA,oBAAA;AxBooLF;AwBloLE;EACE,UAAA;AxBooLJ;AwBloLE;EACE,iBAAA;AxBooLJ;AwBloLE;EACE,cAAA;AxBooLJ;;AwB5mLA;EACE,iBAAA;EACA,kBAAA;EACA,mBAAA;AxB+mLF;AwB5mLE;EACE,WAAA;EACA,cAAA;EACA,WAAA;AxB8mLJ;AwB3mLE;EACE,WAAA;EACA,sBAAA;EACA,iBAAA;EACA,eAAA;AxB6mLJ;AwB3mLI;EAEE,kBAAA;AxB4mLN;AwBtmLM;EACE,oBAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxBqpLF;AwB5mLM;EACE,qBAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxB2pLF;AwBlnLM;EACE,UAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxBiqLF;AwBxnLM;EACE,qBAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxBuqLF;AwB9nLM;EACE,qBAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxB6qLF;AwBpoLM;EACE,UAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxBmrLF;AwB1oLM;EACE,qBAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxByrLF;AwBhpLM;EACE,qBAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxB+rLF;AwBtpLM;EACE,UAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxBqsLF;AwB5pLM;EACE,qBAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxB2sLF;AwBlqLM;EACE,qBAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxBitLF;AwBxqLM;EACE,WAFK;EA1CX,iBAAA;EACA,UAAA;EACA,WAAA;AxButLF;AwBptLE;EACE,0BA8CS;AxBwqLb;AwBptLE;EACE,oBA2CS;AxB2qLb;AwBptLE;EACE,mBAwCS;AxB8qLb;AwB7tLE;EACE,2BA8CS;AxBirLb;AwB7tLE;EACE,qBA2CS;AxBorLb;AwB7tLE;EACE,oBAwCS;AxBurLb;AwBtuLE;EACE,gBA8CS;AxB0rLb;AwBtuLE;EACE,UA2CS;AxB6rLb;AwBtuLE;EACE,SAwCS;AxBgsLb;AwB/uLE;EACE,2BA8CS;AxBmsLb;AwB/uLE;EACE,qBA2CS;AxBssLb;AwB/uLE;EACE,oBAwCS;AxBysLb;AwBxvLE;EACE,2BA8CS;AxB4sLb;AwBxvLE;EACE,qBA2CS;AxB+sLb;AwBxvLE;EACE,oBAwCS;AxBktLb;AwBjwLE;EACE,gBA8CS;AxBqtLb;AwBjwLE;EACE,UA2CS;AxBwtLb;AwBjwLE;EACE,SAwCS;AxB2tLb;AwB1wLE;EACE,2BA8CS;AxB8tLb;AwB1wLE;EACE,qBA2CS;AxBiuLb;AwB1wLE;EACE,oBAwCS;AxBouLb;AwBnxLE;EACE,2BA8CS;AxBuuLb;AwBnxLE;EACE,qBA2CS;AxB0uLb;AwBnxLE;EACE,oBAwCS;AxB6uLb;AwB5xLE;EACE,gBA8CS;AxBgvLb;AwB5xLE;EACE,UA2CS;AxBmvLb;AwB5xLE;EACE,SAwCS;AxBsvLb;AwBryLE;EACE,2BA8CS;AxByvLb;AwBryLE;EACE,qBA2CS;AxB4vLb;AwBryLE;EACE,oBAwCS;AxB+vLb;AwB9yLE;EACE,2BA8CS;AxBkwLb;AwB9yLE;EACE,qBA2CS;AxBqwLb;AwB9yLE;EACE,oBAwCS;AxBwwLb;AwBvzLE;EACE,iBA8CS;AxB2wLb;AwBvzLE;EACE,WA2CS;AxB8wLb;AwBvzLE;EACE,UAwCS;AxBixLb;AwB5wLI;EAKI;IACE,oBAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExB00LA;EwB9wLM;IACE,qBAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExBg1LA;EwBpxLM;IACE,UAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExBs1LA;EwB1xLM;IACE,qBAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExB41LA;EwBhyLM;IACE,qBAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExBk2LA;EwBtyLM;IACE,UAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExBw2LA;EwB5yLM;IACE,qBAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExB82LA;EwBlzLM;IACE,qBAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExBo3LA;EwBxzLM;IACE,UAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExB03LA;EwB9zLM;IACE,qBAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExBg4LA;EwBp0LM;IACE,qBAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExBs4LA;EwB10LM;IACE,WAFK;IA7Db,iBAAA;IACA,UAAA;IACA,WAAA;ExB44LA;EwBz4LA;IACE,0BAiEW;ExB00Lb;EwBz4LA;IACE,oBA8DW;ExB60Lb;EwBz4LA;IACE,mBA2DW;ExBg1Lb;EwBl5LA;IACE,2BAiEW;ExBm1Lb;EwBl5LA;IACE,qBA8DW;ExBs1Lb;EwBl5LA;IACE,oBA2DW;ExBy1Lb;EwB35LA;IACE,gBAiEW;ExB41Lb;EwB35LA;IACE,UA8DW;ExB+1Lb;EwB35LA;IACE,SA2DW;ExBk2Lb;EwBp6LA;IACE,2BAiEW;ExBq2Lb;EwBp6LA;IACE,qBA8DW;ExBw2Lb;EwBp6LA;IACE,oBA2DW;ExB22Lb;EwB76LA;IACE,2BAiEW;ExB82Lb;EwB76LA;IACE,qBA8DW;ExBi3Lb;EwB76LA;IACE,oBA2DW;ExBo3Lb;EwBt7LA;IACE,gBAiEW;ExBu3Lb;EwBt7LA;IACE,UA8DW;ExB03Lb;EwBt7LA;IACE,SA2DW;ExB63Lb;EwB/7LA;IACE,2BAiEW;ExBg4Lb;EwB/7LA;IACE,qBA8DW;ExBm4Lb;EwB/7LA;IACE,oBA2DW;ExBs4Lb;EwBx8LA;IACE,2BAiEW;ExBy4Lb;EwBx8LA;IACE,qBA8DW;ExB44Lb;EwBx8LA;IACE,oBA2DW;ExB+4Lb;EwBj9LA;IACE,gBAiEW;ExBk5Lb;EwBj9LA;IACE,UA8DW;ExBq5Lb;EwBj9LA;IACE,SA2DW;ExBw5Lb;EwB19LA;IACE,2BAiEW;ExB25Lb;EwB19LA;IACE,qBA8DW;ExB85Lb;EwB19LA;IACE,oBA2DW;ExBi6Lb;EwBn+LA;IACE,2BAiEW;ExBo6Lb;EwBn+LA;IACE,qBA8DW;ExBu6Lb;EwBn+LA;IACE,oBA2DW;ExB06Lb;EwB5+LA;IACE,iBAiEW;ExB66Lb;EwB5+LA;IACE,WA8DW;ExBg7Lb;EwB5+LA;IACE,UA2DW;ExBm7Lb;AACF;AwB96LI;EAKI;IACE,oBAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExBggMA;EwBh7LM;IACE,qBAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExBsgMA;EwBt7LM;IACE,UAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExB4gMA;EwB57LM;IACE,qBAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExBkhMA;EwBl8LM;IACE,qBAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExBwhMA;EwBx8LM;IACE,UAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExB8hMA;EwB98LM;IACE,qBAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExBoiMA;EwBp9LM;IACE,qBAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExB0iMA;EwB19LM;IACE,UAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExBgjMA;EwBh+LM;IACE,qBAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExBsjMA;EwBt+LM;IACE,qBAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExB4jMA;EwB5+LM;IACE,WAFK;IAjFb,iBAAA;IACA,UAAA;IACA,WAAA;ExBkkMA;EwB/jMA;IACE,0BAqFW;ExB4+Lb;EwB/jMA;IACE,oBAkFW;ExB++Lb;EwB/jMA;IACE,mBA+EW;ExBk/Lb;EwBxkMA;IACE,2BAqFW;ExBq/Lb;EwBxkMA;IACE,qBAkFW;ExBw/Lb;EwBxkMA;IACE,oBA+EW;ExB2/Lb;EwBjlMA;IACE,gBAqFW;ExB8/Lb;EwBjlMA;IACE,UAkFW;ExBigMb;EwBjlMA;IACE,SA+EW;ExBogMb;EwB1lMA;IACE,2BAqFW;ExBugMb;EwB1lMA;IACE,qBAkFW;ExB0gMb;EwB1lMA;IACE,oBA+EW;ExB6gMb;EwBnmMA;IACE,2BAqFW;ExBghMb;EwBnmMA;IACE,qBAkFW;ExBmhMb;EwBnmMA;IACE,oBA+EW;ExBshMb;EwB5mMA;IACE,gBAqFW;ExByhMb;EwB5mMA;IACE,UAkFW;ExB4hMb;EwB5mMA;IACE,SA+EW;ExB+hMb;EwBrnMA;IACE,2BAqFW;ExBkiMb;EwBrnMA;IACE,qBAkFW;ExBqiMb;EwBrnMA;IACE,oBA+EW;ExBwiMb;EwB9nMA;IACE,2BAqFW;ExB2iMb;EwB9nMA;IACE,qBAkFW;ExB8iMb;EwB9nMA;IACE,oBA+EW;ExBijMb;EwBvoMA;IACE,gBAqFW;ExBojMb;EwBvoMA;IACE,UAkFW;ExBujMb;EwBvoMA;IACE,SA+EW;ExB0jMb;EwBhpMA;IACE,2BAqFW;ExB6jMb;EwBhpMA;IACE,qBAkFW;ExBgkMb;EwBhpMA;IACE,oBA+EW;ExBmkMb;EwBzpMA;IACE,2BAqFW;ExBskMb;EwBzpMA;IACE,qBAkFW;ExBykMb;EwBzpMA;IACE,oBA+EW;ExB4kMb;EwBlqMA;IACE,iBAqFW;ExB+kMb;EwBlqMA;IACE,WAkFW;ExBklMb;EwBlqMA;IACE,UA+EW;ExBqlMb;AACF;AwBhlMI;EAKI;IACE,oBAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExBsrMA;EwBllMM;IACE,qBAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExB4rMA;EwBxlMM;IACE,UAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExBksMA;EwB9lMM;IACE,qBAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExBwsMA;EwBpmMM;IACE,qBAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExB8sMA;EwB1mMM;IACE,UAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExBotMA;EwBhnMM;IACE,qBAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExB0tMA;EwBtnMM;IACE,qBAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExBguMA;EwB5nMM;IACE,UAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExBsuMA;EwBloMM;IACE,qBAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExB4uMA;EwBxoMM;IACE,qBAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExBkvMA;EwB9oMM;IACE,WAFK;IArGb,iBAAA;IACA,UAAA;IACA,WAAA;ExBwvMA;EwBrvMA;IACE,0BAyGW;ExB8oMb;EwBrvMA;IACE,oBAsGW;ExBipMb;EwBrvMA;IACE,mBAmGW;ExBopMb;EwB9vMA;IACE,2BAyGW;ExBupMb;EwB9vMA;IACE,qBAsGW;ExB0pMb;EwB9vMA;IACE,oBAmGW;ExB6pMb;EwBvwMA;IACE,gBAyGW;ExBgqMb;EwBvwMA;IACE,UAsGW;ExBmqMb;EwBvwMA;IACE,SAmGW;ExBsqMb;EwBhxMA;IACE,2BAyGW;ExByqMb;EwBhxMA;IACE,qBAsGW;ExB4qMb;EwBhxMA;IACE,oBAmGW;ExB+qMb;EwBzxMA;IACE,2BAyGW;ExBkrMb;EwBzxMA;IACE,qBAsGW;ExBqrMb;EwBzxMA;IACE,oBAmGW;ExBwrMb;EwBlyMA;IACE,gBAyGW;ExB2rMb;EwBlyMA;IACE,UAsGW;ExB8rMb;EwBlyMA;IACE,SAmGW;ExBisMb;EwB3yMA;IACE,2BAyGW;ExBosMb;EwB3yMA;IACE,qBAsGW;ExBusMb;EwB3yMA;IACE,oBAmGW;ExB0sMb;EwBpzMA;IACE,2BAyGW;ExB6sMb;EwBpzMA;IACE,qBAsGW;ExBgtMb;EwBpzMA;IACE,oBAmGW;ExBmtMb;EwB7zMA;IACE,gBAyGW;ExBstMb;EwB7zMA;IACE,UAsGW;ExBytMb;EwB7zMA;IACE,SAmGW;ExB4tMb;EwBt0MA;IACE,2BAyGW;ExB+tMb;EwBt0MA;IACE,qBAsGW;ExBkuMb;EwBt0MA;IACE,oBAmGW;ExBquMb;EwB/0MA;IACE,2BAyGW;ExBwuMb;EwB/0MA;IACE,qBAsGW;ExB2uMb;EwB/0MA;IACE,oBAmGW;ExB8uMb;EwBx1MA;IACE,iBAyGW;ExBivMb;EwBx1MA;IACE,WAsGW;ExBovMb;EwBx1MA;IACE,UAmGW;ExBuvMb;AACF;;AyB14MA;EACE,eAAA;EACA,YhBqJc;EgBpJd,OAAA;EACA,MAAA;EACA,SAAA;EAEA,YAAA;EACA,yBAAA;EACA,uBAAA;EACA,oBAAA;EACA,sBhB+IiB;EgB9IjB,YAAA;EACA,gBAAA;EACA,sBAAA;EACA,2BAAA;EACA,4BAAA;EACA,wBAAA;AzB44MF;AyBv4ME;EACE,QAAA;EAEA,UAAA;EACA,2BAAA;AzBw4MJ;AyBr4ME;EACE,SAAA;AzBu4MJ;AyBn4ME;EACE,WAAA;AzBq4MJ;AyBj4MI;EACE,aAAA;EACA,mBAAA;AzBm4MN;AyBj4MQ;EAGE,0BAAA;EACC,WAAA;AzBi4MX;AyB73MI;EACE,qCAAA;AzB+3MN;AyB93MM;EACE,wBAAA;EAEA,WAAA;AzB+3MR;AyB33MI;EACE,gBAAA;EACA,6BAAA;AzB63MN;AyBz3ME;EACE,0BhBsFiB;EgBrFjB,aAAA;EACA,ehBmFgB;EgBlFhB,gBAAA;EACA,YhBqFkB;EgBpFlB,iBhBoFkB;EgBnFlB,eAAA;AzB23MJ;AyBz3MI;EACE,qCAAA;AzB23MN;AyBx3MI;EAIE,iBAAA;AzBu3MN;AyBp3MI;EAGE,WhBuDgB;AT6zMtB;AyBj3MI;EACE,chBoDc;AT+zMpB;AyBh3MI;EAEE,yBAAA;AzBi3MN;AyB92MI;EACE,yBhB4CqB;ATo0M3B;AyB72MI;;EAIE,WAAA;EACA,YhB8CgB;EgB7ChB,iBhB6CgB;EgB5ChB,kBAAA;EACA,aAAA;EACA,0BAAA;AzB62MN;AyBz2ME;EACE,mBAAA;AzB22MJ;AyBx2ME;EAKE,eAAA;EACA,oBAAA;EACA,0BAAA;EACA,ehBsBgB;EgBrBhB,gBAAA;EACA,iBhBwBkB;AT80MtB;AyB/2MI;EACE,6BAAA;AzBi3MN;AyBt2ME;EACE,kBAAA;EACA,oBAAA;EACA,oBAAA;AzBw2MJ;AyBt2MI;EAKE,YAAA;EACA,UAAA;AzBo2MN;AyBz2MM;EACE,6BAAA;AzB22MR;AyBp2MI;EACE,gBAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,WAAA;AzBs2MN;AyBn2MI;;;EAGE,cAAA;AzBq2MN;AyBl2MI;EACE,YAAA;EACA,WAAA;AzBo2MN;AyBj2MI;;EAEE,ehBpBc;EgBqBd,mBAAA;AzBm2MN;AyBh2MI;EACE,gBAAA;EACA,gBAAA;AzBk2MN;AyB/1MI;EACE,oBAAA;EACA,gBAAA;AzBi2MN;;AyB31MA;EAME,YAAA;EACA,WAAA;EACA,eAAA;EACA,MAAA;EACA,YAAA;AzBy1MF;AyBj2ME;EACE,QAAA;AzBm2MJ;;AyBx1MA;EAOE,OAAA;EACA,wBAAA;EACA,eAAA;AzBq1MF;AyB51ME;EACE,QAAA;EACA,UAAA;AzB81MJ;;AyBr1MA;EAEI;IACE,4BAAA;EzBu1MJ;EyBr1MI;IACE,2BAAA;EzBu1MN;EyBn1ME;IACE,eAAA;EzBq1MJ;EyBl1ME;IACE,oBAAA;EzBo1MJ;AACF;AyBh1MA;;EAEE,yBhBjPc;ATmkNhB;AyBh1ME;;EACE,WhBvFe;AT06MnB;;AyB/0MA;EACE,UAAA;AzBk1MF;;AyB/0MA;EACE,eAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;EACA,oCAAA;EACA,YAAA;EACA,aAAA;AzBk1MF;;AyB50ME;EACE,mBAAA;EACA,sBAAA;AzB+0MJ;;A0B3lNA;;EAEE,YjB8Kc;EiB7Kd,kBjBmLc;EiBlLd,qBAAA;EACA,YjB+Kc;EiB9Kd,iBjB8Kc;EiB7Kd,ejB8Ke;EiB7Kf,yBAAA;EACA,sBAAA;EACA,wCAAA;A1B8lNF;;A0B1lNA;;;;;;;;;;;;;;;EAeE,oBAAA;EACA,oCAAA;EACA,gBAAA;EACA,yBAAA;EACA,eAAA;A1B6lNF;A0B5lNE;;;;;;;;;;;;;;;EACE,oCAAA;EACA,yBAAA;A1B4mNJ;;A0BvmNA;;;;;EAKE,ejBoIiB;EiBnIjB,UAAA;A1B0mNF;A0BzmNE;;;;;EACE,iBjBkIoB;EiBjIpB,oBAAA;A1B+mNJ;;A0BxmNE;;EACE,yBAAA;A1B4mNJ;;A0BvmNA;EACE,qBAAA;EACA,WjBiFoB;EiBhFpB,yBjBkFyB;EiBjFzB,kBAAA;EACA,qBAAA;EAEA,0CAAA;EACA,eAAA;A1BymNF;A0BxmNE;EACE,yBjBqH6B;ATq/MjC;;A0BpmNA;EAwCE,qBAAA;EACA,WjB4FsB;EiB3FtB,kBAAA;EACA,gBAAA;EACA,UAAA;EACA,WjByFqB;EiBxFrB,YjBwFqB;EiBvFrB,iBjBuFqB;EiBtFrB,UAAA;EACA,yBjB7HgB;EiB8HhB,kBjBqFuB;EiBnFvB,iCAAA;EACA,eAAA;EACA,sBAAA;A1B+jNF;A0BpnNE;EACE,yBjB9Ec;ATosNlB;A0BnnNE;EACE,gBAAA;A1BqnNJ;A0BnnNE;EAIE,WjB0GyB;EiBzGzB,YjByGyB;EiBxGzB,UAAA;A1BknNJ;A0BvnNI;EACE,YAAA;A1BynNN;A0BpnNI;EACE,iBjBsGuB;ATghN7B;A0BlnNE;EAIE,ajBoGyB;EiBnGzB,cjBmGyB;AT8gN7B;A0BrnNI;EACE,cAAA;A1BunNN;A0BnnNI;EACE,mBjBiGuB;ATohN7B;A0BjnNE;EAKE,kBAAA;EACA,WAAA;EACA,YAAA;A1B+mNJ;A0BrnNI;EACE,WAAA;EACA,UAAA;A1BunNN;A0BlmNE;EACE,cAAA;EACA,qBAAA;EACA,kBAAA;EACA,WjB0EoB;EiBzEpB,iBjBwD0B;EiBvD1B,iBjByEmB;AT2hNvB;;A0B/lNA;EACE,YjB8Bc;ATokNhB;;A0B9lNA;EAuFE,eAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,gBAAA;EACA,YAAA;A1B2gNF;A0BrmNI;EACE,mBAAA;A1BumNN;A0BlmNE;EAEE,mBAAA;A1BmmNJ;A0BlmNI;EACE,iBAAA;EACA,WAAA;EACA,QAAA;EACA,2BAAA;EACA,YAAA;EACA,UAAA;EACA,qDAAA;EACA,YAAA;A1BomNN;A0BnmNM;EACE,qBAAA;EACA,sBAAA;A1BqmNR;A0BjmNE;EACE,mBAAA;A1BmmNJ;A0BlmNI;EACE,gBAAA;EACA,cAAA;EACA,UAAA;EACA,WAAA;A1BomNN;A0BnmNM;EACE,sBAAA;A1BqmNR;A0BjmNE;EACE,mBAAA;A1BmmNJ;A0BlmNI;EACE,SAAA;EACA,YAAA;EACA,aAAA;EACA,8BAAA;A1BomNN;A0BnmNM;EACE,kBAAA;A1BqmNR;A0BjmNE;EAME,UAAA;EACA,YjBVyB;ATwmN7B;A0BnmNM;EACE,UAAA;A1BqmNR;A0BhmNI;EACE,aAAA;EACA,MAAA;EACA,SAAA;EACA,UAAA;A1BkmNN;A0BjmNM;EACE,OAAA;EACA,qBAAA;EACA,SAAA;EACA,YAAA;EACA,gBAAA;A1BmmNR;A0BlmNQ;EACE,cAAA;EACA,gBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,6BAAA;EACA,gBAAA;EACA,WAAA;EACA,iBjB/BmB;EiBgCnB,UAAA;A1BomNV;A0BnmNU;EACE,oBAAA;A1BqmNZ;A0BzlNE;EACE,OAAA;EACA,QAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,SAAA;EACA,kBAAA;A1B2lNJ;A0B1lNI;EACE,mBAAA;A1B4lNN;A0B1lNI;EACE,UAAA;A1B4lNN;A0BzlNE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,WjBlDmB;EiBmDnB,YjBnDmB;EiBoDnB,yBjBtQc;EiBuQd,kBjBpDqB;EiBqDrB,mBAAA;A1B2lNJ;;A0BtlNA;EACE,gBAAA;EACA,6BAAA;EACA,cjBhIkB;EiBiIlB,eAAA;EACA,iCAAA;A1BylNF;A0BxlNE;EAEE,gBAAA;A1BylNJ;A0BvlNE;EACE,oCAAA;A1BylNJ;A0BvlNE;EAEE,wCAAA;EACA,yBAAA;EACA,eAAA;A1BwlNJ;;A0BnlNA;EAEE,YjBpGoB;EiBqGpB,iBjBrGoB;EiBsGpB,ejBxGuB;EiByGvB,eAAA;A1BqlNF;A0BnlNE;EACE,iBjB3G0B;ATgsN9B;;A0BhlNA;EAEE,cjB3GoB;EiB4GpB,mBjB5GoB;EiB6GpB,ejB/GuB;ATisNzB;A0BjlNE;EACE,iBjBhH0B;ATmsN9B;;A0B9kNA;EACE,cAAA;A1BilNF;;A2Bx4NA;EACE,aAAA;EACA,aAAA;A3B24NF;;A2Bx4NA;EACE,8BAAA;EACA,gBAAA;EACA,qBAAA;EACA,8BAAA;A3B24NF;A2B14NA;EACE,2BAAA;A3B44NF;A2B14NE;EACE,aAAA;EACA,aAAA;A3B44NJ;A2Bx4NI;EACE,OAAA;EACA,yBAxBC;EAyBD,yBAAA;A3B04NN;A2Bx4NM;EACE,yBA/BI;EAgCJ,4BAAA;A3B04NR;A2Br4NI;EACE,OAAA;EACA,uDAAA;EACA,sBAAA;A3Bu4NN;A2Br4NM;EACE,yBAxCD;EAyCC,4BAAA;A3Bu4NR;A2Bl4NI;EACE,OAAA;EACA,yBAhDC;EAiDD,yBAAA;A3Bo4NN;A2Bl4NM;EACE,yBAnDD;EAoDC,4BAAA;A3Bo4NR;A2B73NI;EACE,OAAA;EACA,yBAjEM;EAoEN,yBAAA;A3B63NN;A2B33NM;EACE,yBApED;EAsEC,4BAAA;A3B43NR;A2Bv3NI;EACE,OAAA;EACA,uDAAA;EAGA,sBAAA;A3Bu3NN;A2Br3NM;EACE,yBAtFI;EAuFJ,4BAAA;A3Bu3NR;A2Bl3NI;EACE,OAAA;EACA,yBA9FM;EA+FN,yBAAA;A3Bo3NN;A2Bl3NM;EACE,yBA9FD;EA+FC,4BAAA;A3Bo3NR;A2B52NI;EACE,OAAA;EACA,yBAzGC;EA4GD,yBAAA;A3B42NN;A2B12NM;EACE,yBAhHD;EAkHC,4BAAA;A3B22NR;A2Bt2NI;EACE,OAAA;EACA,uDAAA;EAGA,sBAAA;A3Bs2NN;A2Bp2NM;EACE,yBA9HD;EA+HC,4BAAA;A3Bs2NR;A2Bj2NI;EACE,OAAA;EACA,yBAtIC;EAuID,yBAAA;A3Bm2NN;A2Bj2NM;EACE,yBA9II;EA+IJ,4BAAA;A3Bm2NR;A2B71NE;EACE,yBAtJQ;EAuJR,aAAA;EAEA,aAAA;EACA,gBAAA;EACA,4BAAA;EACA,oBAAA;A3B81NJ;;A4B9/NA;EACI,YAAA;EACA,kBAAA;EACA,aAAA;EACA,YAAA;EACA,MAAA;EACA,OAAA;EACA,4CAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,sBAAA;A5BigOJ;A4BhgOI;EACI,yBAAA,EAAA,eAAA;EACA,6BAAA,EAAA,SAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,kCAAA;A5BkgOR;A4BhgOI;EACI,gBAAA;EACA,eAAA;EACA,cAAA;A5BkgOR;A4B//NI;EACI;IACI,uBAAA;E5BigOV;E4B//NM;IACI,yBAAA;E5BigOV;AACF;;A6B/hOA;EACE,4BAAA;EACA,apB4Na;EoB3Nb,2CAAA;EACA,kBAAA;EAEA,sBpByNc;ATw0NhB;;A6B9hOA;EACE,kBAAA;EACA,2CAAA;EACA,sBpBmNc;EoBlNd,4BAAA;EACA,kBAAA;A7BiiOF;A6B7hOE;EACE,eAAA;EACA,gBAAA;A7B+hOJ;A6B9hOI;EACE,eAAA;A7BgiON;A6B3hOE;EACE,kBAAA;A7B6hOJ;A6B3hOI;EACE,eAAA;EACA,gBAAA;A7B6hON;A6B3hOI;EACE,eAAA;A7B6hON;A6B3hOI;EACE,gBAAA;EACA,gBAAA;A7B6hON;A6B3hOI;EACE,kBAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;A7B6hON;A6BzhOE;EACE,aAAA;A7B2hOJ;A6BxhOE;EACE,aAAA;A7B0hOJ;A6BvhOE;EACE,aAAA;A7ByhOJ;A6BrhOE;EAaE,aAAA;A7B2gOJ;A6BthOM;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;A7BwhOR;A6BthOQ;EACE,YAAA;A7BwhOV;A6BjhOI;EACE,cAAA;A7BmhON;A6BlhOM;EACE,0BAAA;EACA,eAAA;EACA,WAAA;A7BohOR;A6BhhOI;EACE,aAAA;EACA,sBAAA;EACA,OAAA;EACA,kBAAA;A7BkhON;A6BhhOM;EACE,YAAA;A7BkhOR;A6B3gOI;EACE,UAAA;A7B6gON;A6B1gOI;EACE,UAAA;EACA,oBAAA;A7B4gON;A6BrgOE;EACE,kBAAA;A7BugOJ;A6BpgOI;EACE,cAAA;EACA,0BAAA;EACA,kBAAA;EACA,OAAA;EACA,QAAA;EACA,MAAA;EACA,SAAA;EACA,WAAA;A7BsgON;A6BngOI;EACE,WpB8FU;EoB7FV,kBAAA;EACA,SAAA;EACA,OAAA;EACA,eAAA;EACA,apBwFS;AT66Nf;A6BjgOE;EACE,apBmFW;EoBlFX,0BAAA;A7BmgOJ;A6BjgOI;EACE,SAAA;A7BmgON;A6BjgOI;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;A7BmgON;A6BjgOM;EACE,iBAAA;A7BmgOR;A6B9/NE;EAIE,yBAAA;EACA,8CAAA;EACA,kBAAA;EACA,kBAAA;A7B6/NJ;A6BngOI;EACE,0BAAA;A7BqgON;A6B9/NI;EACE,cpB0DY;EoBzDZ,kBpBuDS;EoBtDT,2BAAA;EACA,yBAAA;A7BggON;A6B9/NM;EAAU,cpBsDQ;AT28NxB;A6B7/NE;EACE,apB8CW;EoB7CX,kBAAA;EACA,sBpB6CY;EoB5CZ,WAAA;EACA,gBAAA;EACA,OAAA;EACA,SAAA;EACA,YAAA;EACA,UAAA;EACA,aAAA;A7B+/NJ;A6B7/NI;EACE,eAAA;EACA,cAAA;A7B+/NN;;A8B9rOA;;;;;;;;EAAA;AAUA,2BAAA;AACA,2BAAA;AACA,2BAAA;AAEA;;;;;;;;;;;;EAAA;AAeA;EACE,qBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;A9B6rOF;A8B3rOE;EACE,WAAA;EACA,YAAA;A9B6rOJ;A8B1rOE;EACE,WAAA;EACA,YAAA;A9B4rOJ;A8BzrOE;EACE,4DAAA;EACA,0DAAA;EACA,kDAAA;A9B2rOJ;;A8BvrOA;EACE;IAAK,iCAAA;E9B2rOL;AACF;A8BzrOA;EACE;IAAK,yBAAA;E9B4rOL;AACF;A8B1rOA;EACE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,qBrB5DgB;ATwvOlB;;A8BzrOA;;EAEE,qBAAA;A9B4rOF;;A8BzrOA;;EAEE,qBAAA;A9B4rOF;;A8BzrOA;;EAEE,qBAAA;A9B4rOF;;A8BzrOA;;EAEE,qBAAA;A9B4rOF;;A8BzrOA;;;;;;;;;;;;EAAA;AAaA;EACE,2BAAA;EACA,2JAAA;EACA,mJAAA;A9B4rOF;;A8BzrOA;EACE,2BAAA;EACA,0JAAA;EACA,kJAAA;A9B4rOF;;A8BzrOA;EACE,2BAAA;EACA,6JAAA;EACA,qJAAA;A9B4rOF;;A8BzrOA;EACE,2BAAA;EACA,4JAAA;EACA,oJAAA;A9B4rOF;;A8BzrOA;;;;;EAKE,2BAAA;EACA,UAAA;EACA,uFAAA;EACA,+EAAA;A9B4rOF;;A8BzrOA;EACE;IAAQ,iCAAA;E9B6rOR,E8B7rO8C,kBAAA;EAC9C;IAAQ,iCAAA;E9B+rOR,E8B/rO8C,kBAAA;EAC9C;IAAQ,iCAAA;E9BisOR,E8BjsO8C,kBAAA;EAC9C;IAAQ,iCAAA;E9BmsOR,E8BnsO8C,kBAAA;EAC9C;IAAQ,iCAAA;E9BqsOR,E8BrsO8C,kBAAA;EAC9C;IAAQ,iCAAA;E9BusOR,E8BvsO8C,kBAAA;EAC9C;IAAQ,iCAAA;E9BysOR,E8BzsO8C,kBAAA;EAC9C;IAAQ,kCAAA;E9B2sOR,E8B3sO8C,kBAAA;A9B4sOhD;A8BzsOA;EACE;IAAQ,yBAAA;E9B4sOR,E8B5sOsC,kBAAA;EACtC;IAAQ,yBAAA;E9B8sOR,E8B9sOsC,kBAAA;EACtC;IAAQ,yBAAA;E9BgtOR,E8BhtOsC,kBAAA;EACtC;IAAQ,yBAAA;E9BktOR,E8BltOsC,kBAAA;EACtC;IAAQ,yBAAA;E9BotOR,E8BptOsC,kBAAA;EACtC;IAAQ,yBAAA;E9BstOR,E8BttOsC,kBAAA;EACtC;IAAQ,yBAAA;E9BwtOR,E8BxtOsC,kBAAA;EACtC;IAAQ,0BAAA;E9B0tOR,E8B1tOsC,kBAAA;A9B2tOxC;A8BxtOA;EACE;IAAO,UAAA;E9B2tOP;E8B1tOA;IAAM,UAAA;E9B6tON;E8B5tOA;IAAM,UAAA;E9B+tON;E8B9tOA;IAAM,UAAA;E9BiuON;E8BhuOA;IAAM,UAAA;E9BmuON;E8BluOA;IAAO,UAAA;E9BquOP;AACF;A8BnuOA;EACE;IAAO,UAAA;E9BsuOP;E8BruOA;IAAM,UAAA;E9BwuON;E8BvuOA;IAAM,UAAA;E9B0uON;E8BzuOA;IAAM,UAAA;E9B4uON;E8B3uOA;IAAM,UAAA;E9B8uON;E8B7uOA;IAAO,UAAA;E9BgvOP;AACF;A8B9uOA;EACE;IAAO,UAAA;E9BivOP;E8BhvOA;IAAM,UAAA;E9BmvON;E8BlvOA;IAAM,UAAA;E9BqvON;E8BpvOA;IAAM,UAAA;E9BuvON;E8BtvOA;IAAM,UAAA;E9ByvON;AACF;A8BvvOA;EACE;IAAO,UAAA;E9B0vOP;E8BzvOA;IAAM,UAAA;E9B4vON;E8B3vOA;IAAM,UAAA;E9B8vON;E8B7vOA;IAAM,UAAA;E9BgwON;E8B/vOA;IAAM,UAAA;E9BkwON;AACF;A8BhwOA;EACE;IAAO,UAAA;E9BmwOP;E8BlwOA;IAAM,UAAA;E9BqwON;E8BpwOA;IAAM,UAAA;E9BuwON;E8BtwOA;IAAM,UAAA;E9BywON;E8BxwOA;IAAM,UAAA;E9B2wON;AACF;A8BzwOA;EACE;IAAO,UAAA;E9B4wOP;E8B3wOA;IAAM,UAAA;E9B8wON;E8B7wOA;IAAM,UAAA;E9BgxON;E8B/wOA;IAAM,UAAA;E9BkxON;E8BjxOA;IAAM,UAAA;E9BoxON;AACF;A8BlxOA;EACE;IAAO,UAAA;E9BqxOP;E8BpxOA;IAAM,UAAA;E9BuxON;E8BtxOA;IAAM,UAAA;E9ByxON;E8BxxOA;IAAM,UAAA;E9B2xON;E8B1xOA;IAAO,UAAA;E9B6xOP;AACF;A8B3xOA;EACE;IAAO,UAAA;E9B8xOP;E8B7xOA;IAAM,UAAA;E9BgyON;E8B/xOA;IAAM,UAAA;E9BkyON;E8BjyOA;IAAM,UAAA;E9BoyON;E8BnyOA;IAAO,UAAA;E9BsyOP;AACF;A8BpyOA;;;EAAA;AAIA;EACE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;EACA,qBAAA;A9BsyOF;;A8BnyOA;EACE,YAAA;EACA,WAAA;A9BsyOF;;A8BnyOA;EACE,qBAAA;EACA,kBAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;EACA,qBAAA;A9BsyOF;A8BpyOE;EACE,WAAA;EACA,YAAA;EACA,iBAAA,EAAA,gBAAA;EACA,mBAAA;EACA,qBAAA;EACA,2CAAA;EACA,kBAAA;EACA,uBAAA;EACA,eAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;A9BsyOJ;A8BnyOE;EACE,OAAA;EACA,0CAAA;EACA,iCAAA;EACA,yBAAA;A9BqyOJ;A8BnyOE;EACE,WAAA;EACA,yCAAA;EACA,kCAAA;EACA,0BAAA;A9BqyOJ;;A8B/xOA;EACE,sBAAA;EACA,8EAAA;EACA,sEAAA;A9BkyOF;;A8B/xOA;EACE,sBAAA;EACA,+EAAA;EACA,uEAAA;A9BkyOF;;A8B/xOA;EACE;IAAO,iCAAA;E9BmyOP;E8BlyOA;IAAM,gCAAA;E9BqyON;E8BpyOA;IAAK,iCAAA;E9BuyOL;AACF;A8BryOA;EACE;IAAO,yBAAA;E9BwyOP;E8BvyOA;IAAM,wBAAA;E9B0yON;E8BzyOA;IAAK,yBAAA;E9B4yOL;AACF;A8B1yOA;EACE;IAAO,kCAAA;E9B6yOP;E8B5yOA;IAAM,+BAAA;E9B+yON;E8B9yOA;IAAK,kCAAA;E9BizOL;AACF;A8B/yOA;EACE;IAAO,0BAAA;E9BkzOP;E8BjzOA;IAAM,uBAAA;E9BozON;E8BnzOA;IAAK,0BAAA;E9BszOL;AACF;A8BpzOA;EACE,0BAAA;EACA,uGAAA;EACA,+FAAA;A9BszOF;;A8BnzOA;EACE;IAAO,UAAA;E9BuzOP;E8BtzOA;IAAK,UAAA;E9ByzOL;AACF;A8BvzOA;EACE;IAAO,UAAA;E9B0zOP;E8BzzOA;IAAK,UAAA;E9B4zOL;AACF;A+BvoPA;EACE,kBAAA;EACA,WAAA;EACA,cAAA;EACA,WAAA;EACA,yBAAA;EACA,kBAAA;EACA,2CAAA;EACA,gBAAA;A/ByoPF;A+BxoPE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,yBtBXc;EsBYd,6BAAA;A/B0oPJ;A+BxoPE;EACE,yBtBfc;ATypPlB;A+BzoPI;EACE,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,wBAAA;EAEA,8EAAA;A/B0oPN;A+BvoPI;EACE,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,wBAAA;EAEA,+EAAA;EACA,sBAAA;A/BwoPN;;A+BpoPA;EACE;IACE,UAAA;IACA,WAAA;E/BuoPF;E+BroPA;IACE,UAAA;IACA,WAAA;E/BuoPF;E+BroPA;IACE,UAAA;IACA,WAAA;E/BuoPF;AACF;A+BpoPA;EACE;IACE,WAAA;IACA,WAAA;E/BsoPF;E+BpoPA;IACE,UAAA;IACA,UAAA;E/BsoPF;E+BpoPA;IACE,UAAA;IACA,UAAA;E/BsoPF;AACF;AgChtPA;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,QAAA;EACA,SAAA;EACA,eAAA;AhCktPF;AgC/sPE;EACE,yBAAA;EACA,yBAAA;AhCitPJ;AgC9sPE;EACE,yBAAA;EACA,yBAAA;AhCgtPJ;AgC9sPE;EACE,yBAAA;EACA,yBAAA;AhCgtPJ;;AgC5sPA;EACE;IACE,UAAA;EhC+sPF;EgC5sPA;IACE,QAAA;EhC8sPF;AACF;AiC9uPA;EAgBE,iBAAA;EACA,kBAAA;AjCiuPF;AiCjvPE;EACE,WAAA;EACA,cAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,MAAA;EACA,OAAA;EACA,yBAAA;EACA,sBAAA;EACA,wCAAA;EACA,qEAAA;AjCmvPJ;;AiC3uPA;EACE;IACE,UAAA;IACA,mBAAA;EjC8uPF;EiC5uPA;IACE,UAAA;IACA,qBAAA;EjC8uPF;EiC5uPA;IACE,UAAA;IACA,qBAAA;EjC8uPF;AACF;AkC9wPA;EAOE,sBzBqPkB;EyBpPlB,SAAA;EACA,aAAA;EACA,gBAAA;EACA,gBAAA;EAEA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,aAAA;EACA,qBAAA;AlCywPF;AkCzxPE;EACE,UAAA;AlC2xPJ;AkCzwPE;EAsCE,WAAA;EACA,0BzBuMQ;EyBtMR,eAAA;EACA,gBzBkMmB;EyBjMnB,mBAAA;EACA,WAAA;EACA,gBAAA;AlCsuPJ;AkCjxPI;EACE,sBzBuOoB;AT4iP1B;AkChxPI;EACE,aAAA;AlCkxPN;AkC/wPI;EACE,aAAA;EACA,WAAA;AlCixPN;AkC9wPI;EACE,eAAA;EACA,czB/BY;EyBgCZ,cAAA;EACA,iBAAA;EACA,kBAAA;AlCgxPN;AkC7wPI;EACE,QAAA;EACA,OAAA;EACA,YAAA;AlC+wPN;AkC3wPI;EACE,eAAA;EACA,oBAAA;EACA,WAAA;EACA,kBAAA;EACA,WAAA;AlC6wPN;;AkC9vPE;EACE,yBAAA;AlCiwPJ;;AkC5vPA;EACE,QAAA;EACA,OAAA;EACA,YAAA;EACA,eAAA;AlC+vPF;;AkC5vPA;EACE,eAAA;AlC+vPF;;AmCl1PA;EAiBE,W1B6HkB;E0B3HlB,yB1BlBc;E0BmBd,WAAA;EACA,Y1BsHqB;E0BrHrB,iB1BqHqB;AT+sPvB;AmCz1PE;EACE,YAAA;AnC21PJ;AmCz1PI;EACE,aAAA;EACA,mBAAA;EACA,gB1BoIiB;E0BnIjB,YAAA;AnC21PN;AmCx1PI;EACE,kBAAA;EACA,mBAAA;AnC01PN;AmC/0PE;EAAI,W1BsHc;AT4tPpB;AmCh1PE;;;EAGE,cAAA;EACA,eAAA;EACA,Y1B4GmB;E0B3GnB,iB1B2GmB;ATuuPvB;AmC/0PE;EACE,kBAAA;EACA,YAAA;AnCi1PJ;AmC90PE;EACE;IAAoB,aAAA;EnCi1PtB;AACF;AmC70PE;EACE,WAAA;EACA,kBAAA;EACA,UAAA;EACA,Y1ByFmB;E0BxFnB,cAAA;AnC+0PJ;AmC70PI;EACE,Y1BqFiB;E0BpFjB,iB1BoFiB;AT2vPvB;AmCz0PE;EACE,kBAAA;EACA,W1B+EgB;E0B9EhB,qBAAA;EACA,iB1B8EqB;E0B7ErB,UAAA;AnC20PJ;AmC10PI;EACE,YAAA;EACA,WAAA;AnC40PN;AmCz0PI;EACE,SAAA;EACA,2BAAA;AnC20PN;AmCx0PI;EAhBF;IAiBI,SAAA;IACA,2BAAA;EnC20PJ;EmCz0PI;IACE,UAAA;IACA,eAAA;EnC20PN;EmCx0PI;IAAS,YAAA;EnC20Pb;EmC10PI;IACE,aAAA;IACA,UAAA;EnC40PN;AACF;AmCz0PI;EACE,aAAA;EACA,UAAA;AnC20PN;AmCx0PI;;;EAGE,WAAA;EACA,kBAAA;AnC00PN;AmCp0PE;EACE,qBAAA;EACA,eAAA;EACA,eAAA;AnCs0PJ;AmCj0PE;EACE,SAAA;AnCm0PJ;AmCj0PI;EACE,iCAAA;EACA,WAAA;EACA,UAAA;AnCm0PN;AmCj0PM;EACE,oCAAA;AnCm0PR;AmCh0PI;EACE,iCAAA;EACA,e1BWa;E0BVb,W1BWc;E0BVd,cAAA;EACA,eAAA;EACA,eAAA;AnCk0PN;AmCh0PM;EACE,gBAAA;EACA,iBAAA;EACA,kBAAA;AnCk0PR;AmCh0PQ;EACE,eAAA;EACA,oBAAA;AnCk0PV;AmC9zPM;EACE,oCAAA;AnCg0PR;AmC5zPI;EACE,WAAA;AnC8zPN;AmCzzPE;EACE,YAAA;AnC2zPJ;AmCxzPE;EACE,SAAA;EACA,YAAA;AnC0zPJ;AmCxzPI;EACE,YAAA;EACA,iBAAA;EACA,YAAA;EACA,kBAAA;AnC0zPN;AmCxzPM;EAEE,YAAA;EACA,gBAAA;AnCyzPR;AmCrzPI;EACE,MAAA;EACA,OAAA;AnCuzPN;AmCrzPM;EACE,+BAAA;EACA,sBAAA;AnCuzPR;AmCrzPM;EAAa,W1B7CC;ATq2PpB;;AmClzPA;EACE,kBAAA;EACA,Y1BxDqB;E0ByDrB,YAAA;AnCqzPF;AmCnzPE;EACE,eAAA;AnCqzPJ;;AmClzPA;EACE;IACE,gB1BnEY;ETw3Pd;EmCnzPA;IACE,Y1BtEY;I0BuEZ,iB1BvEY;ET43Pd;EmCnzPA;IACE,Y1B1EY;ET+3Pd;AACF","sourcesContent":["@charset \"UTF-8\";\n@import 'https://fonts.googleapis.com/css?family=Ubuntu';\n.webo {\n background-color: #0062d6 !important;\n}\n\n.webo-text {\n color: #0062d6 !important;\n}\n\n.webo-waves .waves-ripple {\n background-color: #0062d6 !important;\n}\n\n.webo.second {\n background-color: #0077FA !important;\n}\n\n.webo-text.text-second {\n color: #0077FA !important;\n}\n\n.webo-waves.waves-second .waves-ripple {\n background-color: #0077FA !important;\n}\n\n.webo.third {\n background-color: #09bddd !important;\n}\n\n.webo-text.text-third {\n color: #09bddd !important;\n}\n\n.webo-waves.waves-third .waves-ripple {\n background-color: #09bddd !important;\n}\n\n.webo.fourth {\n background-color: #cbe7fe !important;\n}\n\n.webo-text.text-fourth {\n color: #cbe7fe !important;\n}\n\n.webo-waves.waves-fourth .waves-ripple {\n background-color: #cbe7fe !important;\n}\n\n.webo.lighten-5 {\n background-color: #bbdefb !important;\n}\n\n.webo-text.text-lighten-5 {\n color: #bbdefb !important;\n}\n\n.webo-waves.waves-lighten-5 .waves-ripple {\n background-color: #bbdefb !important;\n}\n\n.webo.lighten-4 {\n background-color: #42a5f5 !important;\n}\n\n.webo-text.text-lighten-4 {\n color: #42a5f5 !important;\n}\n\n.webo-waves.waves-lighten-4 .waves-ripple {\n background-color: #42a5f5 !important;\n}\n\n.webo.lighten-3 {\n background-color: #7986cb !important;\n}\n\n.webo-text.text-lighten-3 {\n color: #7986cb !important;\n}\n\n.webo-waves.waves-lighten-3 .waves-ripple {\n background-color: #7986cb !important;\n}\n\n.webo.lighten-2 {\n background-color: #512da8 !important;\n}\n\n.webo-text.text-lighten-2 {\n color: #512da8 !important;\n}\n\n.webo-waves.waves-lighten-2 .waves-ripple {\n background-color: #512da8 !important;\n}\n\n.webo.lighten-1 {\n background-color: #283593 !important;\n}\n\n.webo-text.text-lighten-1 {\n color: #283593 !important;\n}\n\n.webo-waves.waves-lighten-1 .waves-ripple {\n background-color: #283593 !important;\n}\n\n.webo.darken-1 {\n background-color: #d0181e !important;\n}\n\n.webo-text.text-darken-1 {\n color: #d0181e !important;\n}\n\n.webo-waves.waves-darken-1 .waves-ripple {\n background-color: #d0181e !important;\n}\n\n.webo.darken-2 {\n background-color: #b9151b !important;\n}\n\n.webo-text.text-darken-2 {\n color: #b9151b !important;\n}\n\n.webo-waves.waves-darken-2 .waves-ripple {\n background-color: #b9151b !important;\n}\n\n.webo.darken-3 {\n background-color: #a21318 !important;\n}\n\n.webo-text.text-darken-3 {\n color: #a21318 !important;\n}\n\n.webo-waves.waves-darken-3 .waves-ripple {\n background-color: #a21318 !important;\n}\n\n.webo.b- {\n background-color: #49ce5f !important;\n}\n\n.webo-text.text-b- {\n color: #49ce5f !important;\n}\n\n.webo-waves.waves-b- .waves-ripple {\n background-color: #49ce5f !important;\n}\n\n.webo.darken-4 {\n background-color: #8b1014 !important;\n}\n\n.webo-text.text-darken-4 {\n color: #8b1014 !important;\n}\n\n.webo-waves.waves-darken-4 .waves-ripple {\n background-color: #8b1014 !important;\n}\n\n.red {\n background-color: #f44336 !important;\n}\n\n.red-text {\n color: #f44336 !important;\n}\n\n.red-waves .waves-ripple {\n background-color: #f44336 !important;\n}\n\n.red.lighten-5 {\n background-color: #ffebee !important;\n}\n\n.red-text.text-lighten-5 {\n color: #ffebee !important;\n}\n\n.red-waves.waves-lighten-5 .waves-ripple {\n background-color: #ffebee !important;\n}\n\n.red.lighten-4 {\n background-color: #ffcdd2 !important;\n}\n\n.red-text.text-lighten-4 {\n color: #ffcdd2 !important;\n}\n\n.red-waves.waves-lighten-4 .waves-ripple {\n background-color: #ffcdd2 !important;\n}\n\n.red.lighten-3 {\n background-color: #ef9a9a !important;\n}\n\n.red-text.text-lighten-3 {\n color: #ef9a9a !important;\n}\n\n.red-waves.waves-lighten-3 .waves-ripple {\n background-color: #ef9a9a !important;\n}\n\n.red.lighten-2 {\n background-color: #e57373 !important;\n}\n\n.red-text.text-lighten-2 {\n color: #e57373 !important;\n}\n\n.red-waves.waves-lighten-2 .waves-ripple {\n background-color: #e57373 !important;\n}\n\n.red.lighten-1 {\n background-color: #ef5350 !important;\n}\n\n.red-text.text-lighten-1 {\n color: #ef5350 !important;\n}\n\n.red-waves.waves-lighten-1 .waves-ripple {\n background-color: #ef5350 !important;\n}\n\n.red.darken-1 {\n background-color: #e53935 !important;\n}\n\n.red-text.text-darken-1 {\n color: #e53935 !important;\n}\n\n.red-waves.waves-darken-1 .waves-ripple {\n background-color: #e53935 !important;\n}\n\n.red.darken-2 {\n background-color: #d32f2f !important;\n}\n\n.red-text.text-darken-2 {\n color: #d32f2f !important;\n}\n\n.red-waves.waves-darken-2 .waves-ripple {\n background-color: #d32f2f !important;\n}\n\n.red.darken-3 {\n background-color: #c62828 !important;\n}\n\n.red-text.text-darken-3 {\n color: #c62828 !important;\n}\n\n.red-waves.waves-darken-3 .waves-ripple {\n background-color: #c62828 !important;\n}\n\n.red.darken-4 {\n background-color: #b71c1c !important;\n}\n\n.red-text.text-darken-4 {\n color: #b71c1c !important;\n}\n\n.red-waves.waves-darken-4 .waves-ripple {\n background-color: #b71c1c !important;\n}\n\n.red.accent-1 {\n background-color: #ff8a80 !important;\n}\n\n.red-text.text-accent-1 {\n color: #ff8a80 !important;\n}\n\n.red-waves.waves-accent-1 .waves-ripple {\n background-color: #ff8a80 !important;\n}\n\n.red.accent-2 {\n background-color: #ff5252 !important;\n}\n\n.red-text.text-accent-2 {\n color: #ff5252 !important;\n}\n\n.red-waves.waves-accent-2 .waves-ripple {\n background-color: #ff5252 !important;\n}\n\n.red.accent-3 {\n background-color: #ff1744 !important;\n}\n\n.red-text.text-accent-3 {\n color: #ff1744 !important;\n}\n\n.red-waves.waves-accent-3 .waves-ripple {\n background-color: #ff1744 !important;\n}\n\n.red.accent-4 {\n background-color: #d50000 !important;\n}\n\n.red-text.text-accent-4 {\n color: #d50000 !important;\n}\n\n.red-waves.waves-accent-4 .waves-ripple {\n background-color: #d50000 !important;\n}\n\n.pink {\n background-color: #e91e63 !important;\n}\n\n.pink-text {\n color: #e91e63 !important;\n}\n\n.pink-waves .waves-ripple {\n background-color: #e91e63 !important;\n}\n\n.pink.lighten-5 {\n background-color: #fce4ec !important;\n}\n\n.pink-text.text-lighten-5 {\n color: #fce4ec !important;\n}\n\n.pink-waves.waves-lighten-5 .waves-ripple {\n background-color: #fce4ec !important;\n}\n\n.pink.lighten-4 {\n background-color: #f8bbd0 !important;\n}\n\n.pink-text.text-lighten-4 {\n color: #f8bbd0 !important;\n}\n\n.pink-waves.waves-lighten-4 .waves-ripple {\n background-color: #f8bbd0 !important;\n}\n\n.pink.lighten-3 {\n background-color: #f48fb1 !important;\n}\n\n.pink-text.text-lighten-3 {\n color: #f48fb1 !important;\n}\n\n.pink-waves.waves-lighten-3 .waves-ripple {\n background-color: #f48fb1 !important;\n}\n\n.pink.lighten-2 {\n background-color: #f06292 !important;\n}\n\n.pink-text.text-lighten-2 {\n color: #f06292 !important;\n}\n\n.pink-waves.waves-lighten-2 .waves-ripple {\n background-color: #f06292 !important;\n}\n\n.pink.lighten-1 {\n background-color: #ec407a !important;\n}\n\n.pink-text.text-lighten-1 {\n color: #ec407a !important;\n}\n\n.pink-waves.waves-lighten-1 .waves-ripple {\n background-color: #ec407a !important;\n}\n\n.pink.darken-1 {\n background-color: #d81b60 !important;\n}\n\n.pink-text.text-darken-1 {\n color: #d81b60 !important;\n}\n\n.pink-waves.waves-darken-1 .waves-ripple {\n background-color: #d81b60 !important;\n}\n\n.pink.darken-2 {\n background-color: #c2185b !important;\n}\n\n.pink-text.text-darken-2 {\n color: #c2185b !important;\n}\n\n.pink-waves.waves-darken-2 .waves-ripple {\n background-color: #c2185b !important;\n}\n\n.pink.darken-3 {\n background-color: #ad1457 !important;\n}\n\n.pink-text.text-darken-3 {\n color: #ad1457 !important;\n}\n\n.pink-waves.waves-darken-3 .waves-ripple {\n background-color: #ad1457 !important;\n}\n\n.pink.darken-4 {\n background-color: #880e4f !important;\n}\n\n.pink-text.text-darken-4 {\n color: #880e4f !important;\n}\n\n.pink-waves.waves-darken-4 .waves-ripple {\n background-color: #880e4f !important;\n}\n\n.pink.accent-1 {\n background-color: #ff80ab !important;\n}\n\n.pink-text.text-accent-1 {\n color: #ff80ab !important;\n}\n\n.pink-waves.waves-accent-1 .waves-ripple {\n background-color: #ff80ab !important;\n}\n\n.pink.accent-2 {\n background-color: #ff4081 !important;\n}\n\n.pink-text.text-accent-2 {\n color: #ff4081 !important;\n}\n\n.pink-waves.waves-accent-2 .waves-ripple {\n background-color: #ff4081 !important;\n}\n\n.pink.accent-3 {\n background-color: #f50057 !important;\n}\n\n.pink-text.text-accent-3 {\n color: #f50057 !important;\n}\n\n.pink-waves.waves-accent-3 .waves-ripple {\n background-color: #f50057 !important;\n}\n\n.pink.accent-4 {\n background-color: #c51162 !important;\n}\n\n.pink-text.text-accent-4 {\n color: #c51162 !important;\n}\n\n.pink-waves.waves-accent-4 .waves-ripple {\n background-color: #c51162 !important;\n}\n\n.purple {\n background-color: #9c27b0 !important;\n}\n\n.purple-text {\n color: #9c27b0 !important;\n}\n\n.purple-waves .waves-ripple {\n background-color: #9c27b0 !important;\n}\n\n.purple.lighten-5 {\n background-color: #f3e5f5 !important;\n}\n\n.purple-text.text-lighten-5 {\n color: #f3e5f5 !important;\n}\n\n.purple-waves.waves-lighten-5 .waves-ripple {\n background-color: #f3e5f5 !important;\n}\n\n.purple.lighten-4 {\n background-color: #e1bee7 !important;\n}\n\n.purple-text.text-lighten-4 {\n color: #e1bee7 !important;\n}\n\n.purple-waves.waves-lighten-4 .waves-ripple {\n background-color: #e1bee7 !important;\n}\n\n.purple.lighten-3 {\n background-color: #ce93d8 !important;\n}\n\n.purple-text.text-lighten-3 {\n color: #ce93d8 !important;\n}\n\n.purple-waves.waves-lighten-3 .waves-ripple {\n background-color: #ce93d8 !important;\n}\n\n.purple.lighten-2 {\n background-color: #ba68c8 !important;\n}\n\n.purple-text.text-lighten-2 {\n color: #ba68c8 !important;\n}\n\n.purple-waves.waves-lighten-2 .waves-ripple {\n background-color: #ba68c8 !important;\n}\n\n.purple.lighten-1 {\n background-color: #ab47bc !important;\n}\n\n.purple-text.text-lighten-1 {\n color: #ab47bc !important;\n}\n\n.purple-waves.waves-lighten-1 .waves-ripple {\n background-color: #ab47bc !important;\n}\n\n.purple.darken-1 {\n background-color: #8e24aa !important;\n}\n\n.purple-text.text-darken-1 {\n color: #8e24aa !important;\n}\n\n.purple-waves.waves-darken-1 .waves-ripple {\n background-color: #8e24aa !important;\n}\n\n.purple.darken-2 {\n background-color: #7b1fa2 !important;\n}\n\n.purple-text.text-darken-2 {\n color: #7b1fa2 !important;\n}\n\n.purple-waves.waves-darken-2 .waves-ripple {\n background-color: #7b1fa2 !important;\n}\n\n.purple.darken-3 {\n background-color: #6a1b9a !important;\n}\n\n.purple-text.text-darken-3 {\n color: #6a1b9a !important;\n}\n\n.purple-waves.waves-darken-3 .waves-ripple {\n background-color: #6a1b9a !important;\n}\n\n.purple.darken-4 {\n background-color: #4a148c !important;\n}\n\n.purple-text.text-darken-4 {\n color: #4a148c !important;\n}\n\n.purple-waves.waves-darken-4 .waves-ripple {\n background-color: #4a148c !important;\n}\n\n.purple.accent-1 {\n background-color: #ea80fc !important;\n}\n\n.purple-text.text-accent-1 {\n color: #ea80fc !important;\n}\n\n.purple-waves.waves-accent-1 .waves-ripple {\n background-color: #ea80fc !important;\n}\n\n.purple.accent-2 {\n background-color: #e040fb !important;\n}\n\n.purple-text.text-accent-2 {\n color: #e040fb !important;\n}\n\n.purple-waves.waves-accent-2 .waves-ripple {\n background-color: #e040fb !important;\n}\n\n.purple.accent-3 {\n background-color: #d500f9 !important;\n}\n\n.purple-text.text-accent-3 {\n color: #d500f9 !important;\n}\n\n.purple-waves.waves-accent-3 .waves-ripple {\n background-color: #d500f9 !important;\n}\n\n.purple.accent-4 {\n background-color: #aa00ff !important;\n}\n\n.purple-text.text-accent-4 {\n color: #aa00ff !important;\n}\n\n.purple-waves.waves-accent-4 .waves-ripple {\n background-color: #aa00ff !important;\n}\n\n.deep-purple {\n background-color: #673ab7 !important;\n}\n\n.deep-purple-text {\n color: #673ab7 !important;\n}\n\n.deep-purple-waves .waves-ripple {\n background-color: #673ab7 !important;\n}\n\n.deep-purple.lighten-5 {\n background-color: #ede7f6 !important;\n}\n\n.deep-purple-text.text-lighten-5 {\n color: #ede7f6 !important;\n}\n\n.deep-purple-waves.waves-lighten-5 .waves-ripple {\n background-color: #ede7f6 !important;\n}\n\n.deep-purple.lighten-4 {\n background-color: #d1c4e9 !important;\n}\n\n.deep-purple-text.text-lighten-4 {\n color: #d1c4e9 !important;\n}\n\n.deep-purple-waves.waves-lighten-4 .waves-ripple {\n background-color: #d1c4e9 !important;\n}\n\n.deep-purple.lighten-3 {\n background-color: #b39ddb !important;\n}\n\n.deep-purple-text.text-lighten-3 {\n color: #b39ddb !important;\n}\n\n.deep-purple-waves.waves-lighten-3 .waves-ripple {\n background-color: #b39ddb !important;\n}\n\n.deep-purple.lighten-2 {\n background-color: #9575cd !important;\n}\n\n.deep-purple-text.text-lighten-2 {\n color: #9575cd !important;\n}\n\n.deep-purple-waves.waves-lighten-2 .waves-ripple {\n background-color: #9575cd !important;\n}\n\n.deep-purple.lighten-1 {\n background-color: #7e57c2 !important;\n}\n\n.deep-purple-text.text-lighten-1 {\n color: #7e57c2 !important;\n}\n\n.deep-purple-waves.waves-lighten-1 .waves-ripple {\n background-color: #7e57c2 !important;\n}\n\n.deep-purple.darken-1 {\n background-color: #5e35b1 !important;\n}\n\n.deep-purple-text.text-darken-1 {\n color: #5e35b1 !important;\n}\n\n.deep-purple-waves.waves-darken-1 .waves-ripple {\n background-color: #5e35b1 !important;\n}\n\n.deep-purple.darken-2 {\n background-color: #512da8 !important;\n}\n\n.deep-purple-text.text-darken-2 {\n color: #512da8 !important;\n}\n\n.deep-purple-waves.waves-darken-2 .waves-ripple {\n background-color: #512da8 !important;\n}\n\n.deep-purple.darken-3 {\n background-color: #4527a0 !important;\n}\n\n.deep-purple-text.text-darken-3 {\n color: #4527a0 !important;\n}\n\n.deep-purple-waves.waves-darken-3 .waves-ripple {\n background-color: #4527a0 !important;\n}\n\n.deep-purple.darken-4 {\n background-color: #311b92 !important;\n}\n\n.deep-purple-text.text-darken-4 {\n color: #311b92 !important;\n}\n\n.deep-purple-waves.waves-darken-4 .waves-ripple {\n background-color: #311b92 !important;\n}\n\n.deep-purple.accent-1 {\n background-color: #b388ff !important;\n}\n\n.deep-purple-text.text-accent-1 {\n color: #b388ff !important;\n}\n\n.deep-purple-waves.waves-accent-1 .waves-ripple {\n background-color: #b388ff !important;\n}\n\n.deep-purple.accent-2 {\n background-color: #7c4dff !important;\n}\n\n.deep-purple-text.text-accent-2 {\n color: #7c4dff !important;\n}\n\n.deep-purple-waves.waves-accent-2 .waves-ripple {\n background-color: #7c4dff !important;\n}\n\n.deep-purple.accent-3 {\n background-color: #651fff !important;\n}\n\n.deep-purple-text.text-accent-3 {\n color: #651fff !important;\n}\n\n.deep-purple-waves.waves-accent-3 .waves-ripple {\n background-color: #651fff !important;\n}\n\n.deep-purple.accent-4 {\n background-color: #6200ea !important;\n}\n\n.deep-purple-text.text-accent-4 {\n color: #6200ea !important;\n}\n\n.deep-purple-waves.waves-accent-4 .waves-ripple {\n background-color: #6200ea !important;\n}\n\n.indigo {\n background-color: #3f51b5 !important;\n}\n\n.indigo-text {\n color: #3f51b5 !important;\n}\n\n.indigo-waves .waves-ripple {\n background-color: #3f51b5 !important;\n}\n\n.indigo.lighten-5 {\n background-color: #e8eaf6 !important;\n}\n\n.indigo-text.text-lighten-5 {\n color: #e8eaf6 !important;\n}\n\n.indigo-waves.waves-lighten-5 .waves-ripple {\n background-color: #e8eaf6 !important;\n}\n\n.indigo.lighten-4 {\n background-color: #c5cae9 !important;\n}\n\n.indigo-text.text-lighten-4 {\n color: #c5cae9 !important;\n}\n\n.indigo-waves.waves-lighten-4 .waves-ripple {\n background-color: #c5cae9 !important;\n}\n\n.indigo.lighten-3 {\n background-color: #9fa8da !important;\n}\n\n.indigo-text.text-lighten-3 {\n color: #9fa8da !important;\n}\n\n.indigo-waves.waves-lighten-3 .waves-ripple {\n background-color: #9fa8da !important;\n}\n\n.indigo.lighten-2 {\n background-color: #7986cb !important;\n}\n\n.indigo-text.text-lighten-2 {\n color: #7986cb !important;\n}\n\n.indigo-waves.waves-lighten-2 .waves-ripple {\n background-color: #7986cb !important;\n}\n\n.indigo.lighten-1 {\n background-color: #5c6bc0 !important;\n}\n\n.indigo-text.text-lighten-1 {\n color: #5c6bc0 !important;\n}\n\n.indigo-waves.waves-lighten-1 .waves-ripple {\n background-color: #5c6bc0 !important;\n}\n\n.indigo.darken-1 {\n background-color: #3949ab !important;\n}\n\n.indigo-text.text-darken-1 {\n color: #3949ab !important;\n}\n\n.indigo-waves.waves-darken-1 .waves-ripple {\n background-color: #3949ab !important;\n}\n\n.indigo.darken-2 {\n background-color: #303f9f !important;\n}\n\n.indigo-text.text-darken-2 {\n color: #303f9f !important;\n}\n\n.indigo-waves.waves-darken-2 .waves-ripple {\n background-color: #303f9f !important;\n}\n\n.indigo.darken-3 {\n background-color: #283593 !important;\n}\n\n.indigo-text.text-darken-3 {\n color: #283593 !important;\n}\n\n.indigo-waves.waves-darken-3 .waves-ripple {\n background-color: #283593 !important;\n}\n\n.indigo.darken-4 {\n background-color: #1a237e !important;\n}\n\n.indigo-text.text-darken-4 {\n color: #1a237e !important;\n}\n\n.indigo-waves.waves-darken-4 .waves-ripple {\n background-color: #1a237e !important;\n}\n\n.indigo.accent-1 {\n background-color: #8c9eff !important;\n}\n\n.indigo-text.text-accent-1 {\n color: #8c9eff !important;\n}\n\n.indigo-waves.waves-accent-1 .waves-ripple {\n background-color: #8c9eff !important;\n}\n\n.indigo.accent-2 {\n background-color: #536dfe !important;\n}\n\n.indigo-text.text-accent-2 {\n color: #536dfe !important;\n}\n\n.indigo-waves.waves-accent-2 .waves-ripple {\n background-color: #536dfe !important;\n}\n\n.indigo.accent-3 {\n background-color: #3d5afe !important;\n}\n\n.indigo-text.text-accent-3 {\n color: #3d5afe !important;\n}\n\n.indigo-waves.waves-accent-3 .waves-ripple {\n background-color: #3d5afe !important;\n}\n\n.indigo.accent-4 {\n background-color: #304ffe !important;\n}\n\n.indigo-text.text-accent-4 {\n color: #304ffe !important;\n}\n\n.indigo-waves.waves-accent-4 .waves-ripple {\n background-color: #304ffe !important;\n}\n\n.blue {\n background-color: #2196f3 !important;\n}\n\n.blue-text {\n color: #2196f3 !important;\n}\n\n.blue-waves .waves-ripple {\n background-color: #2196f3 !important;\n}\n\n.blue.lighten-5 {\n background-color: #e3f2fd !important;\n}\n\n.blue-text.text-lighten-5 {\n color: #e3f2fd !important;\n}\n\n.blue-waves.waves-lighten-5 .waves-ripple {\n background-color: #e3f2fd !important;\n}\n\n.blue.lighten-4 {\n background-color: #bbdefb !important;\n}\n\n.blue-text.text-lighten-4 {\n color: #bbdefb !important;\n}\n\n.blue-waves.waves-lighten-4 .waves-ripple {\n background-color: #bbdefb !important;\n}\n\n.blue.lighten-3 {\n background-color: #90caf9 !important;\n}\n\n.blue-text.text-lighten-3 {\n color: #90caf9 !important;\n}\n\n.blue-waves.waves-lighten-3 .waves-ripple {\n background-color: #90caf9 !important;\n}\n\n.blue.lighten-2 {\n background-color: #64b5f6 !important;\n}\n\n.blue-text.text-lighten-2 {\n color: #64b5f6 !important;\n}\n\n.blue-waves.waves-lighten-2 .waves-ripple {\n background-color: #64b5f6 !important;\n}\n\n.blue.lighten-1 {\n background-color: #42a5f5 !important;\n}\n\n.blue-text.text-lighten-1 {\n color: #42a5f5 !important;\n}\n\n.blue-waves.waves-lighten-1 .waves-ripple {\n background-color: #42a5f5 !important;\n}\n\n.blue.darken-1 {\n background-color: #1e88e5 !important;\n}\n\n.blue-text.text-darken-1 {\n color: #1e88e5 !important;\n}\n\n.blue-waves.waves-darken-1 .waves-ripple {\n background-color: #1e88e5 !important;\n}\n\n.blue.darken-2 {\n background-color: #1976d2 !important;\n}\n\n.blue-text.text-darken-2 {\n color: #1976d2 !important;\n}\n\n.blue-waves.waves-darken-2 .waves-ripple {\n background-color: #1976d2 !important;\n}\n\n.blue.darken-3 {\n background-color: #1565c0 !important;\n}\n\n.blue-text.text-darken-3 {\n color: #1565c0 !important;\n}\n\n.blue-waves.waves-darken-3 .waves-ripple {\n background-color: #1565c0 !important;\n}\n\n.blue.darken-4 {\n background-color: #0d47a1 !important;\n}\n\n.blue-text.text-darken-4 {\n color: #0d47a1 !important;\n}\n\n.blue-waves.waves-darken-4 .waves-ripple {\n background-color: #0d47a1 !important;\n}\n\n.blue.accent-1 {\n background-color: #82b1ff !important;\n}\n\n.blue-text.text-accent-1 {\n color: #82b1ff !important;\n}\n\n.blue-waves.waves-accent-1 .waves-ripple {\n background-color: #82b1ff !important;\n}\n\n.blue.accent-2 {\n background-color: #448aff !important;\n}\n\n.blue-text.text-accent-2 {\n color: #448aff !important;\n}\n\n.blue-waves.waves-accent-2 .waves-ripple {\n background-color: #448aff !important;\n}\n\n.blue.accent-3 {\n background-color: #2979ff !important;\n}\n\n.blue-text.text-accent-3 {\n color: #2979ff !important;\n}\n\n.blue-waves.waves-accent-3 .waves-ripple {\n background-color: #2979ff !important;\n}\n\n.blue.accent-4 {\n background-color: #2962ff !important;\n}\n\n.blue-text.text-accent-4 {\n color: #2962ff !important;\n}\n\n.blue-waves.waves-accent-4 .waves-ripple {\n background-color: #2962ff !important;\n}\n\n.light-blue {\n background-color: #03a9f4 !important;\n}\n\n.light-blue-text {\n color: #03a9f4 !important;\n}\n\n.light-blue-waves .waves-ripple {\n background-color: #03a9f4 !important;\n}\n\n.light-blue.lighten-5 {\n background-color: #e1f5fe !important;\n}\n\n.light-blue-text.text-lighten-5 {\n color: #e1f5fe !important;\n}\n\n.light-blue-waves.waves-lighten-5 .waves-ripple {\n background-color: #e1f5fe !important;\n}\n\n.light-blue.lighten-4 {\n background-color: #b3e5fc !important;\n}\n\n.light-blue-text.text-lighten-4 {\n color: #b3e5fc !important;\n}\n\n.light-blue-waves.waves-lighten-4 .waves-ripple {\n background-color: #b3e5fc !important;\n}\n\n.light-blue.lighten-3 {\n background-color: #81d4fa !important;\n}\n\n.light-blue-text.text-lighten-3 {\n color: #81d4fa !important;\n}\n\n.light-blue-waves.waves-lighten-3 .waves-ripple {\n background-color: #81d4fa !important;\n}\n\n.light-blue.lighten-2 {\n background-color: #4fc3f7 !important;\n}\n\n.light-blue-text.text-lighten-2 {\n color: #4fc3f7 !important;\n}\n\n.light-blue-waves.waves-lighten-2 .waves-ripple {\n background-color: #4fc3f7 !important;\n}\n\n.light-blue.lighten-1 {\n background-color: #29b6f6 !important;\n}\n\n.light-blue-text.text-lighten-1 {\n color: #29b6f6 !important;\n}\n\n.light-blue-waves.waves-lighten-1 .waves-ripple {\n background-color: #29b6f6 !important;\n}\n\n.light-blue.darken-1 {\n background-color: #039be5 !important;\n}\n\n.light-blue-text.text-darken-1 {\n color: #039be5 !important;\n}\n\n.light-blue-waves.waves-darken-1 .waves-ripple {\n background-color: #039be5 !important;\n}\n\n.light-blue.darken-2 {\n background-color: #0288d1 !important;\n}\n\n.light-blue-text.text-darken-2 {\n color: #0288d1 !important;\n}\n\n.light-blue-waves.waves-darken-2 .waves-ripple {\n background-color: #0288d1 !important;\n}\n\n.light-blue.darken-3 {\n background-color: #0277bd !important;\n}\n\n.light-blue-text.text-darken-3 {\n color: #0277bd !important;\n}\n\n.light-blue-waves.waves-darken-3 .waves-ripple {\n background-color: #0277bd !important;\n}\n\n.light-blue.darken-4 {\n background-color: #01579b !important;\n}\n\n.light-blue-text.text-darken-4 {\n color: #01579b !important;\n}\n\n.light-blue-waves.waves-darken-4 .waves-ripple {\n background-color: #01579b !important;\n}\n\n.light-blue.accent-1 {\n background-color: #80d8ff !important;\n}\n\n.light-blue-text.text-accent-1 {\n color: #80d8ff !important;\n}\n\n.light-blue-waves.waves-accent-1 .waves-ripple {\n background-color: #80d8ff !important;\n}\n\n.light-blue.accent-2 {\n background-color: #40c4ff !important;\n}\n\n.light-blue-text.text-accent-2 {\n color: #40c4ff !important;\n}\n\n.light-blue-waves.waves-accent-2 .waves-ripple {\n background-color: #40c4ff !important;\n}\n\n.light-blue.accent-3 {\n background-color: #00b0ff !important;\n}\n\n.light-blue-text.text-accent-3 {\n color: #00b0ff !important;\n}\n\n.light-blue-waves.waves-accent-3 .waves-ripple {\n background-color: #00b0ff !important;\n}\n\n.light-blue.accent-4 {\n background-color: #0091ea !important;\n}\n\n.light-blue-text.text-accent-4 {\n color: #0091ea !important;\n}\n\n.light-blue-waves.waves-accent-4 .waves-ripple {\n background-color: #0091ea !important;\n}\n\n.cyan {\n background-color: #00bcd4 !important;\n}\n\n.cyan-text {\n color: #00bcd4 !important;\n}\n\n.cyan-waves .waves-ripple {\n background-color: #00bcd4 !important;\n}\n\n.cyan.lighten-5 {\n background-color: #e0f7fa !important;\n}\n\n.cyan-text.text-lighten-5 {\n color: #e0f7fa !important;\n}\n\n.cyan-waves.waves-lighten-5 .waves-ripple {\n background-color: #e0f7fa !important;\n}\n\n.cyan.lighten-4 {\n background-color: #b2ebf2 !important;\n}\n\n.cyan-text.text-lighten-4 {\n color: #b2ebf2 !important;\n}\n\n.cyan-waves.waves-lighten-4 .waves-ripple {\n background-color: #b2ebf2 !important;\n}\n\n.cyan.lighten-3 {\n background-color: #80deea !important;\n}\n\n.cyan-text.text-lighten-3 {\n color: #80deea !important;\n}\n\n.cyan-waves.waves-lighten-3 .waves-ripple {\n background-color: #80deea !important;\n}\n\n.cyan.lighten-2 {\n background-color: #4dd0e1 !important;\n}\n\n.cyan-text.text-lighten-2 {\n color: #4dd0e1 !important;\n}\n\n.cyan-waves.waves-lighten-2 .waves-ripple {\n background-color: #4dd0e1 !important;\n}\n\n.cyan.lighten-1 {\n background-color: #26c6da !important;\n}\n\n.cyan-text.text-lighten-1 {\n color: #26c6da !important;\n}\n\n.cyan-waves.waves-lighten-1 .waves-ripple {\n background-color: #26c6da !important;\n}\n\n.cyan.darken-1 {\n background-color: #00acc1 !important;\n}\n\n.cyan-text.text-darken-1 {\n color: #00acc1 !important;\n}\n\n.cyan-waves.waves-darken-1 .waves-ripple {\n background-color: #00acc1 !important;\n}\n\n.cyan.darken-2 {\n background-color: #0097a7 !important;\n}\n\n.cyan-text.text-darken-2 {\n color: #0097a7 !important;\n}\n\n.cyan-waves.waves-darken-2 .waves-ripple {\n background-color: #0097a7 !important;\n}\n\n.cyan.darken-3 {\n background-color: #00838f !important;\n}\n\n.cyan-text.text-darken-3 {\n color: #00838f !important;\n}\n\n.cyan-waves.waves-darken-3 .waves-ripple {\n background-color: #00838f !important;\n}\n\n.cyan.darken-4 {\n background-color: #006064 !important;\n}\n\n.cyan-text.text-darken-4 {\n color: #006064 !important;\n}\n\n.cyan-waves.waves-darken-4 .waves-ripple {\n background-color: #006064 !important;\n}\n\n.cyan.accent-1 {\n background-color: #84ffff !important;\n}\n\n.cyan-text.text-accent-1 {\n color: #84ffff !important;\n}\n\n.cyan-waves.waves-accent-1 .waves-ripple {\n background-color: #84ffff !important;\n}\n\n.cyan.accent-2 {\n background-color: #18ffff !important;\n}\n\n.cyan-text.text-accent-2 {\n color: #18ffff !important;\n}\n\n.cyan-waves.waves-accent-2 .waves-ripple {\n background-color: #18ffff !important;\n}\n\n.cyan.accent-3 {\n background-color: #00e5ff !important;\n}\n\n.cyan-text.text-accent-3 {\n color: #00e5ff !important;\n}\n\n.cyan-waves.waves-accent-3 .waves-ripple {\n background-color: #00e5ff !important;\n}\n\n.cyan.accent-4 {\n background-color: #00b8d4 !important;\n}\n\n.cyan-text.text-accent-4 {\n color: #00b8d4 !important;\n}\n\n.cyan-waves.waves-accent-4 .waves-ripple {\n background-color: #00b8d4 !important;\n}\n\n.teal {\n background-color: #009688 !important;\n}\n\n.teal-text {\n color: #009688 !important;\n}\n\n.teal-waves .waves-ripple {\n background-color: #009688 !important;\n}\n\n.teal.lighten-5 {\n background-color: #e0f2f1 !important;\n}\n\n.teal-text.text-lighten-5 {\n color: #e0f2f1 !important;\n}\n\n.teal-waves.waves-lighten-5 .waves-ripple {\n background-color: #e0f2f1 !important;\n}\n\n.teal.lighten-4 {\n background-color: #b2dfdb !important;\n}\n\n.teal-text.text-lighten-4 {\n color: #b2dfdb !important;\n}\n\n.teal-waves.waves-lighten-4 .waves-ripple {\n background-color: #b2dfdb !important;\n}\n\n.teal.lighten-3 {\n background-color: #80cbc4 !important;\n}\n\n.teal-text.text-lighten-3 {\n color: #80cbc4 !important;\n}\n\n.teal-waves.waves-lighten-3 .waves-ripple {\n background-color: #80cbc4 !important;\n}\n\n.teal.lighten-2 {\n background-color: #4db6ac !important;\n}\n\n.teal-text.text-lighten-2 {\n color: #4db6ac !important;\n}\n\n.teal-waves.waves-lighten-2 .waves-ripple {\n background-color: #4db6ac !important;\n}\n\n.teal.lighten-1 {\n background-color: #26a69a !important;\n}\n\n.teal-text.text-lighten-1 {\n color: #26a69a !important;\n}\n\n.teal-waves.waves-lighten-1 .waves-ripple {\n background-color: #26a69a !important;\n}\n\n.teal.darken-1 {\n background-color: #00897b !important;\n}\n\n.teal-text.text-darken-1 {\n color: #00897b !important;\n}\n\n.teal-waves.waves-darken-1 .waves-ripple {\n background-color: #00897b !important;\n}\n\n.teal.darken-2 {\n background-color: #00796b !important;\n}\n\n.teal-text.text-darken-2 {\n color: #00796b !important;\n}\n\n.teal-waves.waves-darken-2 .waves-ripple {\n background-color: #00796b !important;\n}\n\n.teal.darken-3 {\n background-color: #00695c !important;\n}\n\n.teal-text.text-darken-3 {\n color: #00695c !important;\n}\n\n.teal-waves.waves-darken-3 .waves-ripple {\n background-color: #00695c !important;\n}\n\n.teal.darken-4 {\n background-color: #004d40 !important;\n}\n\n.teal-text.text-darken-4 {\n color: #004d40 !important;\n}\n\n.teal-waves.waves-darken-4 .waves-ripple {\n background-color: #004d40 !important;\n}\n\n.teal.accent-1 {\n background-color: #a7ffeb !important;\n}\n\n.teal-text.text-accent-1 {\n color: #a7ffeb !important;\n}\n\n.teal-waves.waves-accent-1 .waves-ripple {\n background-color: #a7ffeb !important;\n}\n\n.teal.accent-2 {\n background-color: #64ffda !important;\n}\n\n.teal-text.text-accent-2 {\n color: #64ffda !important;\n}\n\n.teal-waves.waves-accent-2 .waves-ripple {\n background-color: #64ffda !important;\n}\n\n.teal.accent-3 {\n background-color: #1de9b6 !important;\n}\n\n.teal-text.text-accent-3 {\n color: #1de9b6 !important;\n}\n\n.teal-waves.waves-accent-3 .waves-ripple {\n background-color: #1de9b6 !important;\n}\n\n.teal.accent-4 {\n background-color: #00bfa5 !important;\n}\n\n.teal-text.text-accent-4 {\n color: #00bfa5 !important;\n}\n\n.teal-waves.waves-accent-4 .waves-ripple {\n background-color: #00bfa5 !important;\n}\n\n.green {\n background-color: #4caf50 !important;\n}\n\n.green-text {\n color: #4caf50 !important;\n}\n\n.green-waves .waves-ripple {\n background-color: #4caf50 !important;\n}\n\n.green.lighten-5 {\n background-color: #e8f5e9 !important;\n}\n\n.green-text.text-lighten-5 {\n color: #e8f5e9 !important;\n}\n\n.green-waves.waves-lighten-5 .waves-ripple {\n background-color: #e8f5e9 !important;\n}\n\n.green.lighten-4 {\n background-color: #c8e6c9 !important;\n}\n\n.green-text.text-lighten-4 {\n color: #c8e6c9 !important;\n}\n\n.green-waves.waves-lighten-4 .waves-ripple {\n background-color: #c8e6c9 !important;\n}\n\n.green.lighten-3 {\n background-color: #a5d6a7 !important;\n}\n\n.green-text.text-lighten-3 {\n color: #a5d6a7 !important;\n}\n\n.green-waves.waves-lighten-3 .waves-ripple {\n background-color: #a5d6a7 !important;\n}\n\n.green.lighten-2 {\n background-color: #81c784 !important;\n}\n\n.green-text.text-lighten-2 {\n color: #81c784 !important;\n}\n\n.green-waves.waves-lighten-2 .waves-ripple {\n background-color: #81c784 !important;\n}\n\n.green.lighten-1 {\n background-color: #66bb6a !important;\n}\n\n.green-text.text-lighten-1 {\n color: #66bb6a !important;\n}\n\n.green-waves.waves-lighten-1 .waves-ripple {\n background-color: #66bb6a !important;\n}\n\n.green.darken-1 {\n background-color: #43a047 !important;\n}\n\n.green-text.text-darken-1 {\n color: #43a047 !important;\n}\n\n.green-waves.waves-darken-1 .waves-ripple {\n background-color: #43a047 !important;\n}\n\n.green.darken-2 {\n background-color: #388e3c !important;\n}\n\n.green-text.text-darken-2 {\n color: #388e3c !important;\n}\n\n.green-waves.waves-darken-2 .waves-ripple {\n background-color: #388e3c !important;\n}\n\n.green.darken-3 {\n background-color: #2e7d32 !important;\n}\n\n.green-text.text-darken-3 {\n color: #2e7d32 !important;\n}\n\n.green-waves.waves-darken-3 .waves-ripple {\n background-color: #2e7d32 !important;\n}\n\n.green.darken-4 {\n background-color: #1b5e20 !important;\n}\n\n.green-text.text-darken-4 {\n color: #1b5e20 !important;\n}\n\n.green-waves.waves-darken-4 .waves-ripple {\n background-color: #1b5e20 !important;\n}\n\n.green.accent-1 {\n background-color: #b9f6ca !important;\n}\n\n.green-text.text-accent-1 {\n color: #b9f6ca !important;\n}\n\n.green-waves.waves-accent-1 .waves-ripple {\n background-color: #b9f6ca !important;\n}\n\n.green.accent-2 {\n background-color: #69f0ae !important;\n}\n\n.green-text.text-accent-2 {\n color: #69f0ae !important;\n}\n\n.green-waves.waves-accent-2 .waves-ripple {\n background-color: #69f0ae !important;\n}\n\n.green.accent-3 {\n background-color: #00e676 !important;\n}\n\n.green-text.text-accent-3 {\n color: #00e676 !important;\n}\n\n.green-waves.waves-accent-3 .waves-ripple {\n background-color: #00e676 !important;\n}\n\n.green.accent-4 {\n background-color: #00c853 !important;\n}\n\n.green-text.text-accent-4 {\n color: #00c853 !important;\n}\n\n.green-waves.waves-accent-4 .waves-ripple {\n background-color: #00c853 !important;\n}\n\n.light-green {\n background-color: #8bc34a !important;\n}\n\n.light-green-text {\n color: #8bc34a !important;\n}\n\n.light-green-waves .waves-ripple {\n background-color: #8bc34a !important;\n}\n\n.light-green.lighten-5 {\n background-color: #f1f8e9 !important;\n}\n\n.light-green-text.text-lighten-5 {\n color: #f1f8e9 !important;\n}\n\n.light-green-waves.waves-lighten-5 .waves-ripple {\n background-color: #f1f8e9 !important;\n}\n\n.light-green.lighten-4 {\n background-color: #dcedc8 !important;\n}\n\n.light-green-text.text-lighten-4 {\n color: #dcedc8 !important;\n}\n\n.light-green-waves.waves-lighten-4 .waves-ripple {\n background-color: #dcedc8 !important;\n}\n\n.light-green.lighten-3 {\n background-color: #c5e1a5 !important;\n}\n\n.light-green-text.text-lighten-3 {\n color: #c5e1a5 !important;\n}\n\n.light-green-waves.waves-lighten-3 .waves-ripple {\n background-color: #c5e1a5 !important;\n}\n\n.light-green.lighten-2 {\n background-color: #aed581 !important;\n}\n\n.light-green-text.text-lighten-2 {\n color: #aed581 !important;\n}\n\n.light-green-waves.waves-lighten-2 .waves-ripple {\n background-color: #aed581 !important;\n}\n\n.light-green.lighten-1 {\n background-color: #9ccc65 !important;\n}\n\n.light-green-text.text-lighten-1 {\n color: #9ccc65 !important;\n}\n\n.light-green-waves.waves-lighten-1 .waves-ripple {\n background-color: #9ccc65 !important;\n}\n\n.light-green.darken-1 {\n background-color: #7cb342 !important;\n}\n\n.light-green-text.text-darken-1 {\n color: #7cb342 !important;\n}\n\n.light-green-waves.waves-darken-1 .waves-ripple {\n background-color: #7cb342 !important;\n}\n\n.light-green.darken-2 {\n background-color: #689f38 !important;\n}\n\n.light-green-text.text-darken-2 {\n color: #689f38 !important;\n}\n\n.light-green-waves.waves-darken-2 .waves-ripple {\n background-color: #689f38 !important;\n}\n\n.light-green.darken-3 {\n background-color: #558b2f !important;\n}\n\n.light-green-text.text-darken-3 {\n color: #558b2f !important;\n}\n\n.light-green-waves.waves-darken-3 .waves-ripple {\n background-color: #558b2f !important;\n}\n\n.light-green.darken-4 {\n background-color: #33691e !important;\n}\n\n.light-green-text.text-darken-4 {\n color: #33691e !important;\n}\n\n.light-green-waves.waves-darken-4 .waves-ripple {\n background-color: #33691e !important;\n}\n\n.light-green.accent-1 {\n background-color: #ccff90 !important;\n}\n\n.light-green-text.text-accent-1 {\n color: #ccff90 !important;\n}\n\n.light-green-waves.waves-accent-1 .waves-ripple {\n background-color: #ccff90 !important;\n}\n\n.light-green.accent-2 {\n background-color: #b2ff59 !important;\n}\n\n.light-green-text.text-accent-2 {\n color: #b2ff59 !important;\n}\n\n.light-green-waves.waves-accent-2 .waves-ripple {\n background-color: #b2ff59 !important;\n}\n\n.light-green.accent-3 {\n background-color: #76ff03 !important;\n}\n\n.light-green-text.text-accent-3 {\n color: #76ff03 !important;\n}\n\n.light-green-waves.waves-accent-3 .waves-ripple {\n background-color: #76ff03 !important;\n}\n\n.light-green.accent-4 {\n background-color: #64dd17 !important;\n}\n\n.light-green-text.text-accent-4 {\n color: #64dd17 !important;\n}\n\n.light-green-waves.waves-accent-4 .waves-ripple {\n background-color: #64dd17 !important;\n}\n\n.lime {\n background-color: #cddc39 !important;\n}\n\n.lime-text {\n color: #cddc39 !important;\n}\n\n.lime-waves .waves-ripple {\n background-color: #cddc39 !important;\n}\n\n.lime.lighten-5 {\n background-color: #f9fbe7 !important;\n}\n\n.lime-text.text-lighten-5 {\n color: #f9fbe7 !important;\n}\n\n.lime-waves.waves-lighten-5 .waves-ripple {\n background-color: #f9fbe7 !important;\n}\n\n.lime.lighten-4 {\n background-color: #f0f4c3 !important;\n}\n\n.lime-text.text-lighten-4 {\n color: #f0f4c3 !important;\n}\n\n.lime-waves.waves-lighten-4 .waves-ripple {\n background-color: #f0f4c3 !important;\n}\n\n.lime.lighten-3 {\n background-color: #e6ee9c !important;\n}\n\n.lime-text.text-lighten-3 {\n color: #e6ee9c !important;\n}\n\n.lime-waves.waves-lighten-3 .waves-ripple {\n background-color: #e6ee9c !important;\n}\n\n.lime.lighten-2 {\n background-color: #dce775 !important;\n}\n\n.lime-text.text-lighten-2 {\n color: #dce775 !important;\n}\n\n.lime-waves.waves-lighten-2 .waves-ripple {\n background-color: #dce775 !important;\n}\n\n.lime.lighten-1 {\n background-color: #d4e157 !important;\n}\n\n.lime-text.text-lighten-1 {\n color: #d4e157 !important;\n}\n\n.lime-waves.waves-lighten-1 .waves-ripple {\n background-color: #d4e157 !important;\n}\n\n.lime.darken-1 {\n background-color: #c0ca33 !important;\n}\n\n.lime-text.text-darken-1 {\n color: #c0ca33 !important;\n}\n\n.lime-waves.waves-darken-1 .waves-ripple {\n background-color: #c0ca33 !important;\n}\n\n.lime.darken-2 {\n background-color: #afb42b !important;\n}\n\n.lime-text.text-darken-2 {\n color: #afb42b !important;\n}\n\n.lime-waves.waves-darken-2 .waves-ripple {\n background-color: #afb42b !important;\n}\n\n.lime.darken-3 {\n background-color: #9e9d24 !important;\n}\n\n.lime-text.text-darken-3 {\n color: #9e9d24 !important;\n}\n\n.lime-waves.waves-darken-3 .waves-ripple {\n background-color: #9e9d24 !important;\n}\n\n.lime.darken-4 {\n background-color: #827717 !important;\n}\n\n.lime-text.text-darken-4 {\n color: #827717 !important;\n}\n\n.lime-waves.waves-darken-4 .waves-ripple {\n background-color: #827717 !important;\n}\n\n.lime.accent-1 {\n background-color: #f4ff81 !important;\n}\n\n.lime-text.text-accent-1 {\n color: #f4ff81 !important;\n}\n\n.lime-waves.waves-accent-1 .waves-ripple {\n background-color: #f4ff81 !important;\n}\n\n.lime.accent-2 {\n background-color: #eeff41 !important;\n}\n\n.lime-text.text-accent-2 {\n color: #eeff41 !important;\n}\n\n.lime-waves.waves-accent-2 .waves-ripple {\n background-color: #eeff41 !important;\n}\n\n.lime.accent-3 {\n background-color: #c6ff00 !important;\n}\n\n.lime-text.text-accent-3 {\n color: #c6ff00 !important;\n}\n\n.lime-waves.waves-accent-3 .waves-ripple {\n background-color: #c6ff00 !important;\n}\n\n.lime.accent-4 {\n background-color: #aeea00 !important;\n}\n\n.lime-text.text-accent-4 {\n color: #aeea00 !important;\n}\n\n.lime-waves.waves-accent-4 .waves-ripple {\n background-color: #aeea00 !important;\n}\n\n.yellow {\n background-color: #ffeb3b !important;\n}\n\n.yellow-text {\n color: #ffeb3b !important;\n}\n\n.yellow-waves .waves-ripple {\n background-color: #ffeb3b !important;\n}\n\n.yellow.lighten-5 {\n background-color: #fffde7 !important;\n}\n\n.yellow-text.text-lighten-5 {\n color: #fffde7 !important;\n}\n\n.yellow-waves.waves-lighten-5 .waves-ripple {\n background-color: #fffde7 !important;\n}\n\n.yellow.lighten-4 {\n background-color: #fff9c4 !important;\n}\n\n.yellow-text.text-lighten-4 {\n color: #fff9c4 !important;\n}\n\n.yellow-waves.waves-lighten-4 .waves-ripple {\n background-color: #fff9c4 !important;\n}\n\n.yellow.lighten-3 {\n background-color: #fff59d !important;\n}\n\n.yellow-text.text-lighten-3 {\n color: #fff59d !important;\n}\n\n.yellow-waves.waves-lighten-3 .waves-ripple {\n background-color: #fff59d !important;\n}\n\n.yellow.lighten-2 {\n background-color: #fff176 !important;\n}\n\n.yellow-text.text-lighten-2 {\n color: #fff176 !important;\n}\n\n.yellow-waves.waves-lighten-2 .waves-ripple {\n background-color: #fff176 !important;\n}\n\n.yellow.lighten-1 {\n background-color: #ffee58 !important;\n}\n\n.yellow-text.text-lighten-1 {\n color: #ffee58 !important;\n}\n\n.yellow-waves.waves-lighten-1 .waves-ripple {\n background-color: #ffee58 !important;\n}\n\n.yellow.darken-1 {\n background-color: #fdd835 !important;\n}\n\n.yellow-text.text-darken-1 {\n color: #fdd835 !important;\n}\n\n.yellow-waves.waves-darken-1 .waves-ripple {\n background-color: #fdd835 !important;\n}\n\n.yellow.darken-2 {\n background-color: #fbc02d !important;\n}\n\n.yellow-text.text-darken-2 {\n color: #fbc02d !important;\n}\n\n.yellow-waves.waves-darken-2 .waves-ripple {\n background-color: #fbc02d !important;\n}\n\n.yellow.darken-3 {\n background-color: #f9a825 !important;\n}\n\n.yellow-text.text-darken-3 {\n color: #f9a825 !important;\n}\n\n.yellow-waves.waves-darken-3 .waves-ripple {\n background-color: #f9a825 !important;\n}\n\n.yellow.darken-4 {\n background-color: #f57f17 !important;\n}\n\n.yellow-text.text-darken-4 {\n color: #f57f17 !important;\n}\n\n.yellow-waves.waves-darken-4 .waves-ripple {\n background-color: #f57f17 !important;\n}\n\n.yellow.accent-1 {\n background-color: #ffff8d !important;\n}\n\n.yellow-text.text-accent-1 {\n color: #ffff8d !important;\n}\n\n.yellow-waves.waves-accent-1 .waves-ripple {\n background-color: #ffff8d !important;\n}\n\n.yellow.accent-2 {\n background-color: #ffff00 !important;\n}\n\n.yellow-text.text-accent-2 {\n color: #ffff00 !important;\n}\n\n.yellow-waves.waves-accent-2 .waves-ripple {\n background-color: #ffff00 !important;\n}\n\n.yellow.accent-3 {\n background-color: #ffea00 !important;\n}\n\n.yellow-text.text-accent-3 {\n color: #ffea00 !important;\n}\n\n.yellow-waves.waves-accent-3 .waves-ripple {\n background-color: #ffea00 !important;\n}\n\n.yellow.accent-4 {\n background-color: #ffd600 !important;\n}\n\n.yellow-text.text-accent-4 {\n color: #ffd600 !important;\n}\n\n.yellow-waves.waves-accent-4 .waves-ripple {\n background-color: #ffd600 !important;\n}\n\n.amber {\n background-color: #ffc107 !important;\n}\n\n.amber-text {\n color: #ffc107 !important;\n}\n\n.amber-waves .waves-ripple {\n background-color: #ffc107 !important;\n}\n\n.amber.lighten-5 {\n background-color: #fff8e1 !important;\n}\n\n.amber-text.text-lighten-5 {\n color: #fff8e1 !important;\n}\n\n.amber-waves.waves-lighten-5 .waves-ripple {\n background-color: #fff8e1 !important;\n}\n\n.amber.lighten-4 {\n background-color: #ffecb3 !important;\n}\n\n.amber-text.text-lighten-4 {\n color: #ffecb3 !important;\n}\n\n.amber-waves.waves-lighten-4 .waves-ripple {\n background-color: #ffecb3 !important;\n}\n\n.amber.lighten-3 {\n background-color: #ffe082 !important;\n}\n\n.amber-text.text-lighten-3 {\n color: #ffe082 !important;\n}\n\n.amber-waves.waves-lighten-3 .waves-ripple {\n background-color: #ffe082 !important;\n}\n\n.amber.lighten-2 {\n background-color: #ffd54f !important;\n}\n\n.amber-text.text-lighten-2 {\n color: #ffd54f !important;\n}\n\n.amber-waves.waves-lighten-2 .waves-ripple {\n background-color: #ffd54f !important;\n}\n\n.amber.lighten-1 {\n background-color: #ffca28 !important;\n}\n\n.amber-text.text-lighten-1 {\n color: #ffca28 !important;\n}\n\n.amber-waves.waves-lighten-1 .waves-ripple {\n background-color: #ffca28 !important;\n}\n\n.amber.darken-1 {\n background-color: #ffb300 !important;\n}\n\n.amber-text.text-darken-1 {\n color: #ffb300 !important;\n}\n\n.amber-waves.waves-darken-1 .waves-ripple {\n background-color: #ffb300 !important;\n}\n\n.amber.darken-2 {\n background-color: #ffa000 !important;\n}\n\n.amber-text.text-darken-2 {\n color: #ffa000 !important;\n}\n\n.amber-waves.waves-darken-2 .waves-ripple {\n background-color: #ffa000 !important;\n}\n\n.amber.darken-3 {\n background-color: #ff8f00 !important;\n}\n\n.amber-text.text-darken-3 {\n color: #ff8f00 !important;\n}\n\n.amber-waves.waves-darken-3 .waves-ripple {\n background-color: #ff8f00 !important;\n}\n\n.amber.darken-4 {\n background-color: #ff6f00 !important;\n}\n\n.amber-text.text-darken-4 {\n color: #ff6f00 !important;\n}\n\n.amber-waves.waves-darken-4 .waves-ripple {\n background-color: #ff6f00 !important;\n}\n\n.amber.accent-1 {\n background-color: #ffe57f !important;\n}\n\n.amber-text.text-accent-1 {\n color: #ffe57f !important;\n}\n\n.amber-waves.waves-accent-1 .waves-ripple {\n background-color: #ffe57f !important;\n}\n\n.amber.accent-2 {\n background-color: #ffd740 !important;\n}\n\n.amber-text.text-accent-2 {\n color: #ffd740 !important;\n}\n\n.amber-waves.waves-accent-2 .waves-ripple {\n background-color: #ffd740 !important;\n}\n\n.amber.accent-3 {\n background-color: #ffc400 !important;\n}\n\n.amber-text.text-accent-3 {\n color: #ffc400 !important;\n}\n\n.amber-waves.waves-accent-3 .waves-ripple {\n background-color: #ffc400 !important;\n}\n\n.amber.accent-4 {\n background-color: #ffab00 !important;\n}\n\n.amber-text.text-accent-4 {\n color: #ffab00 !important;\n}\n\n.amber-waves.waves-accent-4 .waves-ripple {\n background-color: #ffab00 !important;\n}\n\n.orange {\n background-color: #ff9800 !important;\n}\n\n.orange-text {\n color: #ff9800 !important;\n}\n\n.orange-waves .waves-ripple {\n background-color: #ff9800 !important;\n}\n\n.orange.lighten-5 {\n background-color: #fff3e0 !important;\n}\n\n.orange-text.text-lighten-5 {\n color: #fff3e0 !important;\n}\n\n.orange-waves.waves-lighten-5 .waves-ripple {\n background-color: #fff3e0 !important;\n}\n\n.orange.lighten-4 {\n background-color: #ffe0b2 !important;\n}\n\n.orange-text.text-lighten-4 {\n color: #ffe0b2 !important;\n}\n\n.orange-waves.waves-lighten-4 .waves-ripple {\n background-color: #ffe0b2 !important;\n}\n\n.orange.lighten-3 {\n background-color: #ffcc80 !important;\n}\n\n.orange-text.text-lighten-3 {\n color: #ffcc80 !important;\n}\n\n.orange-waves.waves-lighten-3 .waves-ripple {\n background-color: #ffcc80 !important;\n}\n\n.orange.lighten-2 {\n background-color: #ffb74d !important;\n}\n\n.orange-text.text-lighten-2 {\n color: #ffb74d !important;\n}\n\n.orange-waves.waves-lighten-2 .waves-ripple {\n background-color: #ffb74d !important;\n}\n\n.orange.lighten-1 {\n background-color: #ffa726 !important;\n}\n\n.orange-text.text-lighten-1 {\n color: #ffa726 !important;\n}\n\n.orange-waves.waves-lighten-1 .waves-ripple {\n background-color: #ffa726 !important;\n}\n\n.orange.darken-1 {\n background-color: #fb8c00 !important;\n}\n\n.orange-text.text-darken-1 {\n color: #fb8c00 !important;\n}\n\n.orange-waves.waves-darken-1 .waves-ripple {\n background-color: #fb8c00 !important;\n}\n\n.orange.darken-2 {\n background-color: #f57c00 !important;\n}\n\n.orange-text.text-darken-2 {\n color: #f57c00 !important;\n}\n\n.orange-waves.waves-darken-2 .waves-ripple {\n background-color: #f57c00 !important;\n}\n\n.orange.darken-3 {\n background-color: #ef6c00 !important;\n}\n\n.orange-text.text-darken-3 {\n color: #ef6c00 !important;\n}\n\n.orange-waves.waves-darken-3 .waves-ripple {\n background-color: #ef6c00 !important;\n}\n\n.orange.darken-4 {\n background-color: #e65100 !important;\n}\n\n.orange-text.text-darken-4 {\n color: #e65100 !important;\n}\n\n.orange-waves.waves-darken-4 .waves-ripple {\n background-color: #e65100 !important;\n}\n\n.orange.accent-1 {\n background-color: #ffd180 !important;\n}\n\n.orange-text.text-accent-1 {\n color: #ffd180 !important;\n}\n\n.orange-waves.waves-accent-1 .waves-ripple {\n background-color: #ffd180 !important;\n}\n\n.orange.accent-2 {\n background-color: #ffab40 !important;\n}\n\n.orange-text.text-accent-2 {\n color: #ffab40 !important;\n}\n\n.orange-waves.waves-accent-2 .waves-ripple {\n background-color: #ffab40 !important;\n}\n\n.orange.accent-3 {\n background-color: #ff9100 !important;\n}\n\n.orange-text.text-accent-3 {\n color: #ff9100 !important;\n}\n\n.orange-waves.waves-accent-3 .waves-ripple {\n background-color: #ff9100 !important;\n}\n\n.orange.accent-4 {\n background-color: #ff6d00 !important;\n}\n\n.orange-text.text-accent-4 {\n color: #ff6d00 !important;\n}\n\n.orange-waves.waves-accent-4 .waves-ripple {\n background-color: #ff6d00 !important;\n}\n\n.deep-orange {\n background-color: #ff5722 !important;\n}\n\n.deep-orange-text {\n color: #ff5722 !important;\n}\n\n.deep-orange-waves .waves-ripple {\n background-color: #ff5722 !important;\n}\n\n.deep-orange.lighten-5 {\n background-color: #fbe9e7 !important;\n}\n\n.deep-orange-text.text-lighten-5 {\n color: #fbe9e7 !important;\n}\n\n.deep-orange-waves.waves-lighten-5 .waves-ripple {\n background-color: #fbe9e7 !important;\n}\n\n.deep-orange.lighten-4 {\n background-color: #ffccbc !important;\n}\n\n.deep-orange-text.text-lighten-4 {\n color: #ffccbc !important;\n}\n\n.deep-orange-waves.waves-lighten-4 .waves-ripple {\n background-color: #ffccbc !important;\n}\n\n.deep-orange.lighten-3 {\n background-color: #ffab91 !important;\n}\n\n.deep-orange-text.text-lighten-3 {\n color: #ffab91 !important;\n}\n\n.deep-orange-waves.waves-lighten-3 .waves-ripple {\n background-color: #ffab91 !important;\n}\n\n.deep-orange.lighten-2 {\n background-color: #ff8a65 !important;\n}\n\n.deep-orange-text.text-lighten-2 {\n color: #ff8a65 !important;\n}\n\n.deep-orange-waves.waves-lighten-2 .waves-ripple {\n background-color: #ff8a65 !important;\n}\n\n.deep-orange.lighten-1 {\n background-color: #ff7043 !important;\n}\n\n.deep-orange-text.text-lighten-1 {\n color: #ff7043 !important;\n}\n\n.deep-orange-waves.waves-lighten-1 .waves-ripple {\n background-color: #ff7043 !important;\n}\n\n.deep-orange.darken-1 {\n background-color: #f4511e !important;\n}\n\n.deep-orange-text.text-darken-1 {\n color: #f4511e !important;\n}\n\n.deep-orange-waves.waves-darken-1 .waves-ripple {\n background-color: #f4511e !important;\n}\n\n.deep-orange.darken-2 {\n background-color: #e64a19 !important;\n}\n\n.deep-orange-text.text-darken-2 {\n color: #e64a19 !important;\n}\n\n.deep-orange-waves.waves-darken-2 .waves-ripple {\n background-color: #e64a19 !important;\n}\n\n.deep-orange.darken-3 {\n background-color: #d84315 !important;\n}\n\n.deep-orange-text.text-darken-3 {\n color: #d84315 !important;\n}\n\n.deep-orange-waves.waves-darken-3 .waves-ripple {\n background-color: #d84315 !important;\n}\n\n.deep-orange.darken-4 {\n background-color: #bf360c !important;\n}\n\n.deep-orange-text.text-darken-4 {\n color: #bf360c !important;\n}\n\n.deep-orange-waves.waves-darken-4 .waves-ripple {\n background-color: #bf360c !important;\n}\n\n.deep-orange.accent-1 {\n background-color: #ff9e80 !important;\n}\n\n.deep-orange-text.text-accent-1 {\n color: #ff9e80 !important;\n}\n\n.deep-orange-waves.waves-accent-1 .waves-ripple {\n background-color: #ff9e80 !important;\n}\n\n.deep-orange.accent-2 {\n background-color: #ff6e40 !important;\n}\n\n.deep-orange-text.text-accent-2 {\n color: #ff6e40 !important;\n}\n\n.deep-orange-waves.waves-accent-2 .waves-ripple {\n background-color: #ff6e40 !important;\n}\n\n.deep-orange.accent-3 {\n background-color: #ff3d00 !important;\n}\n\n.deep-orange-text.text-accent-3 {\n color: #ff3d00 !important;\n}\n\n.deep-orange-waves.waves-accent-3 .waves-ripple {\n background-color: #ff3d00 !important;\n}\n\n.deep-orange.accent-4 {\n background-color: #dd2c00 !important;\n}\n\n.deep-orange-text.text-accent-4 {\n color: #dd2c00 !important;\n}\n\n.deep-orange-waves.waves-accent-4 .waves-ripple {\n background-color: #dd2c00 !important;\n}\n\n.brown {\n background-color: #795548 !important;\n}\n\n.brown-text {\n color: #795548 !important;\n}\n\n.brown-waves .waves-ripple {\n background-color: #795548 !important;\n}\n\n.brown.lighten-5 {\n background-color: #efebe9 !important;\n}\n\n.brown-text.text-lighten-5 {\n color: #efebe9 !important;\n}\n\n.brown-waves.waves-lighten-5 .waves-ripple {\n background-color: #efebe9 !important;\n}\n\n.brown.lighten-4 {\n background-color: #d7ccc8 !important;\n}\n\n.brown-text.text-lighten-4 {\n color: #d7ccc8 !important;\n}\n\n.brown-waves.waves-lighten-4 .waves-ripple {\n background-color: #d7ccc8 !important;\n}\n\n.brown.lighten-3 {\n background-color: #bcaaa4 !important;\n}\n\n.brown-text.text-lighten-3 {\n color: #bcaaa4 !important;\n}\n\n.brown-waves.waves-lighten-3 .waves-ripple {\n background-color: #bcaaa4 !important;\n}\n\n.brown.lighten-2 {\n background-color: #a1887f !important;\n}\n\n.brown-text.text-lighten-2 {\n color: #a1887f !important;\n}\n\n.brown-waves.waves-lighten-2 .waves-ripple {\n background-color: #a1887f !important;\n}\n\n.brown.lighten-1 {\n background-color: #8d6e63 !important;\n}\n\n.brown-text.text-lighten-1 {\n color: #8d6e63 !important;\n}\n\n.brown-waves.waves-lighten-1 .waves-ripple {\n background-color: #8d6e63 !important;\n}\n\n.brown.darken-1 {\n background-color: #6d4c41 !important;\n}\n\n.brown-text.text-darken-1 {\n color: #6d4c41 !important;\n}\n\n.brown-waves.waves-darken-1 .waves-ripple {\n background-color: #6d4c41 !important;\n}\n\n.brown.darken-2 {\n background-color: #5d4037 !important;\n}\n\n.brown-text.text-darken-2 {\n color: #5d4037 !important;\n}\n\n.brown-waves.waves-darken-2 .waves-ripple {\n background-color: #5d4037 !important;\n}\n\n.brown.darken-3 {\n background-color: #4e342e !important;\n}\n\n.brown-text.text-darken-3 {\n color: #4e342e !important;\n}\n\n.brown-waves.waves-darken-3 .waves-ripple {\n background-color: #4e342e !important;\n}\n\n.brown.darken-4 {\n background-color: #3e2723 !important;\n}\n\n.brown-text.text-darken-4 {\n color: #3e2723 !important;\n}\n\n.brown-waves.waves-darken-4 .waves-ripple {\n background-color: #3e2723 !important;\n}\n\n.blue-grey {\n background-color: #607d8b !important;\n}\n\n.blue-grey-text {\n color: #607d8b !important;\n}\n\n.blue-grey-waves .waves-ripple {\n background-color: #607d8b !important;\n}\n\n.blue-grey.lighten-5 {\n background-color: #eceff1 !important;\n}\n\n.blue-grey-text.text-lighten-5 {\n color: #eceff1 !important;\n}\n\n.blue-grey-waves.waves-lighten-5 .waves-ripple {\n background-color: #eceff1 !important;\n}\n\n.blue-grey.lighten-4 {\n background-color: #cfd8dc !important;\n}\n\n.blue-grey-text.text-lighten-4 {\n color: #cfd8dc !important;\n}\n\n.blue-grey-waves.waves-lighten-4 .waves-ripple {\n background-color: #cfd8dc !important;\n}\n\n.blue-grey.lighten-3 {\n background-color: #b0bec5 !important;\n}\n\n.blue-grey-text.text-lighten-3 {\n color: #b0bec5 !important;\n}\n\n.blue-grey-waves.waves-lighten-3 .waves-ripple {\n background-color: #b0bec5 !important;\n}\n\n.blue-grey.lighten-2 {\n background-color: #90a4ae !important;\n}\n\n.blue-grey-text.text-lighten-2 {\n color: #90a4ae !important;\n}\n\n.blue-grey-waves.waves-lighten-2 .waves-ripple {\n background-color: #90a4ae !important;\n}\n\n.blue-grey.lighten-1 {\n background-color: #78909c !important;\n}\n\n.blue-grey-text.text-lighten-1 {\n color: #78909c !important;\n}\n\n.blue-grey-waves.waves-lighten-1 .waves-ripple {\n background-color: #78909c !important;\n}\n\n.blue-grey.darken-1 {\n background-color: #546e7a !important;\n}\n\n.blue-grey-text.text-darken-1 {\n color: #546e7a !important;\n}\n\n.blue-grey-waves.waves-darken-1 .waves-ripple {\n background-color: #546e7a !important;\n}\n\n.blue-grey.darken-2 {\n background-color: #455a64 !important;\n}\n\n.blue-grey-text.text-darken-2 {\n color: #455a64 !important;\n}\n\n.blue-grey-waves.waves-darken-2 .waves-ripple {\n background-color: #455a64 !important;\n}\n\n.blue-grey.darken-3 {\n background-color: #37474f !important;\n}\n\n.blue-grey-text.text-darken-3 {\n color: #37474f !important;\n}\n\n.blue-grey-waves.waves-darken-3 .waves-ripple {\n background-color: #37474f !important;\n}\n\n.blue-grey.darken-4 {\n background-color: #263238 !important;\n}\n\n.blue-grey-text.text-darken-4 {\n color: #263238 !important;\n}\n\n.blue-grey-waves.waves-darken-4 .waves-ripple {\n background-color: #263238 !important;\n}\n\n.grey {\n background-color: #9e9e9e !important;\n}\n\n.grey-text {\n color: #9e9e9e !important;\n}\n\n.grey-waves .waves-ripple {\n background-color: #9e9e9e !important;\n}\n\n.grey.lighten-5 {\n background-color: #fafafa !important;\n}\n\n.grey-text.text-lighten-5 {\n color: #fafafa !important;\n}\n\n.grey-waves.waves-lighten-5 .waves-ripple {\n background-color: #fafafa !important;\n}\n\n.grey.lighten-4 {\n background-color: #f5f5f5 !important;\n}\n\n.grey-text.text-lighten-4 {\n color: #f5f5f5 !important;\n}\n\n.grey-waves.waves-lighten-4 .waves-ripple {\n background-color: #f5f5f5 !important;\n}\n\n.grey.lighten-3 {\n background-color: #eeeeee !important;\n}\n\n.grey-text.text-lighten-3 {\n color: #eeeeee !important;\n}\n\n.grey-waves.waves-lighten-3 .waves-ripple {\n background-color: #eeeeee !important;\n}\n\n.grey.lighten-2 {\n background-color: #e0e0e0 !important;\n}\n\n.grey-text.text-lighten-2 {\n color: #e0e0e0 !important;\n}\n\n.grey-waves.waves-lighten-2 .waves-ripple {\n background-color: #e0e0e0 !important;\n}\n\n.grey.lighten-1 {\n background-color: #bdbdbd !important;\n}\n\n.grey-text.text-lighten-1 {\n color: #bdbdbd !important;\n}\n\n.grey-waves.waves-lighten-1 .waves-ripple {\n background-color: #bdbdbd !important;\n}\n\n.grey.darken-1 {\n background-color: #757575 !important;\n}\n\n.grey-text.text-darken-1 {\n color: #757575 !important;\n}\n\n.grey-waves.waves-darken-1 .waves-ripple {\n background-color: #757575 !important;\n}\n\n.grey.darken-2 {\n background-color: #616161 !important;\n}\n\n.grey-text.text-darken-2 {\n color: #616161 !important;\n}\n\n.grey-waves.waves-darken-2 .waves-ripple {\n background-color: #616161 !important;\n}\n\n.grey.darken-3 {\n background-color: #424242 !important;\n}\n\n.grey-text.text-darken-3 {\n color: #424242 !important;\n}\n\n.grey-waves.waves-darken-3 .waves-ripple {\n background-color: #424242 !important;\n}\n\n.grey.darken-4 {\n background-color: #212121 !important;\n}\n\n.grey-text.text-darken-4 {\n color: #212121 !important;\n}\n\n.grey-waves.waves-darken-4 .waves-ripple {\n background-color: #212121 !important;\n}\n\n.black {\n background-color: #000000 !important;\n}\n\n.black-text {\n color: #000000 !important;\n}\n\n.white {\n background-color: #ffffff !important;\n}\n\n.white-text {\n color: #ffffff !important;\n}\n\n.transparent {\n background-color: transparent !important;\n}\n\n.transparent-text {\n color: transparent !important;\n}\n\n/**\n * prism.js Twilight theme\n * Based (more or less) on the Twilight theme originally of Textmate fame.\n * @author Remy Bach\n */\ncode[class*=language-],\npre[class*=language-] {\n color: white;\n background: none;\n font-family: Consolas, Monaco, \"Andale Mono\", \"Ubuntu Mono\", monospace;\n text-align: left;\n text-shadow: 0 -0.1em 0.2em black;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n}\n\npre[class*=language-],\n:not(pre) > code[class*=language-] {\n background: hsl(0, 0%, 8%); /* #141414 */\n}\n\n/* Code blocks */\npre[class*=language-] {\n border-radius: 0.5em;\n border: 0.3em solid hsl(0, 0%, 33%); /* #282A2B */\n box-shadow: 1px 1px 0.5em black inset;\n margin: 0.5em 0;\n overflow: auto;\n padding: 1em;\n}\n\npre[class*=language-]::-moz-selection {\n /* Firefox */\n background: hsl(200, 4%, 16%); /* #282A2B */\n}\n\npre[class*=language-]::selection {\n /* Safari */\n background: hsl(200, 4%, 16%); /* #282A2B */\n}\n\n/* Text Selection colour */\npre[class*=language-]::-moz-selection, pre[class*=language-] ::-moz-selection,\ncode[class*=language-]::-moz-selection, code[class*=language-] ::-moz-selection {\n text-shadow: none;\n background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */\n}\n\npre[class*=language-]::selection, pre[class*=language-] ::selection,\ncode[class*=language-]::selection, code[class*=language-] ::selection {\n text-shadow: none;\n background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */\n}\n\n/* Inline code */\n:not(pre) > code[class*=language-] {\n border-radius: 0.3em;\n border: 0.13em solid hsl(0, 0%, 33%); /* #545454 */\n box-shadow: 1px 1px 0.3em -0.1em black inset;\n padding: 0.15em 0.2em 0.05em;\n white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: hsl(0, 0%, 47%); /* #777777 */\n}\n\n.token.punctuation {\n opacity: 0.7;\n}\n\n.namespace {\n opacity: 0.7;\n}\n\n.token.tag,\n.token.boolean,\n.token.number,\n.token.deleted {\n color: hsl(14, 58%, 55%); /* #CF6A4C */\n}\n\n.token.keyword,\n.token.property,\n.token.selector,\n.token.constant,\n.token.symbol,\n.token.builtin {\n color: hsl(53, 89%, 79%); /* #F9EE98 */\n}\n\n.token.attr-name,\n.token.attr-value,\n.token.string,\n.token.char,\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable,\n.token.inserted {\n color: hsl(76, 21%, 52%); /* #8F9D6A */\n}\n\n.token.atrule {\n color: hsl(218, 22%, 55%); /* #7587A6 */\n}\n\n.token.regex,\n.token.important {\n color: hsl(42, 75%, 65%); /* #E9C062 */\n}\n\n.token.important,\n.token.bold {\n font-weight: bold;\n}\n\n.token.italic {\n font-style: italic;\n}\n\n.token.entity {\n cursor: help;\n}\n\npre[data-line] {\n padding: 1em 0 1em 3em;\n position: relative;\n}\n\n/* Markup */\n.language-markup .token.tag,\n.language-markup .token.attr-name,\n.language-markup .token.punctuation {\n color: hsl(33, 33%, 52%); /* #AC885B */\n}\n\n/* Make the tokens sit above the line highlight so the colours don't look faded. */\n.token {\n position: relative;\n z-index: 1;\n}\n\n.line-highlight {\n background: hsla(0, 0%, 33%, 0.25); /* #545454 */\n background: linear-gradient(to right, hsla(0, 0%, 33%, 0.1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */\n border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */\n border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */\n left: 0;\n line-height: inherit;\n margin-top: 0.75em; /* Same as .prism’s padding-top */\n padding: inherit 0;\n pointer-events: none;\n position: absolute;\n right: 0;\n white-space: pre;\n z-index: 0;\n}\n\n.line-highlight:before,\n.line-highlight[data-end]:after {\n background-color: hsl(215, 15%, 59%); /* #8794A6 */\n border-radius: 999px;\n box-shadow: 0 1px white;\n color: hsl(24, 20%, 95%); /* #F5F2F0 */\n content: attr(data-start);\n font: bold 65%/1.5 sans-serif;\n left: 0.6em;\n min-width: 1em;\n padding: 0 0.5em;\n position: absolute;\n text-align: center;\n text-shadow: none;\n top: 0.4em;\n vertical-align: 0.3em;\n}\n\n.line-highlight[data-end]:after {\n bottom: 0.4em;\n content: attr(data-end);\n top: auto;\n}\n\n.window {\n font-family: \"Ubuntu\", sans-serif;\n font-size: 17px;\n width: 600px;\n margin: 75px auto;\n background: #2c3e50;\n height: 350px;\n border-radius: 5px;\n display: relative;\n box-shadow: 10px 10px 10px #888888;\n}\n\n.afterclose {\n color: #34495e;\n display: none;\n text-align: center;\n}\n\n.open {\n color: #fff;\n padding: 15px;\n background: #2ecc71;\n border-radius: 4px;\n border: none;\n}\n\n.bash {\n width: 600px;\n background: #34495e;\n height: 310px;\n border-radius: 5px;\n top: 40px;\n display: absolute;\n color: #fff;\n text-align: left;\n}\n.bash .command::before {\n content: \"user@machine $ : \";\n color: #2ecc71;\n}\n.bash .resulta::before {\n content: \">>\";\n color: #2ecc71;\n}\n\n/* effected by controllers */\n.windowmax {\n width: 100%;\n margin: auto;\n background: #2c3e50;\n height: 1000px;\n border-radius: 5px;\n display: relative;\n}\n\n.windowmin {\n width: 300px;\n height: 45px;\n background: #2c3e50;\n border-radius: 5px;\n bottom: 0;\n position: fixed;\n}\n\n.bashmax {\n display: absolute;\n width: 100%;\n background: #34495e;\n height: 960px;\n border-radius: 5px;\n bottom: 0;\n color: #fff;\n}\n\n/* !--end--! */\n.buttons {\n width: 15px;\n height: 15px;\n border-radius: 50%;\n float: right;\n margin: 13px 4px;\n border: none;\n}\n\n.close {\n background: #e74c3c;\n}\n\n.maximize {\n background: #f1c40f;\n}\n\n.minimize {\n background: #2ecc71;\n}\n\n.result {\n display: none;\n}\n\n.controls {\n height: 40px;\n top: 0;\n}\n\n.title {\n color: #fff;\n font-weight: bold;\n padding: 10px;\n}\n\n.material-tooltip {\n padding: 10px 8px;\n font-size: 1rem;\n z-index: 2000;\n border-radius: 2px;\n color: #fff;\n min-height: 36px;\n line-height: 120%;\n opacity: 0;\n position: absolute;\n text-align: center;\n max-width: calc(100% - 4px);\n overflow: hidden;\n left: 0;\n top: 0;\n pointer-events: none;\n visibility: hidden;\n background-color: #323232;\n}\n\n.backdrop {\n position: absolute;\n opacity: 0;\n height: 7px;\n width: 14px;\n border-radius: 0 0 50% 50%;\n background-color: #323232;\n z-index: -1;\n transform-origin: 50% 0%;\n visibility: hidden;\n}\n\n.shadow-0 {\n box-shadow: none !important;\n}\n\n/* 2dp elevation modified*/\n.shadow-1, nav, .dropdown-content, .card, .card-panel, .btn-floating, .btn, .btn-small, .btn-large, .collapsible {\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);\n}\n\n.shadow-1-half, .btn-floating:hover, .btn:hover, .btn-small:hover, .btn-large:hover {\n box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);\n}\n\n/* 6dp elevation modified*/\n.shadow-2 {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);\n}\n\n/* 12dp elevation modified*/\n.shadow-3 {\n box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);\n}\n\n/* 16dp elevation */\n.shadow-4 {\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2);\n}\n\n/* 24dp elevation */\n.shadow-5, .modal {\n box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2);\n}\n\n/* 24dp elevation */\n.invert-shadow-5 {\n box-shadow: 38px 0 0 0 rgba(0, 0, 0, 0.14), 46px 0 0 0 rgba(0, 0, 0, 0.12), 15px 0 0 0 rgba(0, 0, 0, 0.2);\n}\n\n.hoverable {\n transition: box-shadow 0.25s;\n}\n.hoverable:hover {\n box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n\n/*!\n * Waves v0.6.0\n * http://fian.my.id/Waves\n *\n * Copyright 2014 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n.waves-effect {\n position: relative;\n cursor: pointer;\n display: inline-block;\n overflow: hidden;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n vertical-align: middle;\n z-index: 1;\n transition: 0.3s ease-out;\n}\n.waves-effect .waves-ripple {\n position: absolute;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n margin-top: -10px;\n margin-left: -10px;\n opacity: 0;\n background: rgba(0, 0, 0, 0.2);\n transition: all 0.7s ease-out;\n transition-property: transform, opacity;\n transform: scale(0);\n pointer-events: none;\n}\n.waves-effect.waves-light .waves-ripple {\n background-color: rgba(255, 255, 255, 0.45);\n}\n.waves-effect.waves-red .waves-ripple {\n background-color: rgba(244, 67, 54, 0.7);\n}\n.waves-effect.waves-yellow .waves-ripple {\n background-color: rgba(255, 235, 59, 0.7);\n}\n.waves-effect.waves-orange .waves-ripple {\n background-color: rgba(255, 152, 0, 0.7);\n}\n.waves-effect.waves-purple .waves-ripple {\n background-color: rgba(156, 39, 176, 0.7);\n}\n.waves-effect.waves-green .waves-ripple {\n background-color: rgba(76, 175, 80, 0.7);\n}\n.waves-effect.waves-teal .waves-ripple {\n background-color: rgba(0, 150, 136, 0.7);\n}\n.waves-effect input[type=button], .waves-effect input[type=reset], .waves-effect input[type=submit] {\n border: 0;\n font-style: normal;\n font-size: inherit;\n text-transform: inherit;\n background: none;\n}\n.waves-effect img {\n position: relative;\n z-index: -1;\n}\n\n.waves-notransition {\n transition: none !important;\n}\n\n.waves-circle {\n transform: translateZ(0);\n -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);\n}\n\n.waves-input-wrapper {\n border-radius: 0.2em;\n vertical-align: bottom;\n}\n.waves-input-wrapper .waves-button-input {\n position: relative;\n top: 0;\n left: 0;\n z-index: 1;\n}\n\n.waves-circle {\n text-align: center;\n width: 2.5em;\n height: 2.5em;\n line-height: 2.5em;\n border-radius: 50%;\n -webkit-mask-image: none;\n}\n\n.waves-block {\n display: block;\n}\n\n/* Firefox Bug: link not triggered */\n.waves-effect .waves-ripple {\n z-index: -1;\n}\n\n.modal {\n position: fixed;\n left: 0;\n right: 0;\n background-color: #fafafa;\n padding: 0;\n max-height: 70%;\n width: 55%;\n margin: auto;\n overflow-y: auto;\n border-radius: 2px;\n will-change: top, opacity;\n}\n.modal:focus {\n outline: none;\n}\n@media only screen and (max-width : 992px) {\n .modal {\n width: 80%;\n }\n}\n.modal h1, .modal h2, .modal h3, .modal h4 {\n margin-top: 0;\n}\n.modal .modal-content {\n padding: 24px;\n}\n.modal .modal-close {\n cursor: pointer;\n}\n.modal .modal-footer {\n border-radius: 0 0 2px 2px;\n background-color: #fafafa;\n padding: 4px 6px;\n height: 56px;\n width: 100%;\n text-align: right;\n}\n.modal .modal-footer .btn, .modal .modal-footer .btn-small, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat {\n margin: 6px 0;\n}\n.modal .modal-header {\n border-radius: 2px 2px 0 0;\n background-color: #fafafa;\n padding: 6px 4px;\n height: 56px;\n width: 100%;\n text-align: right;\n}\n.modal .modal-header .btn, .modal .modal-header .btn-small, .modal .modal-header .btn-large, .modal .modal-header .btn-flat {\n margin: 6px 0;\n}\n\n.modal-overlay {\n position: fixed;\n z-index: 999;\n top: -25%;\n left: 0;\n bottom: 0;\n right: 0;\n height: 125%;\n width: 100%;\n background: #000;\n display: none;\n will-change: opacity;\n}\n\n.modal.modal-fixed-footer {\n padding: 0;\n height: 70%;\n}\n.modal.modal-fixed-footer .modal-content {\n position: absolute;\n height: calc(100% - 56px);\n max-height: 100%;\n width: 100%;\n overflow-y: auto;\n}\n.modal.modal-fixed-footer .modal-footer {\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n position: absolute;\n bottom: 0;\n}\n\n.modal.bottom-sheet {\n top: auto;\n bottom: -100%;\n margin: 0;\n width: 100%;\n max-height: 45%;\n border-radius: 0;\n will-change: bottom, opacity;\n}\n\nhtml,\nbody,\n#root {\n margin: 0;\n height: 100%;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\n.noselect {\n -webkit-touch-callout: none; /* iOS Safari */\n -webkit-user-select: none; /* Safari */\n -khtml-user-select: none; /* Konqueror HTML */\n -moz-user-select: none; /* Old versions of Firefox */\n -ms-user-select: none; /* Internet Explorer/Edge */\n user-select: none;\n /* Non-prefixed version, currently\n supported by Chrome, Edge, Opera and Firefox */\n}\n\nul:not(.browser-default) {\n padding-left: 0;\n list-style-type: none;\n}\nul:not(.browser-default) > li {\n list-style-type: none;\n}\n\na {\n color: #039be5;\n text-decoration: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.w-100 {\n width: 100%;\n}\n\n.right-align {\n text-align: right;\n}\n\n.center-align {\n text-align: center;\n}\n\n.v-center {\n display: flex;\n align-items: center;\n}\n\n.mb1 {\n margin-bottom: 10px;\n}\n\n.collection {\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n border: 1px solid #e0e0e0;\n border-radius: 2px;\n overflow: hidden;\n position: relative;\n}\n.collection .collection-item {\n background-color: #fff;\n line-height: 1.5rem;\n padding: 10px 20px;\n margin: 0;\n border-bottom: 1px solid #e0e0e0;\n}\n.collection .collection-item.hover:hover {\n background-color: #ddd;\n}\n.collection .collection-item.avatar {\n min-height: 84px;\n padding-left: 72px;\n position: relative;\n}\n.collection .collection-item.avatar:not(.circle-clipper) > .circle,\n.collection .collection-item.avatar :not(.circle-clipper) > .circle {\n position: absolute;\n width: 42px;\n height: 42px;\n overflow: hidden;\n left: 15px;\n display: inline-block;\n vertical-align: middle;\n}\n.collection .collection-item.avatar i.circle {\n font-size: 18px;\n line-height: 42px;\n color: #fff;\n background-color: #999;\n text-align: center;\n}\n.collection .collection-item.avatar .title {\n font-size: 16px;\n}\n.collection .collection-item.avatar p {\n margin: 0;\n}\n.collection .collection-item.avatar .secondary-content {\n position: absolute;\n top: 16px;\n right: 16px;\n}\n.collection .collection-item:last-child {\n border-bottom: none;\n}\n.collection .collection-item.active {\n background-color: #26a69a;\n color: #eafaf9;\n}\n.collection .collection-item.active .secondary-content {\n color: #fff;\n}\n.collection a.collection-item {\n display: block;\n transition: 0.25s;\n color: #26a69a;\n}\n.collection a.collection-item:not(.active):hover {\n background-color: #ddd;\n}\n.collection.with-header .collection-header {\n background-color: #fff;\n border-bottom: 1px solid #e0e0e0;\n padding: 10px 20px;\n}\n.collection.with-header .collection-item {\n padding-left: 30px;\n}\n.collection.with-header .collection-item.avatar {\n padding-left: 72px;\n}\n\n.secondary-content {\n float: right;\n color: #26a69a;\n}\n\n.collapsible .collection {\n margin: 0;\n border: none;\n}\n\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100vh;\n width: 100vw;\n padding: 20px 0 20px 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 999;\n display: flex;\n justify-content: center;\n}\n.modal-overlay .innerform {\n max-width: 650px;\n}\n.modal-overlay .innerform form {\n overflow: hidden;\n}\n\n/*********************\n Media Query Classes\n**********************/\n@media only screen and (max-width : 600px) {\n .hide-on-small-only, .hide-on-small-and-down {\n display: none !important;\n }\n}\n\n@media only screen and (max-width : 992px) {\n .hide-on-med-and-down {\n display: none !important;\n }\n}\n\n@media only screen and (min-width : 601px) {\n .hide-on-med-and-up {\n display: none !important;\n }\n}\n\n@media only screen and (min-width: 600px) and (max-width: 992px) {\n .hide-on-med-only {\n display: none !important;\n }\n}\n\n@media only screen and (min-width : 993px) {\n .hide-on-large-only {\n display: none !important;\n }\n}\n\n@media only screen and (min-width : 1201px) {\n .hide-on-extra-large-only {\n display: none !important;\n }\n}\n\n@media only screen and (min-width : 1201px) {\n .show-on-extra-large {\n display: block !important;\n }\n}\n\n@media only screen and (min-width : 993px) {\n .show-on-large {\n display: block !important;\n }\n}\n\n@media only screen and (min-width: 600px) and (max-width: 992px) {\n .show-on-medium {\n display: block !important;\n }\n}\n\n@media only screen and (max-width : 600px) {\n .show-on-small {\n display: block !important;\n }\n}\n\n@media only screen and (min-width : 601px) {\n .show-on-medium-and-up {\n display: block !important;\n }\n}\n\n@media only screen and (max-width : 992px) {\n .show-on-medium-and-down {\n display: block !important;\n }\n}\n\n@media only screen and (max-width : 600px) {\n .center-on-small-only {\n text-align: center;\n }\n}\n\n/*******************\n Utility Classes\n*******************/\n.hide {\n display: none !important;\n}\n\n.left-align {\n text-align: left;\n}\n\n.right-align {\n text-align: right;\n}\n\n.center, .center-align {\n text-align: center;\n}\n\n.left {\n float: left !important;\n}\n\n.right {\n float: right !important;\n}\n\n.no-select {\n user-select: none;\n}\n\n.circle {\n border-radius: 50%;\n}\n\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n.truncate {\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.no-padding {\n padding: 0 !important;\n}\n\nspan.badge {\n min-width: 3rem;\n padding: 0 6px;\n margin-left: 14px;\n text-align: center;\n font-size: 1rem;\n line-height: 22px;\n height: 22px;\n color: #757575;\n float: right;\n box-sizing: border-box;\n}\nspan.badge.new {\n font-weight: 300;\n font-size: 0.8rem;\n color: #fff;\n background-color: #26a69a;\n border-radius: 2px;\n}\nspan.badge.new:after {\n content: \" new\";\n}\nspan.badge[data-badge-caption]::after {\n content: \" \" attr(data-badge-caption);\n}\n\nnav ul a span.badge {\n display: inline-block;\n float: none;\n margin-left: 4px;\n line-height: 22px;\n height: 22px;\n -webkit-font-smoothing: auto;\n}\n\n.collection-item span.badge {\n margin-top: calc(0.75rem - 11px);\n}\n\n.collapsible span.badge {\n margin-left: auto;\n}\n\n.sidenav span.badge {\n margin-top: 11.5px;\n}\n\ntable span.badge {\n display: inline-block;\n float: none;\n margin-left: auto;\n}\n\n.chip {\n display: inline-block;\n height: 32px;\n font-size: 13px;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.6);\n line-height: 32px;\n padding: 0 12px;\n border-radius: 16px;\n background-color: #e4e4e4;\n margin-bottom: 5px;\n margin-right: 5px;\n}\n.chip:focus {\n outline: none;\n background-color: #26a69a;\n color: #fff;\n}\n.chip > img {\n float: left;\n margin: 0 8px 0 -12px;\n height: 32px;\n width: 32px;\n border-radius: 50%;\n}\n.chip .close {\n cursor: pointer;\n float: right;\n font-size: 16px;\n line-height: 32px;\n padding-left: 8px;\n}\n\n.chips {\n border: none;\n border-bottom: 1px solid #9e9e9e;\n box-shadow: none;\n margin: 0 0 8px 0;\n min-height: 45px;\n outline: none;\n transition: all 0.3s;\n}\n.chips.focus {\n border-bottom: 1px solid #26a69a;\n box-shadow: 0 1px 0 0 #26a69a;\n}\n.chips:hover {\n cursor: text;\n}\n.chips .input {\n background: none;\n border: 0;\n color: rgba(0, 0, 0, 0.6);\n display: inline-block;\n font-size: 16px;\n height: 56px;\n line-height: 32px;\n outline: 0;\n margin: 0;\n padding: 0 !important;\n width: 120px !important;\n}\n.chips .input:focus {\n border: 0 !important;\n box-shadow: none !important;\n}\n.chips .autocomplete-content {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.prefix ~ .chips {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n\n.chips:empty ~ label {\n font-size: 0.8rem;\n transform: translateY(-140%);\n}\n\n.collapsible {\n border-top: 1px solid #ddd;\n border-right: 1px solid #ddd;\n border-left: 1px solid #ddd;\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n}\n\n.collapsible-header {\n display: flex;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n line-height: 1.5;\n padding: 1rem;\n background-color: #fff;\n border-bottom: 1px solid #ddd;\n}\n.collapsible-header:focus {\n outline: 0;\n}\n.collapsible-header i {\n width: 2rem;\n font-size: 1.6rem;\n display: inline-block;\n text-align: center;\n margin-right: 1rem;\n}\n\n.keyboard-focused .collapsible-header:focus {\n background-color: #eee;\n}\n\n.collapsible-body {\n display: none;\n border-bottom: 1px solid #ddd;\n box-sizing: border-box;\n padding: 2rem;\n}\n\n.sidenav .collapsible,\n.sidenav.fixed .collapsible {\n border: none;\n box-shadow: none;\n}\n.sidenav .collapsible li,\n.sidenav.fixed .collapsible li {\n padding: 0;\n}\n.sidenav .collapsible-header,\n.sidenav.fixed .collapsible-header {\n background-color: transparent;\n border: none;\n line-height: inherit;\n height: inherit;\n padding: 0 15px;\n}\n.sidenav .collapsible-header:hover,\n.sidenav.fixed .collapsible-header:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.sidenav .collapsible-header i,\n.sidenav.fixed .collapsible-header i {\n line-height: inherit;\n}\n.sidenav .collapsible-body,\n.sidenav.fixed .collapsible-body {\n border: 0;\n background-color: #fff;\n}\n.sidenav .collapsible-body li a,\n.sidenav.fixed .collapsible-body li a {\n padding: 0 22.5px 0 30px;\n}\n\n.collapsible.popout {\n border: none;\n box-shadow: none;\n}\n.collapsible.popout > li {\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\n margin: 0 24px;\n transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n.collapsible.popout > li.active {\n box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);\n margin: 16px 0;\n}\n\n.collection {\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n border: 1px solid #e0e0e0;\n border-radius: 2px;\n overflow: hidden;\n position: relative;\n}\n.collection .collection-item {\n background-color: #fff;\n line-height: 1.5rem;\n padding: 10px 20px;\n margin: 0;\n border-bottom: 1px solid #e0e0e0;\n}\n.collection .collection-item.avatar {\n min-height: 84px;\n padding-left: 72px;\n position: relative;\n}\n.collection .collection-item.avatar:not(.circle-clipper) > .circle,\n.collection .collection-item.avatar :not(.circle-clipper) > .circle {\n position: absolute;\n width: 42px;\n height: 42px;\n overflow: hidden;\n left: 15px;\n display: inline-block;\n vertical-align: middle;\n}\n.collection .collection-item.avatar i.circle {\n font-size: 18px;\n line-height: 42px;\n color: #fff;\n background-color: #999;\n text-align: center;\n}\n.collection .collection-item.avatar .title {\n font-size: 16px;\n}\n.collection .collection-item.avatar p {\n margin: 0;\n}\n.collection .collection-item.avatar .secondary-content {\n position: absolute;\n top: 16px;\n right: 16px;\n}\n.collection .collection-item:last-child {\n border-bottom: none;\n}\n.collection .collection-item.active {\n background-color: #26a69a;\n color: #eafaf9;\n}\n.collection .collection-item.active .secondary-content {\n color: #fff;\n}\n.collection a.collection-item {\n display: block;\n transition: 0.25s;\n color: #26a69a;\n}\n.collection a.collection-item:not(.active):hover {\n background-color: #ddd;\n}\n.collection.with-header .collection-header {\n background-color: #fff;\n border-bottom: 1px solid #e0e0e0;\n padding: 10px 20px;\n}\n.collection.with-header .collection-item {\n padding-left: 30px;\n}\n.collection.with-header .collection-item.avatar {\n padding-left: 72px;\n}\n.collection .secondary-content {\n float: right;\n color: #26a69a;\n}\n\nselect:focus {\n outline: 1px solid #c9f3ef;\n}\n\nbutton:focus {\n outline: none;\n background-color: #2ab7a9;\n}\n\nlabel {\n font-size: 0.8rem;\n color: #9e9e9e;\n}\n\n/* Text Inputs + Textarea\n ========================================================================== */\n/* Style Placeholders */\n::placeholder {\n color: #d1d1d1;\n}\n\n/* Text inputs */\ninput:not([type]),\ninput[type=text]:not(.browser-default),\ninput[type=password]:not(.browser-default),\ninput[type=email]:not(.browser-default),\ninput[type=url]:not(.browser-default),\ninput[type=time]:not(.browser-default),\ninput[type=date]:not(.browser-default),\ninput[type=datetime]:not(.browser-default),\ninput[type=datetime-local]:not(.browser-default),\ninput[type=tel]:not(.browser-default),\ninput[type=number]:not(.browser-default),\ninput[type=search]:not(.browser-default),\ntextarea.textarea {\n background-color: transparent;\n border: none;\n border-bottom: 1px solid #9e9e9e;\n border-radius: 0;\n outline: none;\n height: 56px;\n width: 100%;\n font-size: 16px;\n margin: 0 0 8px 0;\n padding: 0;\n box-shadow: none;\n box-sizing: content-box;\n transition: box-shadow 0.3s, border 0.3s;\n}\ninput:not([type]):disabled, input:not([type])[readonly=readonly],\ninput[type=text]:not(.browser-default):disabled,\ninput[type=text]:not(.browser-default)[readonly=readonly],\ninput[type=password]:not(.browser-default):disabled,\ninput[type=password]:not(.browser-default)[readonly=readonly],\ninput[type=email]:not(.browser-default):disabled,\ninput[type=email]:not(.browser-default)[readonly=readonly],\ninput[type=url]:not(.browser-default):disabled,\ninput[type=url]:not(.browser-default)[readonly=readonly],\ninput[type=time]:not(.browser-default):disabled,\ninput[type=time]:not(.browser-default)[readonly=readonly],\ninput[type=date]:not(.browser-default):disabled,\ninput[type=date]:not(.browser-default)[readonly=readonly],\ninput[type=datetime]:not(.browser-default):disabled,\ninput[type=datetime]:not(.browser-default)[readonly=readonly],\ninput[type=datetime-local]:not(.browser-default):disabled,\ninput[type=datetime-local]:not(.browser-default)[readonly=readonly],\ninput[type=tel]:not(.browser-default):disabled,\ninput[type=tel]:not(.browser-default)[readonly=readonly],\ninput[type=number]:not(.browser-default):disabled,\ninput[type=number]:not(.browser-default)[readonly=readonly],\ninput[type=search]:not(.browser-default):disabled,\ninput[type=search]:not(.browser-default)[readonly=readonly],\ntextarea.textarea:disabled,\ntextarea.textarea[readonly=readonly] {\n color: rgba(0, 0, 0, 0.42);\n border-bottom: 1px dotted rgba(0, 0, 0, 0.42);\n}\ninput:not([type]):disabled + label, input:not([type])[readonly=readonly] + label,\ninput[type=text]:not(.browser-default):disabled + label,\ninput[type=text]:not(.browser-default)[readonly=readonly] + label,\ninput[type=password]:not(.browser-default):disabled + label,\ninput[type=password]:not(.browser-default)[readonly=readonly] + label,\ninput[type=email]:not(.browser-default):disabled + label,\ninput[type=email]:not(.browser-default)[readonly=readonly] + label,\ninput[type=url]:not(.browser-default):disabled + label,\ninput[type=url]:not(.browser-default)[readonly=readonly] + label,\ninput[type=time]:not(.browser-default):disabled + label,\ninput[type=time]:not(.browser-default)[readonly=readonly] + label,\ninput[type=date]:not(.browser-default):disabled + label,\ninput[type=date]:not(.browser-default)[readonly=readonly] + label,\ninput[type=datetime]:not(.browser-default):disabled + label,\ninput[type=datetime]:not(.browser-default)[readonly=readonly] + label,\ninput[type=datetime-local]:not(.browser-default):disabled + label,\ninput[type=datetime-local]:not(.browser-default)[readonly=readonly] + label,\ninput[type=tel]:not(.browser-default):disabled + label,\ninput[type=tel]:not(.browser-default)[readonly=readonly] + label,\ninput[type=number]:not(.browser-default):disabled + label,\ninput[type=number]:not(.browser-default)[readonly=readonly] + label,\ninput[type=search]:not(.browser-default):disabled + label,\ninput[type=search]:not(.browser-default)[readonly=readonly] + label,\ntextarea.textarea:disabled + label,\ntextarea.textarea[readonly=readonly] + label {\n color: rgba(0, 0, 0, 0.42);\n}\ninput:not([type]):focus:not([readonly]),\ninput[type=text]:not(.browser-default):focus:not([readonly]),\ninput[type=password]:not(.browser-default):focus:not([readonly]),\ninput[type=email]:not(.browser-default):focus:not([readonly]),\ninput[type=url]:not(.browser-default):focus:not([readonly]),\ninput[type=time]:not(.browser-default):focus:not([readonly]),\ninput[type=date]:not(.browser-default):focus:not([readonly]),\ninput[type=datetime]:not(.browser-default):focus:not([readonly]),\ninput[type=datetime-local]:not(.browser-default):focus:not([readonly]),\ninput[type=tel]:not(.browser-default):focus:not([readonly]),\ninput[type=number]:not(.browser-default):focus:not([readonly]),\ninput[type=search]:not(.browser-default):focus:not([readonly]),\ntextarea.textarea:focus:not([readonly]) {\n border-bottom: 1px solid #26a69a;\n box-shadow: 0 1px 0 0 #26a69a;\n}\ninput:not([type]):focus:not([readonly]) + label,\ninput[type=text]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=password]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=email]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=url]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=time]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=date]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=datetime]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=datetime-local]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=tel]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=number]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=search]:not(.browser-default):focus:not([readonly]) + label,\ntextarea.textarea:focus:not([readonly]) + label {\n color: #26a69a;\n}\ninput:not([type]):focus.valid ~ label,\ninput[type=text]:not(.browser-default):focus.valid ~ label,\ninput[type=password]:not(.browser-default):focus.valid ~ label,\ninput[type=email]:not(.browser-default):focus.valid ~ label,\ninput[type=url]:not(.browser-default):focus.valid ~ label,\ninput[type=time]:not(.browser-default):focus.valid ~ label,\ninput[type=date]:not(.browser-default):focus.valid ~ label,\ninput[type=datetime]:not(.browser-default):focus.valid ~ label,\ninput[type=datetime-local]:not(.browser-default):focus.valid ~ label,\ninput[type=tel]:not(.browser-default):focus.valid ~ label,\ninput[type=number]:not(.browser-default):focus.valid ~ label,\ninput[type=search]:not(.browser-default):focus.valid ~ label,\ntextarea.textarea:focus.valid ~ label {\n color: #4caf50;\n}\ninput:not([type]):focus.invalid ~ label,\ninput[type=text]:not(.browser-default):focus.invalid ~ label,\ninput[type=password]:not(.browser-default):focus.invalid ~ label,\ninput[type=email]:not(.browser-default):focus.invalid ~ label,\ninput[type=url]:not(.browser-default):focus.invalid ~ label,\ninput[type=time]:not(.browser-default):focus.invalid ~ label,\ninput[type=date]:not(.browser-default):focus.invalid ~ label,\ninput[type=datetime]:not(.browser-default):focus.invalid ~ label,\ninput[type=datetime-local]:not(.browser-default):focus.invalid ~ label,\ninput[type=tel]:not(.browser-default):focus.invalid ~ label,\ninput[type=number]:not(.browser-default):focus.invalid ~ label,\ninput[type=search]:not(.browser-default):focus.invalid ~ label,\ntextarea.textarea:focus.invalid ~ label {\n color: #f44336;\n}\ninput:not([type]).validate + label,\ninput[type=text]:not(.browser-default).validate + label,\ninput[type=password]:not(.browser-default).validate + label,\ninput[type=email]:not(.browser-default).validate + label,\ninput[type=url]:not(.browser-default).validate + label,\ninput[type=time]:not(.browser-default).validate + label,\ninput[type=date]:not(.browser-default).validate + label,\ninput[type=datetime]:not(.browser-default).validate + label,\ninput[type=datetime-local]:not(.browser-default).validate + label,\ninput[type=tel]:not(.browser-default).validate + label,\ninput[type=number]:not(.browser-default).validate + label,\ninput[type=search]:not(.browser-default).validate + label,\ntextarea.textarea.validate + label {\n width: 100%;\n}\n/* Validation Sass Placeholders */\n.select-wrapper.valid > input.select-dropdown, input:not([type]).valid, input:not([type]):focus.valid,\ninput[type=text]:not(.browser-default).valid,\ninput[type=text]:not(.browser-default):focus.valid,\ninput[type=password]:not(.browser-default).valid,\ninput[type=password]:not(.browser-default):focus.valid,\ninput[type=email]:not(.browser-default).valid,\ninput[type=email]:not(.browser-default):focus.valid,\ninput[type=url]:not(.browser-default).valid,\ninput[type=url]:not(.browser-default):focus.valid,\ninput[type=time]:not(.browser-default).valid,\ninput[type=time]:not(.browser-default):focus.valid,\ninput[type=date]:not(.browser-default).valid,\ninput[type=date]:not(.browser-default):focus.valid,\ninput[type=datetime]:not(.browser-default).valid,\ninput[type=datetime]:not(.browser-default):focus.valid,\ninput[type=datetime-local]:not(.browser-default).valid,\ninput[type=datetime-local]:not(.browser-default):focus.valid,\ninput[type=tel]:not(.browser-default).valid,\ninput[type=tel]:not(.browser-default):focus.valid,\ninput[type=number]:not(.browser-default).valid,\ninput[type=number]:not(.browser-default):focus.valid,\ninput[type=search]:not(.browser-default).valid,\ninput[type=search]:not(.browser-default):focus.valid,\ntextarea.textarea.valid,\ntextarea.textarea:focus.valid {\n border-bottom: 1px solid #4caf50;\n box-shadow: 0 1px 0 0 #4caf50;\n}\n\n.select-wrapper.invalid > input.select-dropdown, .select-wrapper.invalid > input.select-dropdown:focus, input:not([type]).invalid, input:not([type]):focus.invalid,\ninput[type=text]:not(.browser-default).invalid,\ninput[type=text]:not(.browser-default):focus.invalid,\ninput[type=password]:not(.browser-default).invalid,\ninput[type=password]:not(.browser-default):focus.invalid,\ninput[type=email]:not(.browser-default).invalid,\ninput[type=email]:not(.browser-default):focus.invalid,\ninput[type=url]:not(.browser-default).invalid,\ninput[type=url]:not(.browser-default):focus.invalid,\ninput[type=time]:not(.browser-default).invalid,\ninput[type=time]:not(.browser-default):focus.invalid,\ninput[type=date]:not(.browser-default).invalid,\ninput[type=date]:not(.browser-default):focus.invalid,\ninput[type=datetime]:not(.browser-default).invalid,\ninput[type=datetime]:not(.browser-default):focus.invalid,\ninput[type=datetime-local]:not(.browser-default).invalid,\ninput[type=datetime-local]:not(.browser-default):focus.invalid,\ninput[type=tel]:not(.browser-default).invalid,\ninput[type=tel]:not(.browser-default):focus.invalid,\ninput[type=number]:not(.browser-default).invalid,\ninput[type=number]:not(.browser-default):focus.invalid,\ninput[type=search]:not(.browser-default).invalid,\ninput[type=search]:not(.browser-default):focus.invalid,\ntextarea.textarea.invalid,\ntextarea.textarea:focus.invalid {\n border-bottom: 1px solid #f44336;\n box-shadow: 0 1px 0 0 #f44336;\n}\n\n.select-wrapper.valid .helper-text[data-success], .select-wrapper.invalid ~ .helper-text[data-error], input:not([type]).valid ~ .helper-text[data-success], input:not([type]):focus.valid ~ .helper-text[data-success], input:not([type]).invalid ~ .helper-text[data-error], input:not([type]):focus.invalid ~ .helper-text[data-error],\ninput[type=text]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=text]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=text]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=text]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=password]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=password]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=password]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=password]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=email]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=email]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=email]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=email]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=url]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=url]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=url]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=url]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=time]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=time]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=time]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=time]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=date]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=date]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=date]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=date]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=datetime]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=datetime]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=datetime]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=datetime-local]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=datetime-local]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=tel]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=tel]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=tel]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=tel]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=number]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=number]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=number]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=number]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=search]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=search]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=search]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=search]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ntextarea.textarea.valid ~ .helper-text[data-success],\ntextarea.textarea:focus.valid ~ .helper-text[data-success],\ntextarea.textarea.invalid ~ .helper-text[data-error],\ntextarea.textarea:focus.invalid ~ .helper-text[data-error] {\n color: transparent;\n user-select: none;\n pointer-events: none;\n}\n\n.select-wrapper.valid ~ .helper-text:after, input:not([type]).valid ~ .helper-text:after, input:not([type]):focus.valid ~ .helper-text:after,\ninput[type=text]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=text]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=password]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=password]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=email]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=email]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=url]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=url]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=time]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=time]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=date]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=date]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=datetime]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=datetime]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=datetime-local]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=tel]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=tel]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=number]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=number]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=search]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=search]:not(.browser-default):focus.valid ~ .helper-text:after,\ntextarea.textarea.valid ~ .helper-text:after,\ntextarea.textarea:focus.valid ~ .helper-text:after {\n content: attr(data-success);\n color: #4caf50;\n}\n\n.select-wrapper.invalid ~ .helper-text:after, input:not([type]).invalid ~ .helper-text:after, input:not([type]):focus.invalid ~ .helper-text:after,\ninput[type=text]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=text]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=password]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=password]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=email]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=email]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=url]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=url]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=time]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=time]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=date]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=date]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=datetime]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=datetime-local]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=tel]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=tel]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=number]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=number]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=search]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=search]:not(.browser-default):focus.invalid ~ .helper-text:after,\ntextarea.textarea.invalid ~ .helper-text:after,\ntextarea.textarea:focus.invalid ~ .helper-text:after {\n content: attr(data-error);\n color: #f44336;\n}\n\n.select-wrapper + label:after, input:not([type]) + label:after,\ninput[type=text]:not(.browser-default) + label:after,\ninput[type=password]:not(.browser-default) + label:after,\ninput[type=email]:not(.browser-default) + label:after,\ninput[type=url]:not(.browser-default) + label:after,\ninput[type=time]:not(.browser-default) + label:after,\ninput[type=date]:not(.browser-default) + label:after,\ninput[type=datetime]:not(.browser-default) + label:after,\ninput[type=datetime-local]:not(.browser-default) + label:after,\ninput[type=tel]:not(.browser-default) + label:after,\ninput[type=number]:not(.browser-default) + label:after,\ninput[type=search]:not(.browser-default) + label:after,\ntextarea.textarea + label:after {\n display: block;\n content: \"\";\n position: absolute;\n top: 100%;\n left: 0;\n opacity: 0;\n transition: 0.2s opacity ease-out, 0.2s color ease-out;\n}\n\n.input-field {\n position: relative;\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n.input-field.inline {\n display: inline-block;\n vertical-align: middle;\n margin-left: 5px;\n}\n.input-field.inline input,\n.input-field.inline .select-dropdown {\n margin-bottom: 1rem;\n}\n.input-field.col label {\n left: 0.5rem;\n}\n.input-field.col .prefix ~ label,\n.input-field.col .prefix ~ .validate ~ label {\n width: calc(100% - 3rem - 1rem);\n}\n.input-field > label {\n color: #9e9e9e;\n position: absolute;\n top: 0;\n left: 0;\n font-size: 1rem;\n cursor: text;\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n transform-origin: 0% 100%;\n text-align: initial;\n transform: translateY(12px);\n}\n.input-field > label:not(.label-icon).active {\n transform: translateY(-14px) scale(0.8);\n transform-origin: 0 0;\n}\n.input-field > input[type]:-webkit-autofill:not(.browser-default):not([type=search]) + label, .input-field > input[type=date]:not(.browser-default) + label, .input-field > input[type=time]:not(.browser-default) + label {\n transform: translateY(-14px) scale(0.8);\n transform-origin: 0 0;\n}\n.input-field .helper-text {\n position: relative;\n min-height: 18px;\n display: block;\n font-size: 12px;\n color: rgba(0, 0, 0, 0.54);\n}\n.input-field .helper-text::after {\n opacity: 1;\n position: absolute;\n top: 0;\n left: 0;\n}\n.input-field .prefix {\n position: absolute;\n width: 56px;\n font-size: 2rem;\n transition: color 0.2s;\n}\n.input-field .prefix.active {\n color: #26a69a;\n}\n.input-field .prefix ~ input,\n.input-field .prefix ~ textarea,\n.input-field .prefix ~ label,\n.input-field .prefix ~ .validate ~ label,\n.input-field .prefix ~ .helper-text,\n.input-field .prefix ~ .autocomplete-content {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n.input-field .prefix ~ label {\n margin-left: 3rem;\n}\n@media only screen and (max-width : 992px) {\n .input-field .prefix ~ input {\n width: 86%;\n width: calc(100% - 3rem);\n }\n}\n@media only screen and (max-width : 600px) {\n .input-field .prefix ~ input {\n width: 80%;\n width: calc(100% - 3rem);\n }\n}\n\n/* Search Field */\n.input-field input[type=search] {\n display: block;\n line-height: inherit;\n transition: 0.3s background-color;\n}\n.nav-wrapper .input-field input[type=search] {\n height: inherit;\n padding-left: 4rem;\n width: calc(100% - 4rem);\n border: 0;\n box-shadow: none;\n}\n.input-field input[type=search]:focus:not(.browser-default) {\n background-color: #fff;\n border: 0;\n box-shadow: none;\n color: #444;\n}\n.input-field input[type=search]:focus:not(.browser-default) + label i, .input-field input[type=search]:focus:not(.browser-default) ~ .mdi-navigation-close, .input-field input[type=search]:focus:not(.browser-default) ~ .material-icons {\n color: #444;\n}\n.input-field input[type=search] + .label-icon {\n transform: none;\n left: 1rem;\n}\n.input-field input[type=search] ~ .mdi-navigation-close, .input-field input[type=search] ~ .material-icons {\n position: absolute;\n top: 0;\n right: 1rem;\n color: transparent;\n cursor: pointer;\n font-size: 2rem;\n transition: 0.3s color;\n}\n\n/* Textarea */\ntextarea {\n width: 100%;\n height: 56px;\n background-color: transparent;\n}\ntextarea.textarea {\n line-height: normal;\n overflow-y: hidden; /* prevents scroll bar flash */\n padding: 0.8rem 0 0.8rem 0; /* prevents text jump on Enter keypress */\n resize: none;\n min-height: 56px;\n box-sizing: border-box;\n}\n\n.hiddendiv {\n visibility: hidden;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */\n padding-top: 1.2rem; /* prevents text jump on Enter keypress */\n position: absolute;\n top: 0;\n z-index: -1;\n}\n\n/* Autocomplete */\n.autocomplete-content li .highlight {\n color: #444;\n}\n.autocomplete-content li img {\n margin: 5px 15px;\n}\n\n/* Character Counter */\n.character-counter {\n min-height: 18px;\n}\n\n/* Radio Buttons\n ========================================================================== */\n[type=radio]:not(:checked),\n[type=radio]:checked {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n}\n\n[type=radio]:not(:checked) + span,\n[type=radio]:checked + span {\n position: relative;\n padding-left: 35px;\n cursor: pointer;\n display: inline-block;\n height: 25px;\n line-height: 25px;\n font-size: 1rem;\n transition: 0.28s ease;\n user-select: none;\n}\n\n[type=radio] + span:before,\n[type=radio] + span:after {\n content: \"\";\n position: absolute;\n left: 0;\n top: 0;\n margin: 4px;\n width: 16px;\n height: 16px;\n z-index: 0;\n transition: 0.28s ease;\n}\n\n/* Unchecked styles */\n[type=radio]:not(:checked) + span:before,\n[type=radio]:not(:checked) + span:after,\n[type=radio]:checked + span:before,\n[type=radio]:checked + span:after,\n[type=radio].with-gap:checked + span:before,\n[type=radio].with-gap:checked + span:after {\n border-radius: 50%;\n}\n\n[type=radio]:not(:checked) + span:before,\n[type=radio]:not(:checked) + span:after {\n border: 2px solid #5a5a5a;\n}\n\n[type=radio]:not(:checked) + span:after {\n transform: scale(0);\n}\n\n/* Checked styles */\n[type=radio]:checked + span:before {\n border: 2px solid transparent;\n}\n\n[type=radio]:checked + span:after,\n[type=radio].with-gap:checked + span:before,\n[type=radio].with-gap:checked + span:after {\n border: 2px solid #26a69a;\n}\n\n[type=radio]:checked + span:after,\n[type=radio].with-gap:checked + span:after {\n background-color: #26a69a;\n}\n\n[type=radio]:checked + span:after {\n transform: scale(1.02);\n}\n\n/* Radio With gap */\n[type=radio].with-gap:checked + span:after {\n transform: scale(0.5);\n}\n\n/* Focused styles */\n[type=radio].tabbed:focus + span:before {\n box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);\n}\n\n/* Disabled Radio With gap */\n[type=radio].with-gap:disabled:checked + span:before {\n border: 2px solid rgba(0, 0, 0, 0.42);\n}\n\n[type=radio].with-gap:disabled:checked + span:after {\n border: none;\n background-color: rgba(0, 0, 0, 0.42);\n}\n\n/* Disabled style */\n[type=radio]:disabled:not(:checked) + span:before,\n[type=radio]:disabled:checked + span:before {\n background-color: transparent;\n border-color: rgba(0, 0, 0, 0.42);\n}\n\n[type=radio]:disabled + span {\n color: rgba(0, 0, 0, 0.42);\n}\n\n[type=radio]:disabled:not(:checked) + span:before {\n border-color: rgba(0, 0, 0, 0.42);\n}\n\n[type=radio]:disabled:checked + span:after {\n background-color: rgba(0, 0, 0, 0.42);\n border-color: #949494;\n}\n\n/* Checkboxes\n ========================================================================== */\n/* Remove default checkbox */\n[type=checkbox]:not(:checked),\n[type=checkbox]:checked {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n}\n\n[type=checkbox] {\n /* checkbox aspect */\n}\n[type=checkbox] + span:not(.lever) {\n position: relative;\n padding-left: 35px;\n cursor: pointer;\n display: inline-block;\n height: 25px;\n line-height: 25px;\n font-size: 1rem;\n user-select: none;\n}\n[type=checkbox] + span:not(.lever):before, [type=checkbox]:not(.filled-in) + span:not(.lever):after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 18px;\n height: 18px;\n z-index: 0;\n border: 2px solid #5a5a5a;\n border-radius: 1px;\n margin-top: 3px;\n transition: 0.2s;\n}\n[type=checkbox]:not(.filled-in) + span:not(.lever):after {\n border: 0;\n transform: scale(0);\n}\n[type=checkbox]:not(:checked):disabled + span:not(.lever):before {\n border: none;\n background-color: rgba(0, 0, 0, 0.42);\n}\n[type=checkbox].tabbed:focus + span:not(.lever):after {\n transform: scale(1);\n border: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n[type=checkbox]:checked + span:not(.lever):before {\n top: -4px;\n left: -5px;\n width: 12px;\n height: 22px;\n border-top: 2px solid transparent;\n border-left: 2px solid transparent;\n border-right: 2px solid #26a69a;\n border-bottom: 2px solid #26a69a;\n transform: rotate(40deg);\n backface-visibility: hidden;\n transform-origin: 100% 100%;\n}\n[type=checkbox]:checked:disabled + span:before {\n border-right: 2px solid rgba(0, 0, 0, 0.42);\n border-bottom: 2px solid rgba(0, 0, 0, 0.42);\n}\n\n/* Indeterminate checkbox */\n[type=checkbox]:indeterminate + span:not(.lever):before {\n top: -11px;\n left: -12px;\n width: 10px;\n height: 22px;\n border-top: none;\n border-left: none;\n border-right: 2px solid #26a69a;\n border-bottom: none;\n transform: rotate(90deg);\n backface-visibility: hidden;\n transform-origin: 100% 100%;\n}\n[type=checkbox]:indeterminate:disabled + span:not(.lever):before {\n border-right: 2px solid rgba(0, 0, 0, 0.42);\n background-color: transparent;\n}\n\n[type=checkbox].filled-in + span:not(.lever):after {\n border-radius: 2px;\n}\n[type=checkbox].filled-in + span:not(.lever):before,\n[type=checkbox].filled-in + span:not(.lever):after {\n content: \"\";\n left: 0;\n position: absolute;\n /* .1s delay is for check animation */\n transition: border 0.25s, background-color 0.25s, width 0.2s 0.1s, height 0.2s 0.1s, top 0.2s 0.1s, left 0.2s 0.1s;\n z-index: 1;\n}\n[type=checkbox].filled-in:not(:checked) + span:not(.lever):before {\n width: 0;\n height: 0;\n border: 3px solid transparent;\n left: 6px;\n top: 10px;\n transform: rotateZ(37deg);\n transform-origin: 100% 100%;\n}\n[type=checkbox].filled-in:not(:checked) + span:not(.lever):after {\n height: 20px;\n width: 20px;\n background-color: transparent;\n border: 2px solid #5a5a5a;\n top: 0px;\n z-index: 0;\n}\n[type=checkbox].filled-in:checked + span:not(.lever):before {\n top: 0;\n left: 1px;\n width: 8px;\n height: 13px;\n border-top: 2px solid transparent;\n border-left: 2px solid transparent;\n border-right: 2px solid #fff;\n border-bottom: 2px solid #fff;\n transform: rotateZ(37deg);\n transform-origin: 100% 100%;\n}\n[type=checkbox].filled-in:checked + span:not(.lever):after {\n top: 0;\n width: 20px;\n height: 20px;\n border: 2px solid #26a69a;\n background-color: #26a69a;\n z-index: 0;\n}\n[type=checkbox].filled-in.tabbed:focus + span:not(.lever):after {\n border-radius: 2px;\n border-color: #5a5a5a;\n background-color: rgba(0, 0, 0, 0.1);\n}\n[type=checkbox].filled-in.tabbed:checked:focus + span:not(.lever):after {\n border-radius: 2px;\n background-color: #26a69a;\n border-color: #26a69a;\n}\n[type=checkbox].filled-in:disabled:not(:checked) + span:not(.lever):before {\n background-color: transparent;\n border: 2px solid transparent;\n}\n[type=checkbox].filled-in:disabled:not(:checked) + span:not(.lever):after {\n border-color: transparent;\n background-color: #949494;\n}\n[type=checkbox].filled-in:disabled:checked + span:not(.lever):before {\n background-color: transparent;\n}\n[type=checkbox].filled-in:disabled:checked + span:not(.lever):after {\n background-color: #949494;\n border-color: #949494;\n}\n\n/* Switch\n ========================================================================== */\n.switch,\n.switch * {\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n}\n\n.switch label {\n cursor: pointer;\n}\n\n.switch label input[type=checkbox] {\n opacity: 0;\n width: 0;\n height: 0;\n}\n.switch label input[type=checkbox]:checked + .lever {\n background-color: #84c7c1;\n}\n.switch label input[type=checkbox]:checked + .lever:before, .switch label input[type=checkbox]:checked + .lever:after {\n left: 18px;\n}\n.switch label input[type=checkbox]:checked + .lever:after {\n background-color: #26a69a;\n}\n\n.switch label .lever {\n content: \"\";\n display: inline-block;\n position: relative;\n width: 36px;\n height: 14px;\n background-color: rgba(0, 0, 0, 0.38);\n border-radius: 15px;\n transition: background 0.3s ease;\n vertical-align: middle;\n margin: 0 16px;\n}\n.switch label .lever:before, .switch label .lever:after {\n content: \"\";\n position: absolute;\n display: inline-block;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n left: 0;\n top: -3px;\n transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease, transform 0.1s ease;\n}\n.switch label .lever:before {\n background-color: rgba(38, 166, 154, 0.15);\n}\n.switch label .lever:after {\n background-color: #F1F1F1;\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n}\n\ninput[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,\ninput[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before {\n transform: scale(2.4);\n background-color: rgba(38, 166, 154, 0.15);\n}\n\ninput[type=checkbox]:not(:disabled) ~ .lever:active:before,\ninput[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before {\n transform: scale(2.4);\n background-color: rgba(0, 0, 0, 0.08);\n}\n\n.switch input[type=checkbox][disabled] + .lever {\n cursor: default;\n background-color: rgba(0, 0, 0, 0.12);\n}\n\n.switch label input[type=checkbox][disabled] + .lever:after,\n.switch label input[type=checkbox][disabled]:checked + .lever:after {\n background-color: #949494;\n}\n\n/* Select Field\n ========================================================================== */\nselect {\n display: none;\n}\n\nselect.browser-default {\n display: block;\n}\n\nselect {\n background-color: rgba(255, 255, 255, 0.9);\n width: 100%;\n padding: 5px;\n border: 1px solid #f2f2f2;\n border-radius: 2px;\n height: 56px;\n}\n\n.select-label {\n position: absolute;\n}\n\n.select-wrapper {\n position: relative;\n}\n.select-wrapper.valid + label, .select-wrapper.invalid + label {\n width: 100%;\n pointer-events: none;\n}\n.select-wrapper input.select-dropdown {\n position: relative;\n cursor: pointer;\n background-color: transparent;\n border: none;\n border-bottom: 1px solid #9e9e9e;\n outline: none;\n height: 56px;\n line-height: 56px;\n width: 100%;\n font-size: 16px;\n margin: 0 0 8px 0;\n padding: 0;\n display: block;\n user-select: none;\n z-index: 1;\n}\n.select-wrapper input.select-dropdown:focus {\n border-bottom: 1px solid #26a69a;\n}\n.select-wrapper .caret {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n margin: auto 0;\n z-index: 0;\n fill: rgba(0, 0, 0, 0.87);\n}\n.select-wrapper + label {\n position: absolute;\n top: -26px;\n font-size: 0.8rem;\n}\n\nselect:disabled {\n color: rgba(0, 0, 0, 0.42);\n}\n\n.select-wrapper.disabled + label {\n color: rgba(0, 0, 0, 0.42);\n}\n.select-wrapper.disabled .caret {\n fill: rgba(0, 0, 0, 0.42);\n}\n\n.select-wrapper input.select-dropdown:disabled {\n color: rgba(0, 0, 0, 0.42);\n cursor: default;\n user-select: none;\n}\n\n.select-wrapper i {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.select-dropdown li.disabled,\n.select-dropdown li.disabled > span,\n.select-dropdown li.optgroup {\n color: rgba(0, 0, 0, 0.3);\n background-color: transparent;\n}\n\nbody.keyboard-focused .select-dropdown.dropdown-content li:focus {\n background-color: rgba(0, 0, 0, 0.08);\n}\n\n.select-dropdown.dropdown-content li:hover {\n background-color: rgba(0, 0, 0, 0.08);\n}\n.select-dropdown.dropdown-content li.selected {\n background-color: rgba(0, 0, 0, 0.03);\n}\n\n.prefix ~ .select-wrapper {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n\n.prefix ~ label {\n margin-left: 3rem;\n}\n\n.select-dropdown li img {\n margin: 5px 15px;\n float: right;\n}\n\n.select-dropdown li.optgroup.selected > span {\n color: rgba(0, 0, 0, 0.7);\n}\n.select-dropdown li.optgroup > span {\n color: rgba(0, 0, 0, 0.4);\n}\n.select-dropdown li.optgroup ~ li.optgroup-option {\n padding-left: 1rem;\n}\n\n/* File Input\n ========================================================================== */\n.file-field {\n position: relative;\n}\n.file-field .file-path-wrapper {\n overflow: hidden;\n padding-left: 10px;\n}\n.file-field input.file-path {\n width: 100%;\n}\n.file-field .btn, .file-field .btn-small, .file-field .btn-large {\n float: left;\n height: 56px;\n line-height: 56px;\n}\n.file-field span {\n cursor: pointer;\n}\n.file-field input[type=file] {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n font-size: 20px;\n cursor: pointer;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.file-field input[type=file]::-webkit-file-upload-button {\n display: none;\n}\n\n/* Range\n ========================================================================== */\n.range-field {\n position: relative;\n}\n\ninput[type=range],\ninput[type=range] + .thumb {\n cursor: pointer;\n}\n\ninput[type=range] {\n position: relative;\n background-color: transparent;\n border: none;\n outline: none;\n width: 100%;\n margin: 15px 0;\n padding: 0;\n}\ninput[type=range]:focus {\n outline: none;\n}\n\ninput[type=range] + .thumb {\n position: absolute;\n top: 10px;\n left: 0;\n border: none;\n height: 0;\n width: 0;\n border-radius: 50%;\n background-color: #26a69a;\n margin-left: 7px;\n transform-origin: 50% 50%;\n transform: rotate(-45deg);\n}\ninput[type=range] + .thumb .value {\n display: block;\n width: 30px;\n text-align: center;\n color: #26a69a;\n font-size: 0;\n transform: rotate(45deg);\n}\ninput[type=range] + .thumb.active {\n border-radius: 50% 50% 50% 0;\n}\ninput[type=range] + .thumb.active .value {\n color: #fff;\n margin-left: -1px;\n margin-top: 8px;\n font-size: 10px;\n}\n\ninput[type=range] {\n -webkit-appearance: none;\n}\n\ninput[type=range]::-webkit-slider-runnable-track {\n height: 3px;\n background: #c2c0c2;\n border: none;\n}\n\ninput[type=range]::-webkit-slider-thumb {\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background: #26a69a;\n transition: box-shadow 0.3s;\n -webkit-appearance: none;\n background-color: #26a69a;\n transform-origin: 50% 50%;\n margin: -5px 0 0 0;\n}\n\n.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb {\n box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);\n}\n\ninput[type=range] {\n /* fix for FF unable to apply focus style bug */\n border: 1px solid white;\n /*required for proper track sizing in FF*/\n}\n\ninput[type=range]::-moz-range-track {\n height: 3px;\n background: #c2c0c2;\n border: none;\n}\n\ninput[type=range]::-moz-focus-inner {\n border: 0;\n}\n\ninput[type=range]::-moz-range-thumb {\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background: #26a69a;\n transition: box-shadow 0.3s;\n margin-top: -5px;\n}\n\ninput[type=range]:-moz-focusring {\n outline: 1px solid #fff;\n outline-offset: -1px;\n}\n\n.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb {\n box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);\n}\n\ninput[type=range]::-ms-track {\n height: 3px;\n background: transparent;\n border-color: transparent;\n border-width: 6px 0;\n /*remove default tick marks*/\n color: transparent;\n}\n\ninput[type=range]::-ms-fill-lower {\n background: #777;\n}\n\ninput[type=range]::-ms-fill-upper {\n background: #ddd;\n}\n\ninput[type=range]::-ms-thumb {\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background: #26a69a;\n transition: box-shadow 0.3s;\n}\n\n.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb {\n box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);\n}\n\n.parallax {\n /* Set a specific height */\n min-height: 500px;\n /* Create the parallax scrolling effect */\n background-attachment: fixed;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n* {\n box-sizing: border-box;\n}\n\nbody {\n font-family: sans-serif;\n}\n\n.scene {\n width: 200px;\n height: 200px;\n border: 1px solid #CCC;\n margin: 80px;\n perspective: 400px;\n}\n\n.cube {\n width: 200px;\n height: 200px;\n position: relative;\n transform-style: preserve-3d;\n transform: translateZ(-400px);\n transition: transform 1s;\n}\n\n.cube.show-front {\n transform: translateZ(-10px) rotateY(0deg);\n}\n\n.cube.show-right {\n transform: translateZ(-10px) rotateY(-90deg);\n}\n\n.cube.show-back {\n transform: translateZ(-10px) rotateY(-180deg);\n}\n\n.cube.show-left {\n transform: translateZ(-10px) rotateY(90deg);\n}\n\n.cube.show-top {\n transform: translateZ(-10px) rotateX(-90deg);\n}\n\n.cube.show-bottom {\n transform: translateZ(-10px) rotateX(90deg);\n}\n\n.cube__face {\n position: absolute;\n width: 200px;\n height: 200px;\n border: 2px solid black;\n line-height: 200px;\n font-size: 40px;\n font-weight: bold;\n color: white;\n text-align: center;\n}\n\n.cube__face--front {\n background: hsla(0, 100%, 50%, 0.7);\n}\n\n.cube__face--right {\n background: hsla(60, 100%, 50%, 0.7);\n}\n\n.cube__face--back {\n background: hsla(120, 100%, 50%, 0.7);\n}\n\n.cube__face--left {\n background: hsla(180, 100%, 50%, 0.7);\n}\n\n.cube__face--top {\n background: hsla(240, 100%, 50%, 0.7);\n}\n\n.cube__face--bottom {\n background: hsla(300, 100%, 50%, 0.7);\n}\n\n.cube__face--front {\n transform: rotateY(0deg) translateZ(100px);\n}\n\n.cube__face--right {\n transform: rotateY(90deg) translateZ(100px);\n}\n\n.cube__face--back {\n transform: rotateY(180deg) translateZ(100px);\n}\n\n.cube__face--left {\n transform: rotateY(-90deg) translateZ(100px);\n}\n\n.cube__face--top {\n transform: rotateX(90deg) translateZ(100px);\n}\n\n.cube__face--bottom {\n transform: rotateX(-90deg) translateZ(100px);\n}\n\nlabel {\n margin-right: 10px;\n}\n\n.container {\n margin: 0 auto;\n max-width: 1280px;\n width: 90%;\n}\n\n@media only screen and (min-width : 601px) {\n .container {\n width: 85%;\n }\n}\n@media only screen and (min-width : 993px) {\n .container {\n width: 70%;\n }\n}\n.col .row {\n margin-left: -0.5rem;\n margin-right: -0.5rem;\n}\n\n.section {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.section.no-pad {\n padding: 0;\n}\n.section.no-pad-bot {\n padding-bottom: 0;\n}\n.section.no-pad-top {\n padding-top: 0;\n}\n\n.row {\n margin-left: auto;\n margin-right: auto;\n margin-bottom: 20px;\n}\n.row:after {\n content: \"\";\n display: table;\n clear: both;\n}\n.row .col {\n float: left;\n box-sizing: border-box;\n padding: 0 0.5rem;\n min-height: 1px;\n}\n.row .col[class*=push-], .row .col[class*=pull-] {\n position: relative;\n}\n.row .col.s1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.offset-s1 {\n margin-left: 8.3333333333%;\n}\n.row .col.pull-s1 {\n right: 8.3333333333%;\n}\n.row .col.push-s1 {\n left: 8.3333333333%;\n}\n.row .col.offset-s2 {\n margin-left: 16.6666666667%;\n}\n.row .col.pull-s2 {\n right: 16.6666666667%;\n}\n.row .col.push-s2 {\n left: 16.6666666667%;\n}\n.row .col.offset-s3 {\n margin-left: 25%;\n}\n.row .col.pull-s3 {\n right: 25%;\n}\n.row .col.push-s3 {\n left: 25%;\n}\n.row .col.offset-s4 {\n margin-left: 33.3333333333%;\n}\n.row .col.pull-s4 {\n right: 33.3333333333%;\n}\n.row .col.push-s4 {\n left: 33.3333333333%;\n}\n.row .col.offset-s5 {\n margin-left: 41.6666666667%;\n}\n.row .col.pull-s5 {\n right: 41.6666666667%;\n}\n.row .col.push-s5 {\n left: 41.6666666667%;\n}\n.row .col.offset-s6 {\n margin-left: 50%;\n}\n.row .col.pull-s6 {\n right: 50%;\n}\n.row .col.push-s6 {\n left: 50%;\n}\n.row .col.offset-s7 {\n margin-left: 58.3333333333%;\n}\n.row .col.pull-s7 {\n right: 58.3333333333%;\n}\n.row .col.push-s7 {\n left: 58.3333333333%;\n}\n.row .col.offset-s8 {\n margin-left: 66.6666666667%;\n}\n.row .col.pull-s8 {\n right: 66.6666666667%;\n}\n.row .col.push-s8 {\n left: 66.6666666667%;\n}\n.row .col.offset-s9 {\n margin-left: 75%;\n}\n.row .col.pull-s9 {\n right: 75%;\n}\n.row .col.push-s9 {\n left: 75%;\n}\n.row .col.offset-s10 {\n margin-left: 83.3333333333%;\n}\n.row .col.pull-s10 {\n right: 83.3333333333%;\n}\n.row .col.push-s10 {\n left: 83.3333333333%;\n}\n.row .col.offset-s11 {\n margin-left: 91.6666666667%;\n}\n.row .col.pull-s11 {\n right: 91.6666666667%;\n}\n.row .col.push-s11 {\n left: 91.6666666667%;\n}\n.row .col.offset-s12 {\n margin-left: 100%;\n}\n.row .col.pull-s12 {\n right: 100%;\n}\n.row .col.push-s12 {\n left: 100%;\n}\n@media only screen and (min-width : 601px) {\n .row .col.m1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-m1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-m1 {\n right: 8.3333333333%;\n }\n .row .col.push-m1 {\n left: 8.3333333333%;\n }\n .row .col.offset-m2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-m2 {\n right: 16.6666666667%;\n }\n .row .col.push-m2 {\n left: 16.6666666667%;\n }\n .row .col.offset-m3 {\n margin-left: 25%;\n }\n .row .col.pull-m3 {\n right: 25%;\n }\n .row .col.push-m3 {\n left: 25%;\n }\n .row .col.offset-m4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-m4 {\n right: 33.3333333333%;\n }\n .row .col.push-m4 {\n left: 33.3333333333%;\n }\n .row .col.offset-m5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-m5 {\n right: 41.6666666667%;\n }\n .row .col.push-m5 {\n left: 41.6666666667%;\n }\n .row .col.offset-m6 {\n margin-left: 50%;\n }\n .row .col.pull-m6 {\n right: 50%;\n }\n .row .col.push-m6 {\n left: 50%;\n }\n .row .col.offset-m7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-m7 {\n right: 58.3333333333%;\n }\n .row .col.push-m7 {\n left: 58.3333333333%;\n }\n .row .col.offset-m8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-m8 {\n right: 66.6666666667%;\n }\n .row .col.push-m8 {\n left: 66.6666666667%;\n }\n .row .col.offset-m9 {\n margin-left: 75%;\n }\n .row .col.pull-m9 {\n right: 75%;\n }\n .row .col.push-m9 {\n left: 75%;\n }\n .row .col.offset-m10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-m10 {\n right: 83.3333333333%;\n }\n .row .col.push-m10 {\n left: 83.3333333333%;\n }\n .row .col.offset-m11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-m11 {\n right: 91.6666666667%;\n }\n .row .col.push-m11 {\n left: 91.6666666667%;\n }\n .row .col.offset-m12 {\n margin-left: 100%;\n }\n .row .col.pull-m12 {\n right: 100%;\n }\n .row .col.push-m12 {\n left: 100%;\n }\n}\n@media only screen and (min-width : 993px) {\n .row .col.l1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-l1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-l1 {\n right: 8.3333333333%;\n }\n .row .col.push-l1 {\n left: 8.3333333333%;\n }\n .row .col.offset-l2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-l2 {\n right: 16.6666666667%;\n }\n .row .col.push-l2 {\n left: 16.6666666667%;\n }\n .row .col.offset-l3 {\n margin-left: 25%;\n }\n .row .col.pull-l3 {\n right: 25%;\n }\n .row .col.push-l3 {\n left: 25%;\n }\n .row .col.offset-l4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-l4 {\n right: 33.3333333333%;\n }\n .row .col.push-l4 {\n left: 33.3333333333%;\n }\n .row .col.offset-l5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-l5 {\n right: 41.6666666667%;\n }\n .row .col.push-l5 {\n left: 41.6666666667%;\n }\n .row .col.offset-l6 {\n margin-left: 50%;\n }\n .row .col.pull-l6 {\n right: 50%;\n }\n .row .col.push-l6 {\n left: 50%;\n }\n .row .col.offset-l7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-l7 {\n right: 58.3333333333%;\n }\n .row .col.push-l7 {\n left: 58.3333333333%;\n }\n .row .col.offset-l8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-l8 {\n right: 66.6666666667%;\n }\n .row .col.push-l8 {\n left: 66.6666666667%;\n }\n .row .col.offset-l9 {\n margin-left: 75%;\n }\n .row .col.pull-l9 {\n right: 75%;\n }\n .row .col.push-l9 {\n left: 75%;\n }\n .row .col.offset-l10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-l10 {\n right: 83.3333333333%;\n }\n .row .col.push-l10 {\n left: 83.3333333333%;\n }\n .row .col.offset-l11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-l11 {\n right: 91.6666666667%;\n }\n .row .col.push-l11 {\n left: 91.6666666667%;\n }\n .row .col.offset-l12 {\n margin-left: 100%;\n }\n .row .col.pull-l12 {\n right: 100%;\n }\n .row .col.push-l12 {\n left: 100%;\n }\n}\n@media only screen and (min-width : 1201px) {\n .row .col.xl1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-xl1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-xl1 {\n right: 8.3333333333%;\n }\n .row .col.push-xl1 {\n left: 8.3333333333%;\n }\n .row .col.offset-xl2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-xl2 {\n right: 16.6666666667%;\n }\n .row .col.push-xl2 {\n left: 16.6666666667%;\n }\n .row .col.offset-xl3 {\n margin-left: 25%;\n }\n .row .col.pull-xl3 {\n right: 25%;\n }\n .row .col.push-xl3 {\n left: 25%;\n }\n .row .col.offset-xl4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-xl4 {\n right: 33.3333333333%;\n }\n .row .col.push-xl4 {\n left: 33.3333333333%;\n }\n .row .col.offset-xl5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-xl5 {\n right: 41.6666666667%;\n }\n .row .col.push-xl5 {\n left: 41.6666666667%;\n }\n .row .col.offset-xl6 {\n margin-left: 50%;\n }\n .row .col.pull-xl6 {\n right: 50%;\n }\n .row .col.push-xl6 {\n left: 50%;\n }\n .row .col.offset-xl7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-xl7 {\n right: 58.3333333333%;\n }\n .row .col.push-xl7 {\n left: 58.3333333333%;\n }\n .row .col.offset-xl8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-xl8 {\n right: 66.6666666667%;\n }\n .row .col.push-xl8 {\n left: 66.6666666667%;\n }\n .row .col.offset-xl9 {\n margin-left: 75%;\n }\n .row .col.pull-xl9 {\n right: 75%;\n }\n .row .col.push-xl9 {\n left: 75%;\n }\n .row .col.offset-xl10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-xl10 {\n right: 83.3333333333%;\n }\n .row .col.push-xl10 {\n left: 83.3333333333%;\n }\n .row .col.offset-xl11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-xl11 {\n right: 91.6666666667%;\n }\n .row .col.push-xl11 {\n left: 91.6666666667%;\n }\n .row .col.offset-xl12 {\n margin-left: 100%;\n }\n .row .col.pull-xl12 {\n right: 100%;\n }\n .row .col.push-xl12 {\n left: 100%;\n }\n}\n\n.sidenav {\n position: fixed;\n width: 300px;\n left: 0;\n top: 0;\n margin: 0;\n height: 100%;\n height: calc(100% + 60px);\n height: -moz-calc(100%);\n padding-bottom: 60px;\n background-color: #fff;\n z-index: 999;\n overflow-y: auto;\n will-change: transform;\n backface-visibility: hidden;\n transform: translateX(-105%);\n transition: transform 1s;\n}\n.sidenav.right-aligned {\n right: 0;\n left: auto;\n transform: translateX(100%);\n}\n.sidenav .collapsible {\n margin: 0;\n}\n.sidenav li {\n float: none;\n}\n.sidenav li .iconSideLink {\n display: flex;\n align-items: center;\n}\n.sidenav li .iconSideLink svg {\n stroke: rgba(0, 0, 0, 0.2);\n width: 30px;\n}\n.sidenav li.active {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.sidenav li.active svg {\n stroke: white !important;\n width: 30px;\n}\n.sidenav li.last {\n position: sticky;\n top: calc(100% - 45px - 35px);\n}\n.sidenav li > a {\n color: rgba(0, 0, 0, 0.87);\n display: flex;\n font-size: 14px;\n font-weight: 700;\n height: 45px;\n line-height: 45px;\n padding: 0 30px;\n}\n.sidenav li > a:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.sidenav li > a.btn, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-flat, .sidenav li > a.btn-floating {\n margin: 10px 15px;\n}\n.sidenav li > a.btn, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-floating {\n color: #fff;\n}\n.sidenav li > a.btn-flat {\n color: #343434;\n}\n.sidenav li > a.btn:hover, .sidenav li > a.btn-small:hover, .sidenav li > a.btn-large:hover {\n background-color: #414141;\n}\n.sidenav li > a.btn-floating:hover {\n background-color: #343434;\n}\n.sidenav li > a > i, .sidenav li > a > [class^=mdi-],\n.sidenav li > a li > a > [class*=mdi-], .sidenav li > a > i.s-icon {\n float: left;\n height: 45px;\n line-height: 45px;\n margin: 0 30px 0 0;\n width: 22.5px;\n color: rgba(0, 0, 0, 0.54);\n}\n.sidenav .divider {\n margin: 7.5px 0 0 0;\n}\n.sidenav .subheader {\n cursor: initial;\n pointer-events: none;\n color: rgba(0, 0, 0, 0.54);\n font-size: 14px;\n font-weight: 500;\n line-height: 45px;\n}\n.sidenav .subheader:hover {\n background-color: transparent;\n}\n.sidenav .user-view {\n position: relative;\n padding: 30px 30px 0;\n margin-bottom: 7.5px;\n}\n.sidenav .user-view > a {\n height: auto;\n padding: 0;\n}\n.sidenav .user-view > a:hover {\n background-color: transparent;\n}\n.sidenav .user-view .background {\n overflow: hidden;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n}\n.sidenav .user-view .circle,\n.sidenav .user-view .name,\n.sidenav .user-view .email {\n display: block;\n}\n.sidenav .user-view .circle {\n height: 64px;\n width: 64px;\n}\n.sidenav .user-view .name,\n.sidenav .user-view .email {\n font-size: 14px;\n line-height: 22.5px;\n}\n.sidenav .user-view .name {\n margin-top: 16px;\n font-weight: 500;\n}\n.sidenav .user-view .email {\n padding-bottom: 16px;\n font-weight: 400;\n}\n\n.drag-target {\n height: 100%;\n width: 10px;\n position: fixed;\n top: 0;\n z-index: 998;\n}\n.drag-target.right-aligned {\n right: 0;\n}\n\n.sidenav.sidenav-fixed {\n left: 0;\n transform: translateX(0);\n position: fixed;\n}\n.sidenav.sidenav-fixed.right-aligned {\n right: 0;\n left: auto;\n}\n\n@media only screen and (max-width : 992px) {\n .sidenav.sidenav-fixed {\n transform: translateX(-105%);\n }\n .sidenav.sidenav-fixed.right-aligned {\n transform: translateX(105%);\n }\n .sidenav > a {\n padding: 0 15px;\n }\n .sidenav .user-view {\n padding: 15px 15px 0;\n }\n}\n.sidenav .collapsible-body > ul:not(.collapsible) > li.active,\n.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active {\n background-color: #90caf9;\n}\n.sidenav .collapsible-body > ul:not(.collapsible) > li.active a,\n.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active a {\n color: #fff;\n}\n\n.sidenav .collapsible-body {\n padding: 0;\n}\n\n.sidenav-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n opacity: 0;\n height: 120vh;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 997;\n display: none;\n}\n\n.with-side-nav-open {\n padding-left: 300px;\n transition: padding 1s;\n}\n\n.btn, .btn-small, .btn-large,\n.btn-flat {\n border: none;\n border-radius: 2px;\n display: inline-block;\n height: 36px;\n line-height: 36px;\n padding: 0 16px;\n text-transform: uppercase;\n vertical-align: middle;\n -webkit-tap-highlight-color: transparent;\n}\n\n.btn.disabled,\n.btn-floating.disabled,\n.btn-large.disabled,\n.btn-small.disabled,\n.btn-flat.disabled,\n.btn:disabled,\n.btn-floating:disabled,\n.btn-large:disabled,\n.btn-small:disabled,\n.btn-flat:disabled,\n.btn[disabled],\n.btn-floating[disabled],\n.btn-large[disabled],\n.btn-small[disabled],\n.btn-flat[disabled] {\n pointer-events: none;\n background-color: #DFDFDF !important;\n box-shadow: none;\n color: #9F9F9F !important;\n cursor: default;\n}\n.btn.disabled:hover,\n.btn-floating.disabled:hover,\n.btn-large.disabled:hover,\n.btn-small.disabled:hover,\n.btn-flat.disabled:hover,\n.btn:disabled:hover,\n.btn-floating:disabled:hover,\n.btn-large:disabled:hover,\n.btn-small:disabled:hover,\n.btn-flat:disabled:hover,\n.btn[disabled]:hover,\n.btn-floating[disabled]:hover,\n.btn-large[disabled]:hover,\n.btn-small[disabled]:hover,\n.btn-flat[disabled]:hover {\n background-color: #DFDFDF !important;\n color: #9F9F9F !important;\n}\n\n.btn,\n.btn-small,\n.btn-large,\n.btn-floating,\n.btn-flat {\n font-size: 14px;\n outline: 0;\n}\n.btn i,\n.btn-floating i,\n.btn-large i,\n.btn-small i,\n.btn-flat i {\n font-size: 1.3rem;\n line-height: inherit;\n}\n\n.btn:focus, .btn-small:focus, .btn-large:focus,\n.btn-floating:focus {\n background-color: #1b1b1b;\n}\n\n.btn, .btn-small, .btn-large {\n text-decoration: none;\n color: #fff;\n background-color: #343434;\n text-align: center;\n letter-spacing: 0.5px;\n transition: background-color 0.2s ease-out;\n cursor: pointer;\n}\n.btn:hover, .btn-small:hover, .btn-large:hover {\n background-color: #414141;\n}\n\n.btn-floating {\n display: inline-block;\n color: #fff;\n position: relative;\n overflow: hidden;\n z-index: 1;\n width: 40px;\n height: 40px;\n line-height: 40px;\n padding: 0;\n background-color: #26a69a;\n border-radius: 50%;\n transition: background-color 0.3s;\n cursor: pointer;\n vertical-align: middle;\n}\n.btn-floating:hover {\n background-color: #26a69a;\n}\n.btn-floating:before {\n border-radius: 0;\n}\n.btn-floating.btn-large {\n width: 56px;\n height: 56px;\n padding: 0;\n}\n.btn-floating.btn-large.halfway-fab {\n bottom: 28px;\n}\n.btn-floating.btn-large i {\n line-height: 56px;\n}\n.btn-floating.btn-small {\n width: 32.4px;\n height: 32.4px;\n}\n.btn-floating.btn-small.halfway-fab {\n bottom: 16.2px;\n}\n.btn-floating.btn-small i {\n line-height: 32.4px;\n}\n.btn-floating.halfway-fab {\n position: absolute;\n right: 24px;\n bottom: 20px;\n}\n.btn-floating.halfway-fab.left {\n right: auto;\n left: 24px;\n}\n.btn-floating i {\n width: inherit;\n display: inline-block;\n text-align: center;\n color: #fff;\n font-size: 1.6rem;\n line-height: 40px;\n}\n\nbutton.btn-floating {\n border: none;\n}\n\n.fixed-action-btn {\n position: fixed;\n right: 23px;\n bottom: 23px;\n padding-top: 15px;\n margin-bottom: 0;\n z-index: 997;\n}\n.fixed-action-btn.active ul {\n visibility: visible;\n}\n.fixed-action-btn.direction-left, .fixed-action-btn.direction-right {\n padding: 0 0 0 15px;\n}\n.fixed-action-btn.direction-left ul, .fixed-action-btn.direction-right ul {\n text-align: right;\n right: 64px;\n top: 50%;\n transform: translateY(-50%);\n height: 100%;\n left: auto;\n /*width 100% only goes to width of button container */\n width: 500px;\n}\n.fixed-action-btn.direction-left ul li, .fixed-action-btn.direction-right ul li {\n display: inline-block;\n margin: 7.5px 15px 0 0;\n}\n.fixed-action-btn.direction-right {\n padding: 0 15px 0 0;\n}\n.fixed-action-btn.direction-right ul {\n text-align: left;\n direction: rtl;\n left: 64px;\n right: auto;\n}\n.fixed-action-btn.direction-right ul li {\n margin: 7.5px 0 0 15px;\n}\n.fixed-action-btn.direction-bottom {\n padding: 0 0 15px 0;\n}\n.fixed-action-btn.direction-bottom ul {\n top: 64px;\n bottom: auto;\n display: flex;\n flex-direction: column-reverse;\n}\n.fixed-action-btn.direction-bottom ul li {\n margin: 15px 0 0 0;\n}\n.fixed-action-btn.toolbar {\n padding: 0;\n height: 56px;\n}\n.fixed-action-btn.toolbar.active > a i {\n opacity: 0;\n}\n.fixed-action-btn.toolbar ul {\n display: flex;\n top: 0;\n bottom: 0;\n z-index: 1;\n}\n.fixed-action-btn.toolbar ul li {\n flex: 1;\n display: inline-block;\n margin: 0;\n height: 100%;\n transition: none;\n}\n.fixed-action-btn.toolbar ul li a {\n display: block;\n overflow: hidden;\n position: relative;\n width: 100%;\n height: 100%;\n background-color: transparent;\n box-shadow: none;\n color: #fff;\n line-height: 56px;\n z-index: 1;\n}\n.fixed-action-btn.toolbar ul li a i {\n line-height: inherit;\n}\n.fixed-action-btn ul {\n left: 0;\n right: 0;\n text-align: center;\n position: absolute;\n bottom: 64px;\n margin: 0;\n visibility: hidden;\n}\n.fixed-action-btn ul li {\n margin-bottom: 15px;\n}\n.fixed-action-btn ul a.btn-floating {\n opacity: 0;\n}\n.fixed-action-btn .fab-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -1;\n width: 40px;\n height: 40px;\n background-color: #26a69a;\n border-radius: 50%;\n transform: scale(0);\n}\n\n.btn-flat {\n box-shadow: none;\n background-color: transparent;\n color: #343434;\n cursor: pointer;\n transition: background-color 0.2s;\n}\n.btn-flat:focus, .btn-flat:hover {\n box-shadow: none;\n}\n.btn-flat:focus {\n background-color: rgba(0, 0, 0, 0.1);\n}\n.btn-flat.disabled, .btn-flat.btn-flat[disabled] {\n background-color: transparent !important;\n color: #b3b3b3 !important;\n cursor: default;\n}\n\n.btn-large {\n height: 54px;\n line-height: 54px;\n font-size: 15px;\n padding: 0 28px;\n}\n.btn-large i {\n font-size: 1.6rem;\n}\n\n.btn-small {\n height: 32.4px;\n line-height: 32.4px;\n font-size: 13px;\n}\n.btn-small i {\n font-size: 1.2rem;\n}\n\n.btn-block {\n display: block;\n}\n\n.communTabHeader, .tabs.activeTab-2 .tab-header-over2 .tab-header, .tabs.activeTab-2 .tab-header-over1 .tab-header, .tabs.activeTab-2 .tab-header-over0 .tab-header, .tabs.activeTab-1 .tab-header-over2 .tab-header, .tabs.activeTab-1 .tab-header-over1 .tab-header, .tabs.activeTab-1 .tab-header-over0 .tab-header, .tabs.activeTab-0 .tab-header-over2 .tab-header, .tabs.activeTab-0 .tab-header-over1 .tab-header, .tabs.activeTab-0 .tab-header-over0 .tab-header {\n height: 100px;\n padding: 40px;\n}\n\n.tabs {\n min-height: calc(100% - 150px);\n margin-top: 30px;\n padding: 0 !important;\n border-radius: 40px !important;\n}\n.tabs .innerpage {\n min-height: 70VH !important;\n}\n.tabs .tabs-header-overlay {\n display: flex;\n height: 100px;\n}\n.tabs.activeTab-0 .tab-header-over0 {\n flex: 1;\n background-color: #80c4fd;\n border-radius: 40px 0 0 0;\n}\n.tabs.activeTab-0 .tab-header-over0 .tab-header {\n background-color: #cbe7fe;\n border-radius: 40px 40px 0 0;\n}\n.tabs.activeTab-0 .tab-header-over1 {\n flex: 1;\n background: linear-gradient(0.25turn, #cbe7fe, #35a2fb);\n border-radius: 0 0 0 0;\n}\n.tabs.activeTab-0 .tab-header-over1 .tab-header {\n background-color: #80c4fd;\n border-radius: 0 40px 0 40px;\n}\n.tabs.activeTab-0 .tab-header-over2 {\n flex: 1;\n background-color: #80c4fd;\n border-radius: 0 40px 0 0;\n}\n.tabs.activeTab-0 .tab-header-over2 .tab-header {\n background-color: #35a2fb;\n border-radius: 0 40px 0 40px;\n}\n.tabs.activeTab-1 .tab-header-over0 {\n flex: 1;\n background-color: #cbe7fe;\n border-radius: 40px 0 0 0;\n}\n.tabs.activeTab-1 .tab-header-over0 .tab-header {\n background-color: #80c4fd;\n border-radius: 40px 0 40px 0;\n}\n.tabs.activeTab-1 .tab-header-over1 {\n flex: 1;\n background: linear-gradient(0.25turn, #80c4fd, #35a2fb);\n border-radius: 0 0 0 0;\n}\n.tabs.activeTab-1 .tab-header-over1 .tab-header {\n background-color: #cbe7fe;\n border-radius: 40px 40px 0 0;\n}\n.tabs.activeTab-1 .tab-header-over2 {\n flex: 1;\n background-color: #cbe7fe;\n border-radius: 0 40px 0 0;\n}\n.tabs.activeTab-1 .tab-header-over2 .tab-header {\n background-color: #35a2fb;\n border-radius: 0 40px 0 40px;\n}\n.tabs.activeTab-2 .tab-header-over0 {\n flex: 1;\n background-color: #35a2fb;\n border-radius: 40px 0 0 0;\n}\n.tabs.activeTab-2 .tab-header-over0 .tab-header {\n background-color: #80c4fd;\n border-radius: 40px 0 40px 0;\n}\n.tabs.activeTab-2 .tab-header-over1 {\n flex: 1;\n background: linear-gradient(0.25turn, #80c4fd, #cbe7fe);\n border-radius: 0 0 0 0;\n}\n.tabs.activeTab-2 .tab-header-over1 .tab-header {\n background-color: #35a2fb;\n border-radius: 40px 0 40px 0;\n}\n.tabs.activeTab-2 .tab-header-over2 {\n flex: 1;\n background-color: #35a2fb;\n border-radius: 0 40px 0 0;\n}\n.tabs.activeTab-2 .tab-header-over2 .tab-header {\n background-color: #cbe7fe;\n border-radius: 40px 40px 0 0;\n}\n.tabs .tab-content {\n background-color: #cbe7fe;\n padding: 10px;\n border-top: 0;\n min-height: 70vh;\n border-radius: 0 0 40px 40px;\n padding-bottom: 20px;\n}\n\n.loader-overlay {\n z-index: 999;\n position: absolute;\n height: 100vh;\n width: 100vw;\n top: 0;\n left: 0;\n background-color: rgba(102, 100, 100, 0.603);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n}\n.loader-overlay .loader {\n border: 7px solid #f3f3f3; /* Light grey */\n border-top: 7px solid #2ea2cc; /* Blue */\n border-radius: 50%;\n width: 70px;\n height: 70px;\n animation: spin 2s linear infinite;\n}\n.loader-overlay .loader-text {\n margin-top: 20px;\n font-size: 25px;\n color: #2ea2cc;\n}\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.card-panel {\n transition: box-shadow 0.25s;\n padding: 24px;\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n border-radius: 2px;\n background-color: #fff;\n}\n\n.card {\n position: relative;\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n background-color: #fff;\n transition: box-shadow 0.25s;\n border-radius: 2px;\n}\n.card .card-title {\n font-size: 24px;\n font-weight: 300;\n}\n.card .card-title.activator {\n cursor: pointer;\n}\n.card.small, .card.medium, .card.large {\n position: relative;\n}\n.card.small .card-image, .card.medium .card-image, .card.large .card-image {\n max-height: 60%;\n overflow: hidden;\n}\n.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content {\n max-height: 40%;\n}\n.card.small .card-content, .card.medium .card-content, .card.large .card-content {\n max-height: 100%;\n overflow: hidden;\n}\n.card.small .card-action, .card.medium .card-action, .card.large .card-action {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n.card.small {\n height: 300px;\n}\n.card.medium {\n height: 400px;\n}\n.card.large {\n height: 500px;\n}\n.card.horizontal {\n display: flex;\n}\n.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image {\n height: 100%;\n max-height: none;\n overflow: visible;\n}\n.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img {\n height: 100%;\n}\n.card.horizontal .card-image {\n max-width: 50%;\n}\n.card.horizontal .card-image img {\n border-radius: 2px 0 0 2px;\n max-width: 100%;\n width: auto;\n}\n.card.horizontal .card-stacked {\n display: flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n}\n.card.horizontal .card-stacked .card-content {\n flex-grow: 1;\n}\n.card.sticky-action .card-action {\n z-index: 2;\n}\n.card.sticky-action .card-reveal {\n z-index: 1;\n padding-bottom: 64px;\n}\n.card .card-image {\n position: relative;\n}\n.card .card-image img {\n display: block;\n border-radius: 2px 2px 0 0;\n position: relative;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n width: 100%;\n}\n.card .card-image .card-title {\n color: #fff;\n position: absolute;\n bottom: 0;\n left: 0;\n max-width: 100%;\n padding: 24px;\n}\n.card .card-content {\n padding: 24px;\n border-radius: 0 0 2px 2px;\n}\n.card .card-content p {\n margin: 0;\n}\n.card .card-content .card-title {\n display: block;\n line-height: 32px;\n margin-bottom: 8px;\n}\n.card .card-content .card-title i {\n line-height: 32px;\n}\n.card .card-action {\n background-color: inherit;\n border-top: 1px solid rgba(160, 160, 160, 0.2);\n position: relative;\n padding: 16px 24px;\n}\n.card .card-action:last-child {\n border-radius: 0 0 2px 2px;\n}\n.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating) {\n color: #ffab40;\n margin-right: 24px;\n transition: color 0.3s ease;\n text-transform: uppercase;\n}\n.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating):hover {\n color: #ffd8a6;\n}\n.card .card-reveal {\n padding: 24px;\n position: absolute;\n background-color: #fff;\n width: 100%;\n overflow-y: auto;\n left: 0;\n top: 100%;\n height: 100%;\n z-index: 3;\n display: none;\n}\n.card .card-reveal .card-title {\n cursor: pointer;\n display: block;\n}\n\n/*\n @license\n Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n Code distributed by Google as part of the polymer project is also\n subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n/**************************/\n/* STYLES FOR THE SPINNER */\n/**************************/\n/*\n * Constants:\n * STROKEWIDTH = 3px\n * ARCSIZE = 270 degrees (amount of circle the arc takes up)\n * ARCTIME = 1333ms (time it takes to expand and contract arc)\n * ARCSTARTROT = 216 degrees (how much the start location of the arc\n * should rotate each time, 216 gives us a\n * 5 pointed star shape (it's 360/5 * 3).\n * For a 7 pointed star, we might do\n * 360/7 * 3 = 154.286)\n * CONTAINERWIDTH = 28px\n * SHRINK_TIME = 400ms\n */\n.preloader-wrapper {\n display: inline-block;\n position: relative;\n width: 50px;\n height: 50px;\n}\n.preloader-wrapper.small {\n width: 36px;\n height: 36px;\n}\n.preloader-wrapper.big {\n width: 64px;\n height: 64px;\n}\n.preloader-wrapper.active {\n /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */\n -webkit-animation: container-rotate 1568ms linear infinite;\n animation: container-rotate 1568ms linear infinite;\n}\n\n@-webkit-keyframes container-rotate {\n to {\n -webkit-transform: rotate(360deg);\n }\n}\n@keyframes container-rotate {\n to {\n transform: rotate(360deg);\n }\n}\n.spinner-layer {\n position: absolute;\n width: 100%;\n height: 100%;\n opacity: 0;\n border-color: #26a69a;\n}\n\n.spinner-blue,\n.spinner-blue-only {\n border-color: #4285f4;\n}\n\n.spinner-red,\n.spinner-red-only {\n border-color: #db4437;\n}\n\n.spinner-yellow,\n.spinner-yellow-only {\n border-color: #f4b400;\n}\n\n.spinner-green,\n.spinner-green-only {\n border-color: #0f9d58;\n}\n\n/**\n * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):\n *\n * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't\n * guarantee that the animation will start _exactly_ after that value. So we avoid using\n * animation-delay and instead set custom keyframes for each color (as redundant as it\n * seems).\n *\n * We write out each animation in full (instead of separating animation-name,\n * animation-duration, etc.) because under the polyfill, Safari does not recognize those\n * specific properties properly, treats them as -webkit-animation, and overrides the\n * other animation rules. See https://github.com/Polymer/platform/issues/53.\n */\n.active .spinner-layer.spinner-blue {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-red {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-yellow {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-green {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer,\n.active .spinner-layer.spinner-blue-only,\n.active .spinner-layer.spinner-red-only,\n.active .spinner-layer.spinner-yellow-only,\n.active .spinner-layer.spinner-green-only {\n /* durations: 4 * ARCTIME */\n opacity: 1;\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n@-webkit-keyframes fill-unfill-rotate {\n 12.5% {\n -webkit-transform: rotate(135deg);\n } /* 0.5 * ARCSIZE */\n 25% {\n -webkit-transform: rotate(270deg);\n } /* 1 * ARCSIZE */\n 37.5% {\n -webkit-transform: rotate(405deg);\n } /* 1.5 * ARCSIZE */\n 50% {\n -webkit-transform: rotate(540deg);\n } /* 2 * ARCSIZE */\n 62.5% {\n -webkit-transform: rotate(675deg);\n } /* 2.5 * ARCSIZE */\n 75% {\n -webkit-transform: rotate(810deg);\n } /* 3 * ARCSIZE */\n 87.5% {\n -webkit-transform: rotate(945deg);\n } /* 3.5 * ARCSIZE */\n to {\n -webkit-transform: rotate(1080deg);\n } /* 4 * ARCSIZE */\n}\n@keyframes fill-unfill-rotate {\n 12.5% {\n transform: rotate(135deg);\n } /* 0.5 * ARCSIZE */\n 25% {\n transform: rotate(270deg);\n } /* 1 * ARCSIZE */\n 37.5% {\n transform: rotate(405deg);\n } /* 1.5 * ARCSIZE */\n 50% {\n transform: rotate(540deg);\n } /* 2 * ARCSIZE */\n 62.5% {\n transform: rotate(675deg);\n } /* 2.5 * ARCSIZE */\n 75% {\n transform: rotate(810deg);\n } /* 3 * ARCSIZE */\n 87.5% {\n transform: rotate(945deg);\n } /* 3.5 * ARCSIZE */\n to {\n transform: rotate(1080deg);\n } /* 4 * ARCSIZE */\n}\n@-webkit-keyframes blue-fade-in-out {\n from {\n opacity: 1;\n }\n 25% {\n opacity: 1;\n }\n 26% {\n opacity: 0;\n }\n 89% {\n opacity: 0;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes blue-fade-in-out {\n from {\n opacity: 1;\n }\n 25% {\n opacity: 1;\n }\n 26% {\n opacity: 0;\n }\n 89% {\n opacity: 0;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n }\n}\n@-webkit-keyframes red-fade-in-out {\n from {\n opacity: 0;\n }\n 15% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n opacity: 1;\n }\n 51% {\n opacity: 0;\n }\n}\n@keyframes red-fade-in-out {\n from {\n opacity: 0;\n }\n 15% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n opacity: 1;\n }\n 51% {\n opacity: 0;\n }\n}\n@-webkit-keyframes yellow-fade-in-out {\n from {\n opacity: 0;\n }\n 40% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 75% {\n opacity: 1;\n }\n 76% {\n opacity: 0;\n }\n}\n@keyframes yellow-fade-in-out {\n from {\n opacity: 0;\n }\n 40% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 75% {\n opacity: 1;\n }\n 76% {\n opacity: 0;\n }\n}\n@-webkit-keyframes green-fade-in-out {\n from {\n opacity: 0;\n }\n 65% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes green-fade-in-out {\n from {\n opacity: 0;\n }\n 65% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n/**\n * Patch the gap that appear between the two adjacent div.circle-clipper while the\n * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).\n */\n.gap-patch {\n position: absolute;\n top: 0;\n left: 45%;\n width: 10%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n}\n\n.gap-patch .circle {\n width: 1000%;\n left: -450%;\n}\n\n.circle-clipper {\n display: inline-block;\n position: relative;\n width: 50%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n}\n.circle-clipper .circle {\n width: 200%;\n height: 100%;\n border-width: 3px; /* STROKEWIDTH */\n border-style: solid;\n border-color: inherit;\n border-bottom-color: transparent !important;\n border-radius: 50%;\n -webkit-animation: none;\n animation: none;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n}\n.circle-clipper.left .circle {\n left: 0;\n border-right-color: transparent !important;\n -webkit-transform: rotate(129deg);\n transform: rotate(129deg);\n}\n.circle-clipper.right .circle {\n left: -100%;\n border-left-color: transparent !important;\n -webkit-transform: rotate(-129deg);\n transform: rotate(-129deg);\n}\n\n.active .circle-clipper.left .circle {\n /* duration: ARCTIME */\n -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .circle-clipper.right .circle {\n /* duration: ARCTIME */\n -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n@-webkit-keyframes left-spin {\n from {\n -webkit-transform: rotate(130deg);\n }\n 50% {\n -webkit-transform: rotate(-5deg);\n }\n to {\n -webkit-transform: rotate(130deg);\n }\n}\n@keyframes left-spin {\n from {\n transform: rotate(130deg);\n }\n 50% {\n transform: rotate(-5deg);\n }\n to {\n transform: rotate(130deg);\n }\n}\n@-webkit-keyframes right-spin {\n from {\n -webkit-transform: rotate(-130deg);\n }\n 50% {\n -webkit-transform: rotate(5deg);\n }\n to {\n -webkit-transform: rotate(-130deg);\n }\n}\n@keyframes right-spin {\n from {\n transform: rotate(-130deg);\n }\n 50% {\n transform: rotate(5deg);\n }\n to {\n transform: rotate(-130deg);\n }\n}\n#spinnerContainer.cooldown {\n /* duration: SHRINK_TIME */\n -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);\n animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@-webkit-keyframes fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.progress {\n position: relative;\n height: 4px;\n display: block;\n width: 100%;\n background-color: #acece6;\n border-radius: 2px;\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n overflow: hidden;\n}\n.progress .determinate {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n background-color: #26a69a;\n transition: width 0.3s linear;\n}\n.progress .indeterminate {\n background-color: #26a69a;\n}\n.progress .indeterminate:before {\n content: \"\";\n position: absolute;\n background-color: inherit;\n top: 0;\n left: 0;\n bottom: 0;\n will-change: left, right;\n animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n}\n.progress .indeterminate:after {\n content: \"\";\n position: absolute;\n background-color: inherit;\n top: 0;\n left: 0;\n bottom: 0;\n will-change: left, right;\n animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;\n animation-delay: 1.15s;\n}\n\n@keyframes indeterminate {\n 0% {\n left: -35%;\n right: 100%;\n }\n 60% {\n left: 100%;\n right: -90%;\n }\n 100% {\n left: 100%;\n right: -90%;\n }\n}\n@keyframes indeterminate-short {\n 0% {\n left: -200%;\n right: 100%;\n }\n 60% {\n left: 107%;\n right: -8%;\n }\n 100% {\n left: 107%;\n right: -8%;\n }\n}\n.flash-message {\n position: absolute;\n padding: 2px 10px;\n border-radius: 5px;\n z-index: 99999;\n right: 0;\n bottom: 0;\n font-size: 14px;\n}\n.flash-message.info {\n background-color: #beddbe;\n border: 1px solid #728f72;\n}\n.flash-message.warn {\n background-color: #f5e6d0;\n border: 1px solid #ea7d17;\n}\n.flash-message.error {\n background-color: #e5b2bc;\n border: 1px solid #e33257;\n}\n\n@keyframes messageIn {\n from {\n right: 80%;\n }\n to {\n right: 0;\n }\n}\n.pulse {\n overflow: visible;\n position: relative;\n}\n.pulse::before {\n content: \"\";\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n background-color: inherit;\n border-radius: inherit;\n transition: opacity 0.3s, transform 0.3s;\n animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;\n}\n\n@keyframes pulse-animation {\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0;\n transform: scale(1.5);\n }\n 100% {\n opacity: 0;\n transform: scale(1.5);\n }\n}\n.dropdown-content {\n background-color: #fff;\n margin: 0;\n display: flow;\n min-width: 100px;\n overflow-y: auto;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 9999;\n transform-origin: 0 0;\n}\n.dropdown-content:focus {\n outline: 0;\n}\n.dropdown-content li {\n clear: both;\n color: rgba(0, 0, 0, 0.87);\n cursor: pointer;\n min-height: 50px;\n line-height: 1.5rem;\n width: 100%;\n text-align: left;\n}\n.dropdown-content li:hover, .dropdown-content li.active {\n background-color: #eee;\n}\n.dropdown-content li:focus {\n outline: none;\n}\n.dropdown-content li.divider {\n min-height: 0;\n height: 1px;\n}\n.dropdown-content li > a, .dropdown-content li > span {\n font-size: 16px;\n color: #26a69a;\n display: block;\n line-height: 22px;\n padding: 14px 16px;\n}\n.dropdown-content li > span > label {\n top: 1px;\n left: 0;\n height: 18px;\n}\n.dropdown-content li > a > i {\n height: inherit;\n line-height: inherit;\n float: left;\n margin: 0 24px 0 0;\n width: 24px;\n}\n\nbody.keyboard-focused .dropdown-content li:focus {\n background-color: #dadada;\n}\n\n.input-field.col .dropdown-content [type=checkbox] + label {\n top: 1px;\n left: 0;\n height: 18px;\n transform: none;\n}\n\n.dropdown-trigger {\n cursor: pointer;\n}\n\nnav {\n color: #fff;\n background-color: #90caf9;\n width: 100%;\n height: 56px;\n line-height: 56px;\n}\nnav.nav-extended {\n height: auto;\n}\nnav.nav-extended .nav-wrapper {\n display: flex;\n align-items: center;\n min-height: 56px;\n height: auto;\n}\nnav.nav-extended .nav-content {\n position: relative;\n line-height: normal;\n}\nnav a {\n color: #fff;\n}\nnav i,\nnav [class^=mdi-], nav [class*=mdi-],\nnav i.s-icons {\n display: block;\n font-size: 24px;\n height: 56px;\n line-height: 56px;\n}\nnav .nav-wrapper {\n position: relative;\n height: 100%;\n}\n@media only screen and (min-width : 993px) {\n nav a.sidenav-trigger {\n display: none;\n }\n}\nnav .sidenav-trigger {\n float: left;\n position: relative;\n z-index: 1;\n height: 56px;\n margin: 0 18px;\n}\nnav .sidenav-trigger i {\n height: 56px;\n line-height: 56px;\n}\nnav .brand-logo {\n position: absolute;\n color: #fff;\n display: inline-block;\n font-size: 2.1rem;\n padding: 0;\n}\nnav .brand-logo img.circle {\n height: 32px;\n width: 32px;\n}\nnav .brand-logo.center {\n left: 50%;\n transform: translateX(-50%);\n}\n@media only screen and (max-width : 992px) {\n nav .brand-logo {\n left: 50%;\n transform: translateX(-50%);\n }\n nav .brand-logo.left, nav .brand-logo.right {\n padding: 0;\n transform: none;\n }\n nav .brand-logo.left {\n left: 0.5rem;\n }\n nav .brand-logo.right {\n right: 0.5rem;\n left: auto;\n }\n}\nnav .brand-logo.right {\n right: 0.5rem;\n padding: 0;\n}\nnav .brand-logo i,\nnav .brand-logo [class^=mdi-], nav .brand-logo [class*=mdi-],\nnav .brand-logo i.s-icons {\n float: left;\n margin-right: 15px;\n}\nnav .nav-title {\n display: inline-block;\n font-size: 32px;\n padding: 28px 0;\n}\nnav ul {\n margin: 0;\n}\nnav ul li {\n transition: background-color 0.3s;\n float: left;\n padding: 0;\n}\nnav ul li.active {\n background-color: rgba(0, 0, 0, 0.1);\n}\nnav ul a {\n transition: background-color 0.3s;\n font-size: 1rem;\n color: #fff;\n display: block;\n padding: 0 15px;\n cursor: pointer;\n}\nnav ul a.btn, nav ul a.btn-small, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating {\n margin-top: -2px;\n margin-left: 15px;\n margin-right: 15px;\n}\nnav ul a.btn > .material-icons, nav ul a.btn-small > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons {\n height: inherit;\n line-height: inherit;\n}\nnav ul a:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\nnav ul.left {\n float: left;\n}\nnav form {\n height: 100%;\n}\nnav .input-field {\n margin: 0;\n height: 100%;\n}\nnav .input-field input {\n height: 100%;\n font-size: 1.2rem;\n border: none;\n padding-left: 2rem;\n}\nnav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid {\n border: none;\n box-shadow: none;\n}\nnav .input-field label {\n top: 0;\n left: 0;\n}\nnav .input-field label i {\n color: rgba(255, 255, 255, 0.7);\n transition: color 0.3s;\n}\nnav .input-field label.active i {\n color: #fff;\n}\n\n.navbar-fixed {\n position: relative;\n height: 56px;\n z-index: 997;\n}\n.navbar-fixed nav {\n position: fixed;\n}\n\n@media only screen and (min-width : 601px) {\n nav.nav-extended .nav-wrapper {\n min-height: 64px;\n }\n nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i {\n height: 64px;\n line-height: 64px;\n }\n .navbar-fixed {\n height: 64px;\n }\n}","@import \"./colorsVars\";\r\n\r\n@each $color_name, $color in $colors {\r\n @each $color_type, $color_value in $color {\r\n @if $color_type == \"base\" {\r\n .#{$color_name} {\r\n background-color: $color_value !important;\r\n }\r\n .#{$color_name}-text {\r\n color: $color_value !important;\r\n }\r\n .#{$color_name}-waves .waves-ripple {\r\n background-color: $color_value !important;\r\n }\r\n } @else {\r\n .#{$color_name}.#{$color_type} {\r\n background-color: $color_value !important;\r\n }\r\n .#{$color_name}-text.text-#{$color_type} {\r\n color: $color_value !important;\r\n }\r\n .#{$color_name}-waves.waves-#{$color_type} .waves-ripple {\r\n background-color: $color_value !important;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// ShadeVars classes\r\n$shades: (\r\n \"black\": #000000,\r\n \"white\": #ffffff,\r\n \"transparent\": transparent\r\n);\r\n// Shade classes\r\n@each $color, $color_value in $shades {\r\n .#{$color} {\r\n background-color: $color_value !important;\r\n }\r\n .#{$color}-text {\r\n color: $color_value !important;\r\n }\r\n}\r\n\r\n\r\n\r\n// usage: color(\"name_of_color\", \"type_of_color\")\r\n// to avoid to repeating map-get($colors, ...)\r\n\r\n@function color($color, $type) {\r\n @if map-has-key($colors, $color) {\r\n $curr_color: map-get($colors, $color);\r\n @if map-has-key($curr_color, $type) {\r\n @return map-get($curr_color, $type);\r\n }\r\n }\r\n @warn \"Unknown `#{$color}` - `#{$type}` in $colors.\";\r\n @return null;\r\n}\r\n","/**\r\n * prism.js Twilight theme\r\n * Based (more or less) on the Twilight theme originally of Textmate fame.\r\n * @author Remy Bach\r\n */\r\n code[class*=\"language-\"],\r\n pre[class*=\"language-\"] {\r\n\t color: white;\r\n\t background: none;\r\n\t font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\r\n\t text-align: left;\r\n\t text-shadow: 0 -.1em .2em black;\r\n\t white-space: pre;\r\n\t word-spacing: normal;\r\n\t word-break: normal;\r\n\t word-wrap: normal;\r\n\t line-height: 1.5;\r\n \r\n\t -moz-tab-size: 4;\r\n\t -o-tab-size: 4;\r\n\t tab-size: 4;\r\n \r\n\t -webkit-hyphens: none;\r\n\t -moz-hyphens: none;\r\n\t -ms-hyphens: none;\r\n\t hyphens: none;\r\n }\r\n \r\n pre[class*=\"language-\"],\r\n :not(pre) > code[class*=\"language-\"] {\r\n\t background: hsl(0, 0%, 8%); /* #141414 */\r\n }\r\n \r\n /* Code blocks */\r\n pre[class*=\"language-\"] {\r\n\t border-radius: .5em;\r\n\t border: .3em solid hsl(0, 0%, 33%); /* #282A2B */\r\n\t box-shadow: 1px 1px .5em black inset;\r\n\t margin: .5em 0;\r\n\t overflow: auto;\r\n\t padding: 1em;\r\n }\r\n \r\n pre[class*=\"language-\"]::-moz-selection {\r\n\t /* Firefox */\r\n\t background: hsl(200, 4%, 16%); /* #282A2B */\r\n }\r\n \r\n pre[class*=\"language-\"]::selection {\r\n\t /* Safari */\r\n\t background: hsl(200, 4%, 16%); /* #282A2B */\r\n }\r\n \r\n /* Text Selection colour */\r\n pre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\r\n code[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\r\n\t text-shadow: none;\r\n\t background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */\r\n }\r\n \r\n pre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\r\n code[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\r\n\t text-shadow: none;\r\n\t background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */\r\n }\r\n \r\n /* Inline code */\r\n :not(pre) > code[class*=\"language-\"] {\r\n\t border-radius: .3em;\r\n\t border: .13em solid hsl(0, 0%, 33%); /* #545454 */\r\n\t box-shadow: 1px 1px .3em -.1em black inset;\r\n\t padding: .15em .2em .05em;\r\n\t white-space: normal;\r\n }\r\n \r\n .token.comment,\r\n .token.prolog,\r\n .token.doctype,\r\n .token.cdata {\r\n\t color: hsl(0, 0%, 47%); /* #777777 */\r\n }\r\n \r\n .token.punctuation {\r\n\t opacity: .7;\r\n }\r\n \r\n .namespace {\r\n\t opacity: .7;\r\n }\r\n \r\n .token.tag,\r\n .token.boolean,\r\n .token.number,\r\n .token.deleted {\r\n\t color: hsl(14, 58%, 55%); /* #CF6A4C */\r\n }\r\n \r\n .token.keyword,\r\n .token.property,\r\n .token.selector,\r\n .token.constant,\r\n .token.symbol,\r\n .token.builtin {\r\n\t color: hsl(53, 89%, 79%); /* #F9EE98 */\r\n }\r\n \r\n .token.attr-name,\r\n .token.attr-value,\r\n .token.string,\r\n .token.char,\r\n .token.operator,\r\n .token.entity,\r\n .token.url,\r\n .language-css .token.string,\r\n .style .token.string,\r\n .token.variable,\r\n .token.inserted {\r\n\t color: hsl(76, 21%, 52%); /* #8F9D6A */\r\n }\r\n \r\n .token.atrule {\r\n\t color: hsl(218, 22%, 55%); /* #7587A6 */\r\n }\r\n \r\n .token.regex,\r\n .token.important {\r\n\t color: hsl(42, 75%, 65%); /* #E9C062 */\r\n }\r\n \r\n .token.important,\r\n .token.bold {\r\n\t font-weight: bold;\r\n }\r\n .token.italic {\r\n\t font-style: italic;\r\n }\r\n \r\n .token.entity {\r\n\t cursor: help;\r\n }\r\n \r\n pre[data-line] {\r\n\t padding: 1em 0 1em 3em;\r\n\t position: relative;\r\n }\r\n \r\n /* Markup */\r\n .language-markup .token.tag,\r\n .language-markup .token.attr-name,\r\n .language-markup .token.punctuation {\r\n\t color: hsl(33, 33%, 52%); /* #AC885B */\r\n }\r\n \r\n /* Make the tokens sit above the line highlight so the colours don't look faded. */\r\n .token {\r\n\t position: relative;\r\n\t z-index: 1;\r\n }\r\n \r\n .line-highlight {\r\n\t background: hsla(0, 0%, 33%, 0.25); /* #545454 */\r\n\t background: linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */\r\n\t border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */\r\n\t border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */\r\n\t left: 0;\r\n\t line-height: inherit;\r\n\t margin-top: 0.75em; /* Same as .prism’s padding-top */\r\n\t padding: inherit 0;\r\n\t pointer-events: none;\r\n\t position: absolute;\r\n\t right: 0;\r\n\t white-space: pre;\r\n\t z-index: 0;\r\n }\r\n \r\n .line-highlight:before,\r\n .line-highlight[data-end]:after {\r\n\t background-color: hsl(215, 15%, 59%); /* #8794A6 */\r\n\t border-radius: 999px;\r\n\t box-shadow: 0 1px white;\r\n\t color: hsl(24, 20%, 95%); /* #F5F2F0 */\r\n\t content: attr(data-start);\r\n\t font: bold 65%/1.5 sans-serif;\r\n\t left: .6em;\r\n\t min-width: 1em;\r\n\t padding: 0 .5em;\r\n\t position: absolute;\r\n\t text-align: center;\r\n\t text-shadow: none;\r\n\t top: .4em;\r\n\t vertical-align: .3em;\r\n }\r\n \r\n .line-highlight[data-end]:after {\r\n\t bottom: .4em;\r\n\t content: attr(data-end);\r\n\t top: auto;\r\n }\r\n ","@import 'https://fonts.googleapis.com/css?family=Ubuntu';\r\n\r\n\r\n\r\n.window {\r\n font-family: 'Ubuntu', sans-serif; \r\n font-size : 17px ;\r\n width : 600px ; \r\n margin : 75px auto ; \r\n background : #2c3e50; \r\n height : 350px ; \r\n border-radius : 5px ;\r\n display : relative ; \r\n box-shadow: 10px 10px 10px #888888;\r\n}\r\n\r\n.afterclose {\r\n color : #34495e ; \r\n display: none ; \r\n text-align: center ; \r\n}\r\n\r\n.open {\r\n color : #fff ; \r\n padding : 15px ; \r\n background: #2ecc71 ; \r\n border-radius: 4px ; \r\n border: none ; \r\n}\r\n\r\n.bash {\r\n width : 600px ; \r\n background : #34495e; \r\n height : 310px ; \r\n border-radius : 5px ;\r\n top: 40px;\r\n display : absolute; \r\n color : #fff ;\r\n text-align: left;\r\n .command{\r\n &::before{\r\n content: \"user@machine $ : \";\r\n color: #2ecc71;\r\n }\r\n\r\n }\r\n .resulta{\r\n &::before{\r\n content: \">>\";\r\n color: #2ecc71;\r\n }\r\n\r\n }\r\n}\r\n\r\n/* effected by controllers */\r\n\r\n.windowmax {\r\n width : 100% ; \r\n margin : auto ; \r\n background : #2c3e50; \r\n height : 1000px; \r\n border-radius : 5px ;\r\n display : relative ; \r\n}\r\n\r\n.windowmin {\r\n width : 300px ; \r\n height : 45px ;\r\n background : #2c3e50; \r\n border-radius : 5px ; \r\n bottom : 0 ; \r\n position: fixed;\r\n}\r\n\r\n.bashmax {\r\n display : absolute ; \r\n width : 100% ; \r\n background : #34495e; \r\n height : 960px ; \r\n border-radius : 5px ;\r\n bottom: 0;\r\n color : #fff ;\r\n}\r\n\r\n/* !--end--! */\r\n\r\n.buttons {\r\n width : 15px ;\r\n height : 15px ; \r\n border-radius : 50% ;\r\n float : right ; \r\n margin : 13px 4px;\r\n border: none ; \r\n}\r\n\r\n.close {\r\n background : #e74c3c ;\r\n}\r\n\r\n.maximize{\r\n background : #f1c40f ;\r\n}\r\n\r\n.minimize{\r\n background : #2ecc71 ;\r\n}\r\n\r\n.result {\r\n display : none ;\r\n}\r\n\r\n.controls {\r\n height : 40px ; \r\n top : 0 ; \r\n}\r\n\r\n.title {\r\n color : #fff ; \r\n font-weight: bold ; \r\n padding : 10px;\r\n}\r\n",".material-tooltip {\r\n padding: 10px 8px;\r\n font-size: 1rem;\r\n z-index: 2000;\r\n border-radius: 2px;\r\n color: #fff;\r\n min-height: 36px;\r\n line-height: 120%;\r\n opacity: 0;\r\n position: absolute;\r\n text-align: center;\r\n max-width: calc(100% - 4px);\r\n overflow: hidden;\r\n left: 0;\r\n top: 0;\r\n pointer-events: none;\r\n visibility: hidden;\r\n background-color: #323232;\r\n}\r\n\r\n.backdrop {\r\n position: absolute;\r\n opacity: 0;\r\n height: 7px;\r\n width: 14px;\r\n border-radius: 0 0 50% 50%;\r\n background-color: #323232;\r\n z-index: -1;\r\n transform-origin: 50% 0%;\r\n visibility: hidden;\r\n}\r\n","// Z-levels\r\n.shadow-0 {\r\n box-shadow: none !important;\r\n}\r\n\r\n/* 2dp elevation modified*/\r\n.shadow-1 {\r\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\r\n 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);\r\n}\r\n.shadow-1-half {\r\n box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12),\r\n 0 3px 1px -1px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n/* 6dp elevation modified*/\r\n.shadow-2 {\r\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12),\r\n 0 2px 4px -1px rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n/* 12dp elevation modified*/\r\n.shadow-3 {\r\n box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14),\r\n 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n/* 16dp elevation */\r\n.shadow-4 {\r\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14),\r\n 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n/* 24dp elevation */\r\n.shadow-5 {\r\n box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14),\r\n 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n/* 24dp elevation */\r\n.invert-shadow-5 {\r\n box-shadow: \r\n 38px 0 0 0 rgba(0, 0, 0, 0.14),\r\n 46px 0 0 0 rgba(0, 0, 0, 0.12), \r\n 15px 0 0 0 rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n.hoverable {\r\n transition: box-shadow 0.25s;\r\n\r\n &:hover {\r\n box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2),\r\n 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n }\r\n}\r\n","\r\n/*!\r\n * Waves v0.6.0\r\n * http://fian.my.id/Waves\r\n *\r\n * Copyright 2014 Alfiana E. Sibuea and other contributors\r\n * Released under the MIT license\r\n * https://github.com/fians/Waves/blob/master/LICENSE\r\n */\r\n\r\n\r\n.waves-effect {\r\n position: relative;\r\n cursor: pointer;\r\n display: inline-block;\r\n overflow: hidden;\r\n user-select: none;\r\n -webkit-tap-highlight-color: transparent;\r\n vertical-align: middle;\r\n z-index: 1;\r\n transition: .3s ease-out;\r\n\r\n .waves-ripple {\r\n position: absolute;\r\n border-radius: 50%;\r\n width: 20px;\r\n height: 20px;\r\n margin-top:-10px;\r\n margin-left:-10px;\r\n opacity: 0;\r\n\r\n background: rgba(0,0,0,0.2);\r\n transition: all 0.7s ease-out;\r\n transition-property: transform, opacity;\r\n transform: scale(0);\r\n pointer-events: none;\r\n }\r\n\r\n // Waves Colors\r\n &.waves-light .waves-ripple {\r\n background-color: rgba(255, 255, 255, 0.45);\r\n }\r\n &.waves-red .waves-ripple {\r\n background-color: rgba(244, 67, 54, .70);\r\n }\r\n &.waves-yellow .waves-ripple {\r\n background-color: rgba(255, 235, 59, .70);\r\n }\r\n &.waves-orange .waves-ripple {\r\n background-color: rgba(255, 152, 0, .70);\r\n }\r\n &.waves-purple .waves-ripple {\r\n background-color: rgba(156, 39, 176, 0.70);\r\n }\r\n &.waves-green .waves-ripple {\r\n background-color: rgba(76, 175, 80, 0.70);\r\n }\r\n &.waves-teal .waves-ripple {\r\n background-color: rgba(0, 150, 136, 0.70);\r\n }\r\n\r\n // Style input button bug.\r\n input[type=\"button\"], input[type=\"reset\"], input[type=\"submit\"] {\r\n border: 0;\r\n font-style: normal;\r\n font-size: inherit;\r\n text-transform: inherit;\r\n background: none;\r\n }\r\n\r\n img {\r\n position: relative;\r\n z-index: -1;\r\n }\r\n}\r\n\r\n.waves-notransition {\r\n transition: none #{\"!important\"};\r\n}\r\n\r\n.waves-circle {\r\n transform: translateZ(0);\r\n -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);\r\n}\r\n\r\n.waves-input-wrapper {\r\n border-radius: 0.2em;\r\n vertical-align: bottom;\r\n\r\n .waves-button-input {\r\n position: relative;\r\n top: 0;\r\n left: 0;\r\n z-index: 1;\r\n }\r\n}\r\n\r\n.waves-circle {\r\n text-align: center;\r\n width: 2.5em;\r\n height: 2.5em;\r\n line-height: 2.5em;\r\n border-radius: 50%;\r\n -webkit-mask-image: none;\r\n}\r\n\r\n.waves-block {\r\n display: block;\r\n}\r\n\r\n/* Firefox Bug: link not triggered */\r\n.waves-effect .waves-ripple {\r\n z-index: -1;\r\n}",".modal {\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n @extend .shadow-5;\r\n\r\n //display: none;\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n background-color: #fafafa;\r\n padding: 0;\r\n max-height: 70%;\r\n width: 55%;\r\n margin: auto;\r\n overflow-y: auto;\r\n\r\n border-radius: 2px;\r\n will-change: top, opacity;\r\n\r\n @media #{$medium-and-down} {\r\n width: 80%;\r\n }\r\n\r\n h1,h2,h3,h4 {\r\n margin-top: 0;\r\n }\r\n\r\n .modal-content {\r\n padding: 24px;\r\n }\r\n .modal-close {\r\n cursor: pointer;\r\n }\r\n\r\n .modal-footer {\r\n border-radius: 0 0 2px 2px;\r\n background-color: #fafafa;\r\n padding: 4px 6px;\r\n height: 56px;\r\n width: 100%;\r\n text-align: right;\r\n\r\n .btn, .btn-flat {\r\n margin: 6px 0;\r\n }\r\n }\r\n .modal-header {\r\n border-radius: 2px 2px 0 0 ;\r\n background-color: #fafafa;\r\n padding: 6px 4px;\r\n height: 56px;\r\n width: 100%;\r\n text-align: right;\r\n\r\n .btn, .btn-flat {\r\n margin: 6px 0;\r\n }\r\n }\r\n}\r\n.modal-overlay {\r\n position: fixed;\r\n z-index: 999;\r\n top: -25%;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n height: 125%;\r\n width: 100%;\r\n background: #000;\r\n display: none;\r\n\r\n will-change: opacity;\r\n}\r\n\r\n// Modal with fixed action footer\r\n.modal.modal-fixed-footer {\r\n padding: 0;\r\n height: 70%;\r\n\r\n .modal-content {\r\n position: absolute;\r\n height: calc(100% - 56px);\r\n max-height: 100%;\r\n width: 100%;\r\n overflow-y: auto;\r\n }\r\n\r\n .modal-footer {\r\n border-top: 1px solid rgba(0,0,0,.1);\r\n position: absolute;\r\n bottom: 0;\r\n }\r\n}\r\n\r\n// Modal Bottom Sheet Style\r\n.modal.bottom-sheet {\r\n top: auto;\r\n bottom: -100%;\r\n margin: 0;\r\n width: 100%;\r\n max-height: 45%;\r\n border-radius: 0;\r\n will-change: bottom, opacity;\r\n}\r\n","html,\r\nbody,\r\n#root {\r\n margin: 0;\r\n height: 100%;\r\n}\r\n\r\n\r\n* {\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n}\r\n\r\n.noselect {\r\n -webkit-touch-callout: none; /* iOS Safari */\r\n -webkit-user-select: none; /* Safari */\r\n -khtml-user-select: none; /* Konqueror HTML */\r\n -moz-user-select: none; /* Old versions of Firefox */\r\n -ms-user-select: none; /* Internet Explorer/Edge */\r\n user-select: none;\r\n /* Non-prefixed version, currently\r\n supported by Chrome, Edge, Opera and Firefox */\r\n}\r\n\r\nul {\r\n &:not(.browser-default) {\r\n padding-left: 0;\r\n list-style-type: none;\r\n\r\n & > li {\r\n list-style-type: none;\r\n }\r\n }\r\n}\r\n\r\na {\r\n\tcolor: $link-color;\r\n\ttext-decoration: none;\r\n\r\n // Gets rid of tap active state\r\n -webkit-tap-highlight-color: transparent;\r\n}\r\n\r\n.w-100 {\r\n width: 100%;\r\n}\r\n\r\n.right-align {\r\n text-align: right;\r\n}\r\n.center-align{\r\n text-align: center;\r\n}\r\n\r\n.v-center {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n\r\n.mb1 {\r\n margin-bottom: 10px;\r\n}\r\n\r\n\r\n// Collections\r\n.collection {\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n border: 1px solid $collection-border-color;\r\n border-radius: 2px;\r\n overflow: hidden;\r\n position: relative;\r\n .collection-item {\r\n background-color: $collection-bg-color;\r\n line-height: $collection-line-height;\r\n padding: 10px 20px;\r\n margin: 0;\r\n border-bottom: 1px solid $collection-border-color;\r\n\r\n &.hover {\r\n &:hover {\r\n background-color: $collection-hover-bg-color;\r\n }\r\n }\r\n\r\n // Avatar Collection\r\n &.avatar {\r\n min-height: 84px;\r\n padding-left: 72px;\r\n position: relative;\r\n\r\n\r\n // Don't style circles inside preloader classes.\r\n &:not(.circle-clipper) > .circle,\r\n :not(.circle-clipper) > .circle {\r\n position: absolute;\r\n width: 42px;\r\n height: 42px;\r\n overflow: hidden;\r\n left: 15px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n\r\n i.circle {\r\n font-size: 18px;\r\n line-height: 42px;\r\n color: #fff;\r\n background-color: #999;\r\n text-align: center;\r\n }\r\n\r\n\r\n .title {\r\n font-size: 16px;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n }\r\n\r\n .secondary-content {\r\n position: absolute;\r\n top: 16px;\r\n right: 16px;\r\n }\r\n\r\n }\r\n\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n &.active {\r\n background-color: $collection-active-bg-color;\r\n color: $collection-active-color;\r\n\r\n .secondary-content {\r\n color: #fff;\r\n }\r\n }\r\n }\r\n\r\n a.collection-item {\r\n display: block;\r\n transition: .25s;\r\n color: $collection-link-color;\r\n\r\n &:not(.active) {\r\n &:hover {\r\n background-color: $collection-hover-bg-color;\r\n }\r\n }\r\n }\r\n\r\n &.with-header {\r\n .collection-header {\r\n background-color: $collection-bg-color;\r\n border-bottom: 1px solid $collection-border-color;\r\n padding: 10px 20px;\r\n }\r\n\r\n .collection-item {\r\n padding-left: 30px;\r\n }\r\n\r\n .collection-item.avatar {\r\n padding-left: 72px;\r\n }\r\n }\r\n\r\n}\r\n\r\n// Made less specific to allow easier overriding\r\n.secondary-content {\r\n float: right;\r\n color: $secondary-color;\r\n}\r\n\r\n.collapsible .collection {\r\n margin: 0;\r\n border: none;\r\n}\r\n\r\n\r\n.modal-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n height: 100vh;\r\n width: 100vw;\r\n padding: 20px 0 20px 0;\r\n background-color: rgba(0, 0, 0, .5);\r\n z-index: 999;\r\n display: flex;\r\n justify-content: center;\r\n //align-items: center;\r\n .innerform{\r\n max-width: 650px;\r\n form{\r\n overflow: hidden;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/*********************\r\n Media Query Classes\r\n**********************/\r\n.hide-on-small-only, .hide-on-small-and-down {\r\n @media #{$small-and-down} {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-med-and-down {\r\n @media #{$medium-and-down} {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-med-and-up {\r\n @media #{$medium-and-up} {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-med-only {\r\n @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-large-only {\r\n @media #{$large-and-up} {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-extra-large-only {\r\n @media #{$extra-large-and-up} {\r\n display: none !important;\r\n }\r\n}\r\n.show-on-extra-large {\r\n @media #{$extra-large-and-up} {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-large {\r\n @media #{$large-and-up} {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-medium {\r\n @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-small {\r\n @media #{$small-and-down} {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-medium-and-up {\r\n @media #{$medium-and-up} {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-medium-and-down {\r\n @media #{$medium-and-down} {\r\n display: block !important;\r\n }\r\n}\r\n\r\n\r\n// Center text on mobile\r\n.center-on-small-only {\r\n @media #{$small-and-down} {\r\n text-align: center;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/*******************\r\n Utility Classes\r\n*******************/\r\n\r\n.hide {\r\n display: none !important;\r\n}\r\n\r\n// Text Align\r\n.left-align {\r\n text-align: left;\r\n}\r\n.right-align {\r\n text-align: right\r\n}\r\n.center, .center-align {\r\n text-align: center;\r\n}\r\n\r\n.left {\r\n float: left !important;\r\n}\r\n.right {\r\n float: right !important;\r\n}\r\n\r\n// No Text Select\r\n.no-select {\r\n user-select: none;\r\n}\r\n\r\n.circle {\r\n border-radius: 50%;\r\n}\r\n\r\n.center-block {\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n\r\n.truncate {\r\n display: block;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.no-padding {\r\n padding: 0 !important;\r\n}\r\n","@use \"sass:math\";\r\n$primary-color: color(\"blue\", \"lighten-3\") !default;\r\n$primary-color-light: lighten($primary-color, 15%) !default;\r\n$primary-color-dark: darken($primary-color, 15%) !default;\r\n\r\n$secondary-color: color(\"teal\", \"lighten-1\") !default;\r\n$success-color: color(\"green\", \"base\") !default;\r\n$error-color: color(\"red\", \"base\") !default;\r\n$link-color: color(\"light-blue\", \"darken-1\") !default;\r\n\r\n\r\n\r\n// 2. Badges\r\n// ==========================================================================\r\n\r\n$badge-bg-color: $secondary-color !default;\r\n$badge-height: 22px !default;\r\n\r\n\r\n\r\n// 7. Chips\r\n// ==========================================================================\r\n\r\n$chip-bg-color: #e4e4e4 !default;\r\n$chip-border-color: #9e9e9e !default;\r\n$chip-selected-color: #26a69a !default;\r\n$chip-margin: 5px !default;\r\n\r\n\r\n// 16. Spinners | Loaders\r\n// ==========================================================================\r\n\r\n$spinner-default-color: $secondary-color !default;\r\n\r\n// 24. Progress Bar\r\n// ==========================================================================\r\n\r\n$progress-bar-color: $secondary-color !default;\r\n\r\n\r\n\r\n\r\n\r\n//inputs\r\n\r\n$input-height: 56px;\r\n\r\n// 6. Collapsible\r\n// ==========================================================================\r\n\r\n$collapsible-height: 3rem !default;\r\n$collapsible-line-height: $collapsible-height !default;\r\n$collapsible-header-color: #fff !default;\r\n$collapsible-border-color: #ddd !default;\r\n\r\n// 10. Forms\r\n// ==========================================================================\r\n\r\n// Text Inputs + Textarea\r\n$input-height: 3rem !default;\r\n$input-border-color: color(\"grey\", \"base\") !default;\r\n$input-border: 1px solid $input-border-color !default;\r\n$input-background: #fff !default;\r\n$input-error-color: $error-color !default;\r\n$input-success-color: $success-color !default;\r\n$input-focus-color: $secondary-color !default;\r\n$input-font-size: 16px !default;\r\n$input-margin-bottom: 8px;\r\n$input-margin: 0 0 $input-margin-bottom 0 !default;\r\n$input-padding: 0 !default;\r\n$label-font-size: .8rem !default;\r\n$input-disabled-color: rgba(0,0,0, .42) !default;\r\n$input-disabled-solid-color: #949494 !default;\r\n$input-disabled-border: 1px dotted $input-disabled-color !default;\r\n$input-invalid-border: 1px solid $input-error-color !default;\r\n$input-icon-size: 2rem;\r\n$placeholder-text-color: lighten($input-border-color, 20%) !default;\r\n\r\n// Radio Buttons\r\n$radio-fill-color: $secondary-color !default;\r\n$radio-empty-color: #5a5a5a !default;\r\n$radio-border: 2px solid $radio-fill-color !default;\r\n\r\n// Range\r\n$range-height: 14px !default;\r\n$range-width: 14px !default;\r\n$track-height: 3px !default;\r\n\r\n// Select\r\n$select-border: 1px solid #f2f2f2 !default;\r\n$select-background: rgba(255, 255, 255, 0.90) !default;\r\n$select-focus: 1px solid lighten($secondary-color, 47%) !default;\r\n$select-option-hover: rgba(0,0,0,.08) !default;\r\n$select-option-focus: rgba(0,0,0,.08) !default;\r\n$select-option-selected: rgba(0,0,0,.03) !default;\r\n$select-padding: 5px !default;\r\n$select-radius: 2px !default;\r\n$select-disabled-color: rgba(0,0,0,.3) !default;\r\n\r\n// Switches\r\n$switch-bg-color: $secondary-color !default;\r\n$switch-checked-lever-bg: desaturate(lighten($switch-bg-color, 25%), 25%) !default;\r\n$switch-unchecked-bg: #F1F1F1 !default;\r\n$switch-unchecked-lever-bg: rgba(0,0,0,.38) !default;\r\n$switch-radius: 15px !default;\r\n\r\n// 11. Global\r\n// ==========================================================================\r\n\r\n// Media Query Ranges\r\n$small-screen-up: 601px !default;\r\n$medium-screen-up: 993px !default;\r\n$large-screen-up: 1201px !default;\r\n$small-screen: 600px !default;\r\n$medium-screen: 992px !default;\r\n$large-screen: 1200px !default;\r\n\r\n$medium-and-up: \"only screen and (min-width : #{$small-screen-up})\" !default;\r\n$large-and-up: \"only screen and (min-width : #{$medium-screen-up})\" !default;\r\n$extra-large-and-up: \"only screen and (min-width : #{$large-screen-up})\" !default;\r\n$small-and-down: \"only screen and (max-width : #{$small-screen})\" !default;\r\n$medium-and-down: \"only screen and (max-width : #{$medium-screen})\" !default;\r\n$medium-only: \"only screen and (min-width : #{$small-screen-up}) and (max-width : #{$medium-screen})\" !default;\r\n\r\n\r\n\r\n// 12. Grid\r\n// ==========================================================================\r\n\r\n$num-cols: 12 !default;\r\n$gutter-width: 1rem !default;\r\n$element-top-margin: math.div($gutter-width, 3) !default;\r\n$element-bottom-margin: math.div($gutter-width * 2, 3) !default;\r\n\r\n// 13. Navigation Bar\r\n// ==========================================================================\r\n\r\n$navbar-height: 64px !default;\r\n$navbar-line-height: $navbar-height !default;\r\n$navbar-height-mobile: 56px !default;\r\n$navbar-line-height-mobile: $navbar-height-mobile !default;\r\n$navbar-font-size: 1rem !default;\r\n$navbar-font-color: #fff !default;\r\n$navbar-brand-font-size: 2.1rem !default;\r\n\r\n\r\n// 14. Side Navigation\r\n// ==========================================================================\r\n$button-raised-color: #fff !default;\r\n$button-flat-color: #343434 !default;\r\n$button-raised-background: #343434 !default;\r\n$primary-color:#343434 !default;\r\n\r\n\r\n \r\n$sidenav-width: 300px !default;\r\n$sidenav-font-size: 14px !default;\r\n$sidenav-font-color: rgba(0,0,0,.87) !default;\r\n$sidenav-bg-color: #fff !default;\r\n$sidenav-padding: 15px !default;\r\n$sidenav-item-height: 45px !default;\r\n$sidenav-line-height: $sidenav-item-height !default;\r\n\r\n\r\n\r\n\r\n\r\n\r\n// 3. Buttons\r\n// ==========================================================================\r\n\r\n$primary-color: green !default;\r\n$primary-color-light: lighten($primary-color, 15%) !default;\r\n$primary-color-dark: darken($primary-color, 15%) !default;\r\n$secondary-color: red !default;\r\n\r\n\r\n// Shared styles\r\n$button-border: none !default;\r\n$button-background-focus: lighten($secondary-color, 4%) !default;\r\n$button-font-size: 14px !default;\r\n$button-icon-font-size: 1.3rem !default;\r\n$button-height: 36px !default;\r\n$button-padding: 0 16px !default;\r\n$button-radius: 2px !default;\r\n\r\n// Disabled styles\r\n$button-disabled-background: #DFDFDF !default;\r\n$button-disabled-color: #9F9F9F !default;\r\n\r\n// Raised buttons\r\n$button-raised-background: $secondary-color !default;\r\n$button-raised-background-hover: lighten($button-raised-background, 5%) !default;\r\n$button-raised-color: #fff !default;\r\n\r\n// Large buttons\r\n$button-large-font-size: 15px !default;\r\n$button-large-icon-font-size: 1.6rem !default;\r\n$button-large-height: $button-height * 1.5 !default;\r\n$button-floating-large-size: 56px !default;\r\n\r\n// Small buttons\r\n$button-small-font-size: 13px !default;\r\n$button-small-icon-font-size: 1.2rem !default;\r\n$button-small-height: $button-height * .9 !default;\r\n$button-floating-small-size: $button-height * .9 !default;\r\n\r\n// Flat buttons\r\n$button-flat-color: #343434 !default;\r\n$button-flat-disabled-color: lighten(#999, 10%) !default;\r\n\r\n// Floating buttons\r\n$button-floating-background: $secondary-color !default;\r\n$button-floating-background-hover: $button-floating-background !default;\r\n$button-floating-color: #fff !default;\r\n$button-floating-size: 40px !default;\r\n$button-floating-radius: 50% !default;\r\n\r\n\r\n\r\n\r\n// 4. Cards\r\n// ==========================================================================\r\n\r\n$card-padding: 24px !default;\r\n$card-bg-color: #fff !default;\r\n$card-link-color: color(\"orange\", \"accent-2\") !default;\r\n$card-link-color-light: lighten($card-link-color, 20%) !default;\r\n\r\n\r\n\r\n\r\n\r\n\r\n// 23. Collections\r\n// ==========================================================================\r\n\r\n$collection-border-color: #e0e0e0 !default;\r\n$collection-bg-color: #fff !default;\r\n$collection-active-bg-color: $secondary-color !default;\r\n$collection-active-color: lighten($secondary-color, 55%) !default;\r\n$collection-hover-bg-color: #ddd !default;\r\n$collection-link-color: $secondary-color !default;\r\n$collection-line-height: 1.5rem !default;\r\n\r\n\r\n\r\n\r\n\r\n// 9. Dropdown\r\n// ==========================================================================\r\n\r\n$dropdown-bg-color: #fff !default;\r\n$dropdown-hover-bg-color: #eee !default;\r\n$dropdown-color: $secondary-color !default;\r\n$dropdown-item-height: 50px !default;\r\n\r\n\r\n$off-black: rgba(0, 0, 0, 0.87) !default;","// Badges\r\nspan.badge {\r\n min-width: 3rem;\r\n padding: 0 6px;\r\n margin-left: 14px;\r\n text-align: center;\r\n font-size: 1rem;\r\n line-height: $badge-height;\r\n height: $badge-height;\r\n color: color('grey', 'darken-1');\r\n float: right;\r\n box-sizing: border-box;\r\n\r\n &.new {\r\n font-weight: 300;\r\n font-size: 0.8rem;\r\n color: #fff;\r\n background-color: $badge-bg-color;\r\n border-radius: 2px;\r\n }\r\n\r\n &.new:after {\r\n content: \" new\";\r\n }\r\n\r\n &[data-badge-caption]::after {\r\n content: \" \" attr(data-badge-caption);\r\n }\r\n}\r\n\r\n// Special cases\r\nnav ul a span.badge {\r\n display: inline-block;\r\n float: none;\r\n margin-left: 4px;\r\n line-height: $badge-height;\r\n height: $badge-height;\r\n -webkit-font-smoothing: auto;\r\n}\r\n\r\n// Line height centering\r\n.collection-item span.badge {\r\n margin-top: calc(calc($collection-line-height / 2) - calc($badge-height / 2));\r\n}\r\n\r\n.collapsible span.badge {\r\n margin-left: auto;\r\n}\r\n\r\n.sidenav span.badge {\r\n margin-top: calc(calc($sidenav-line-height / 2) - calc($badge-height / 2));\r\n}\r\n\r\ntable span.badge {\r\n display: inline-block;\r\n float: none;\r\n margin-left: auto;\r\n}\r\n",".chip {\r\n &:focus {\r\n outline: none;\r\n background-color: $chip-selected-color;\r\n color: #fff;\r\n }\r\n\r\n display: inline-block;\r\n height: 32px;\r\n font-size: 13px;\r\n font-weight: 500;\r\n color: rgba(0,0,0,.6);\r\n line-height: 32px;\r\n padding: 0 12px;\r\n border-radius: 16px;\r\n background-color: $chip-bg-color;\r\n margin-bottom: $chip-margin;\r\n margin-right: $chip-margin;\r\n\r\n > img {\r\n float: left;\r\n margin: 0 8px 0 -12px;\r\n height: 32px;\r\n width: 32px;\r\n border-radius: 50%;\r\n }\r\n\r\n .close {\r\n cursor: pointer;\r\n float: right;\r\n font-size: 16px;\r\n line-height: 32px;\r\n padding-left: 8px;\r\n }\r\n}\r\n\r\n.chips {\r\n border: none;\r\n border-bottom: 1px solid $chip-border-color;\r\n box-shadow: none;\r\n margin: $input-margin;\r\n min-height: 45px;\r\n outline: none;\r\n transition: all .3s;\r\n\r\n &.focus {\r\n border-bottom: 1px solid $chip-selected-color;\r\n box-shadow: 0 1px 0 0 $chip-selected-color;\r\n }\r\n\r\n &:hover {\r\n cursor: text;\r\n }\r\n\r\n .input {\r\n background: none;\r\n border: 0;\r\n color: rgba(0,0,0,.6);\r\n display: inline-block;\r\n font-size: $input-font-size;\r\n height: $input-height;\r\n line-height: 32px;\r\n outline: 0;\r\n margin: 0;\r\n padding: 0 !important;\r\n width: 120px !important;\r\n }\r\n\r\n .input:focus {\r\n border: 0 !important;\r\n box-shadow: none !important;\r\n }\r\n\r\n // Autocomplete\r\n .autocomplete-content {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n }\r\n}\r\n\r\n// Form prefix\r\n.prefix ~ .chips {\r\n margin-left: 3rem;\r\n width: 92%;\r\n width: calc(100% - 3rem);\r\n}\r\n.chips:empty ~ label {\r\n font-size: 0.8rem;\r\n transform: translateY(-140%);\r\n}\r\n",".collapsible {\r\n border-top: 1px solid $collapsible-border-color;\r\n border-right: 1px solid $collapsible-border-color;\r\n border-left: 1px solid $collapsible-border-color;\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n @extend .shadow-1;\r\n}\r\n\r\n.collapsible-header {\r\n &:focus {\r\n outline: 0\r\n }\r\n\r\n display: flex;\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: transparent;\r\n line-height: 1.5;\r\n padding: 1rem;\r\n background-color: $collapsible-header-color;\r\n border-bottom: 1px solid $collapsible-border-color;\r\n\r\n i {\r\n width: 2rem;\r\n font-size: 1.6rem;\r\n display: inline-block;\r\n text-align: center;\r\n margin-right: 1rem;\r\n }\r\n}\r\n.keyboard-focused .collapsible-header:focus {\r\n background-color: #eee;\r\n}\r\n\r\n.collapsible-body {\r\n display: none;\r\n border-bottom: 1px solid $collapsible-border-color;\r\n box-sizing: border-box;\r\n padding: 2rem;\r\n}\r\n\r\n// Sidenav collapsible styling\r\n.sidenav,\r\n.sidenav.fixed {\r\n\r\n .collapsible {\r\n border: none;\r\n box-shadow: none;\r\n\r\n li { padding: 0; }\r\n }\r\n\r\n .collapsible-header {\r\n background-color: transparent;\r\n border: none;\r\n line-height: inherit;\r\n height: inherit;\r\n padding: 0 $sidenav-padding;\r\n\r\n &:hover { background-color: rgba(0,0,0,.05); }\r\n i { line-height: inherit; }\r\n }\r\n\r\n .collapsible-body {\r\n border: 0;\r\n background-color: $collapsible-header-color;\r\n\r\n li a {\r\n padding: 0 (7.5px + $sidenav-padding)\r\n 0 (15px + $sidenav-padding);\r\n }\r\n }\r\n\r\n}\r\n\r\n// Popout Collapsible\r\n\r\n.collapsible.popout {\r\n border: none;\r\n box-shadow: none;\r\n > li {\r\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\r\n // transform: scaleX(.92);\r\n margin: 0 24px;\r\n transition: margin .35s cubic-bezier(0.250, 0.460, 0.450, 0.940);\r\n }\r\n > li.active {\r\n box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);\r\n margin: 16px 0;\r\n // transform: scaleX(1);\r\n }\r\n}\r\n","// 23. Collections - variables\r\n// ==========================================================================\r\n\r\n$collection-border-color: #e0e0e0 !default;\r\n$collection-bg-color: #fff !default;\r\n$collection-active-bg-color: $secondary-color !default;\r\n$collection-active-color: lighten($secondary-color, 55%) !default;\r\n$collection-hover-bg-color: #ddd !default;\r\n$collection-link-color: $secondary-color !default;\r\n$collection-line-height: 1.5rem !default;\r\n// 23. Collections\r\n// ==========================================================================\r\n\r\n.collection {\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n border: 1px solid $collection-border-color;\r\n border-radius: 2px;\r\n overflow: hidden;\r\n position: relative;\r\n \r\n .collection-item {\r\n background-color: $collection-bg-color;\r\n line-height: $collection-line-height;\r\n padding: 10px 20px;\r\n margin: 0;\r\n border-bottom: 1px solid $collection-border-color;\r\n \r\n // Avatar Collection\r\n &.avatar {\r\n min-height: 84px;\r\n padding-left: 72px;\r\n position: relative;\r\n \r\n // Don't style circles inside preloader classes.\r\n &:not(.circle-clipper) > .circle,\r\n :not(.circle-clipper) > .circle {\r\n position: absolute;\r\n width: 42px;\r\n height: 42px;\r\n overflow: hidden;\r\n left: 15px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n i.circle {\r\n font-size: 18px;\r\n line-height: 42px;\r\n color: #fff;\r\n background-color: #999;\r\n text-align: center;\r\n }\r\n \r\n \r\n .title {\r\n font-size: 16px;\r\n }\r\n \r\n p {\r\n margin: 0;\r\n }\r\n \r\n .secondary-content {\r\n position: absolute;\r\n top: 16px;\r\n right: 16px;\r\n }\r\n \r\n }\r\n \r\n \r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n \r\n &.active {\r\n background-color: $collection-active-bg-color;\r\n color: $collection-active-color;\r\n \r\n .secondary-content {\r\n color: #fff;\r\n }\r\n }\r\n }\r\n a.collection-item{\r\n display: block;\r\n transition: .25s;\r\n color: $collection-link-color;\r\n &:not(.active) {\r\n &:hover {\r\n background-color: $collection-hover-bg-color;\r\n }\r\n }\r\n }\r\n \r\n &.with-header {\r\n .collection-header {\r\n background-color: $collection-bg-color;\r\n border-bottom: 1px solid $collection-border-color;\r\n padding: 10px 20px;\r\n }\r\n .collection-item {\r\n padding-left: 30px;\r\n }\r\n .collection-item.avatar {\r\n padding-left: 72px;\r\n }\r\n }\r\n .secondary-content {\r\n float: right;\r\n color: $secondary-color;\r\n }\r\n }","// Remove Focus Boxes\r\nselect:focus {\r\n outline: $select-focus;\r\n}\r\n\r\nbutton:focus {\r\n outline: none;\r\n background-color: $button-background-focus;\r\n}\r\n\r\nlabel {\r\n font-size: $label-font-size;\r\n color: $input-border-color;\r\n}\r\n\r\n@import 'input-fields';\r\n@import 'radio-buttons';\r\n@import 'checkboxes';\r\n@import 'switches';\r\n@import 'select';\r\n@import 'file-input';\r\n@import 'range';\r\n","/* Text Inputs + Textarea\r\n ========================================================================== */\r\n\r\n/* Style Placeholders */\r\n@use \"sass:math\";\r\n::placeholder {\r\n color: $placeholder-text-color;\r\n}\r\n\r\n/* Text inputs */\r\n\r\ninput:not([type]),\r\ninput[type=text]:not(.browser-default),\r\ninput[type=password]:not(.browser-default),\r\ninput[type=email]:not(.browser-default),\r\ninput[type=url]:not(.browser-default),\r\ninput[type=time]:not(.browser-default),\r\ninput[type=date]:not(.browser-default),\r\ninput[type=datetime]:not(.browser-default),\r\ninput[type=datetime-local]:not(.browser-default),\r\ninput[type=tel]:not(.browser-default),\r\ninput[type=number]:not(.browser-default),\r\ninput[type=search]:not(.browser-default),\r\ntextarea.textarea {\r\n\r\n // General Styles\r\n background-color: transparent;\r\n border: none;\r\n border-bottom: $input-border;\r\n border-radius: 0;\r\n outline: none;\r\n height: $input-height;\r\n width: 100%;\r\n font-size: $input-font-size;\r\n margin: $input-margin;\r\n padding: $input-padding;\r\n box-shadow: none;\r\n box-sizing: content-box;\r\n transition: box-shadow .3s, border .3s;\r\n\r\n // Disabled input style\r\n &:disabled,\r\n &[readonly=\"readonly\"] {\r\n color: $input-disabled-color;\r\n border-bottom: $input-disabled-border;\r\n }\r\n\r\n // Disabled label style\r\n &:disabled+label,\r\n &[readonly=\"readonly\"]+label {\r\n color: $input-disabled-color;\r\n }\r\n\r\n // Focused input style\r\n &:focus:not([readonly]) {\r\n border-bottom: 1px solid $input-focus-color;\r\n box-shadow: 0 1px 0 0 $input-focus-color;\r\n }\r\n\r\n // Focused label style\r\n &:focus:not([readonly])+label {\r\n color: $input-focus-color;\r\n }\r\n\r\n // Hide helper text on data message\r\n &.valid ~ .helper-text[data-success],\r\n &:focus.valid ~ .helper-text[data-success],\r\n &.invalid ~ .helper-text[data-error],\r\n &:focus.invalid ~ .helper-text[data-error] {\r\n @extend %hidden-text;\r\n }\r\n\r\n // Valid Input Style\r\n &.valid,\r\n &:focus.valid {\r\n @extend %valid-input-style;\r\n }\r\n\r\n // Custom Success Message\r\n &.valid ~ .helper-text:after,\r\n &:focus.valid ~ .helper-text:after {\r\n @extend %custom-success-message;\r\n }\r\n &:focus.valid ~ label {\r\n color: $input-success-color;\r\n }\r\n\r\n // Invalid Input Style\r\n &.invalid,\r\n &:focus.invalid {\r\n @extend %invalid-input-style;\r\n }\r\n\r\n // Custom Error message\r\n &.invalid ~ .helper-text:after,\r\n &:focus.invalid ~ .helper-text:after {\r\n @extend %custom-error-message;\r\n }\r\n &:focus.invalid ~ label {\r\n color: $input-error-color;\r\n }\r\n\r\n // Full width label when using validate for error messages\r\n &.validate + label {\r\n width: 100%;\r\n }\r\n\r\n // Form Message Shared Styles\r\n & + label:after {\r\n @extend %input-after-style;\r\n }\r\n}\r\n\r\n\r\n/* Validation Sass Placeholders */\r\n%valid-input-style {\r\n border-bottom: 1px solid $input-success-color;\r\n box-shadow: 0 1px 0 0 $input-success-color;\r\n}\r\n%invalid-input-style {\r\n border-bottom: $input-invalid-border;\r\n box-shadow: 0 1px 0 0 $input-error-color;\r\n}\r\n%hidden-text {\r\n color: transparent;\r\n user-select: none;\r\n pointer-events: none;\r\n}\r\n%custom-success-message {\r\n content: attr(data-success);\r\n color: $input-success-color;\r\n}\r\n%custom-error-message {\r\n content: attr(data-error);\r\n color: $input-error-color;\r\n}\r\n%input-after-style {\r\n display: block;\r\n content: \"\";\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n opacity: 0;\r\n transition: .2s opacity ease-out, .2s color ease-out;\r\n}\r\n\r\n\r\n// Styling for input field wrapper\r\n.input-field {\r\n // Inline styles\r\n &.inline {\r\n display: inline-block;\r\n vertical-align: middle;\r\n margin-left: 5px;\r\n\r\n input,\r\n .select-dropdown {\r\n margin-bottom: 1rem;\r\n }\r\n }\r\n\r\n // Gutter spacing\r\n &.col {\r\n label {\r\n left: math.div($gutter-width, 2);\r\n }\r\n\r\n .prefix ~ label,\r\n .prefix ~ .validate ~ label {\r\n width: calc(100% - 3rem - #{$gutter-width});\r\n }\r\n }\r\n\r\n position: relative;\r\n margin-top: 1rem;\r\n margin-bottom: 1rem;\r\n\r\n & > label {\r\n color: $input-border-color;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n font-size: 1rem;\r\n cursor: text;\r\n transition: transform .2s ease-out, color .2s ease-out;\r\n transform-origin: 0% 100%;\r\n text-align: initial;\r\n transform: translateY(12px);\r\n\r\n &:not(.label-icon).active {\r\n transform: translateY(-14px) scale(.8);\r\n transform-origin: 0 0;\r\n }\r\n }\r\n\r\n // Autofill + date + time inputs\r\n & > input[type]:-webkit-autofill:not(.browser-default):not([type=\"search\"]) + label,\r\n & > input[type=date]:not(.browser-default) + label,\r\n & > input[type=time]:not(.browser-default) + label {\r\n transform: translateY(-14px) scale(.8);\r\n transform-origin: 0 0;\r\n }\r\n\r\n .helper-text {\r\n &::after {\r\n opacity: 1;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n }\r\n\r\n position: relative;\r\n min-height: 18px;\r\n display: block;\r\n font-size: 12px;\r\n color: rgba(0,0,0,.54);\r\n }\r\n\r\n // Prefix Icons\r\n .prefix {\r\n position: absolute;\r\n width: $input-height;\r\n font-size: $input-icon-size;\r\n transition: color .2s;\r\n // top: ($input-height - $input-icon-size) / 2;\r\n\r\n &.active { color: $input-focus-color; }\r\n }\r\n\r\n .prefix ~ input,\r\n .prefix ~ textarea,\r\n .prefix ~ label,\r\n .prefix ~ .validate ~ label,\r\n .prefix ~ .helper-text,\r\n .prefix ~ .autocomplete-content {\r\n margin-left: 3rem;\r\n width: 92%;\r\n width: calc(100% - 3rem);\r\n }\r\n\r\n .prefix ~ label { margin-left: 3rem; }\r\n\r\n @media #{$medium-and-down} {\r\n .prefix ~ input {\r\n width: 86%;\r\n width: calc(100% - 3rem);\r\n }\r\n }\r\n\r\n @media #{$small-and-down} {\r\n .prefix ~ input {\r\n width: 80%;\r\n width: calc(100% - 3rem);\r\n }\r\n }\r\n}\r\n\r\n\r\n/* Search Field */\r\n\r\n.input-field input[type=search] {\r\n display: block;\r\n line-height: inherit;\r\n transition: .3s background-color;\r\n\r\n .nav-wrapper & {\r\n height: inherit;\r\n padding-left: 4rem;\r\n width: calc(100% - 4rem);\r\n border: 0;\r\n box-shadow: none;\r\n }\r\n\r\n &:focus:not(.browser-default) {\r\n background-color: $input-background;\r\n border: 0;\r\n box-shadow: none;\r\n color: #444;\r\n\r\n & + label i,\r\n & ~ .mdi-navigation-close,\r\n & ~ .material-icons {\r\n color: #444;\r\n }\r\n }\r\n\r\n & + .label-icon {\r\n transform: none;\r\n left: 1rem;\r\n }\r\n\r\n & ~ .mdi-navigation-close,\r\n & ~ .material-icons {\r\n position: absolute;\r\n top: 0;\r\n right: 1rem;\r\n color: transparent;\r\n cursor: pointer;\r\n font-size: $input-icon-size;\r\n transition: .3s color;\r\n }\r\n}\r\n\r\n\r\n/* Textarea */\r\n\r\n// Default textarea\r\ntextarea {\r\n width: 100%;\r\n height: $input-height;\r\n background-color: transparent;\r\n\r\n &.textarea {\r\n line-height: normal;\r\n overflow-y: hidden; /* prevents scroll bar flash */\r\n padding: .8rem 0 .8rem 0; /* prevents text jump on Enter keypress */\r\n resize: none;\r\n min-height: $input-height;\r\n box-sizing: border-box;\r\n }\r\n}\r\n\r\n// For textarea autoresize\r\n\r\n.hiddendiv {\r\n visibility: hidden;\r\n white-space: pre-wrap;\r\n word-wrap: break-word;\r\n overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */\r\n padding-top: 1.2rem; /* prevents text jump on Enter keypress */\r\n\r\n // Reduces repaints\r\n position: absolute;\r\n top: 0;\r\n z-index: -1;\r\n}\r\n\r\n\r\n/* Autocomplete */\r\n.autocomplete-content {\r\n li {\r\n .highlight { color: #444; }\r\n\r\n img {\r\n // height: $dropdown-item-height - 10;\r\n // width: $dropdown-item-height - 10;\r\n margin: 5px 15px;\r\n }\r\n }\r\n}\r\n\r\n/* Character Counter */\r\n.character-counter {\r\n min-height: 18px;\r\n}\r\n","/* Radio Buttons\r\n ========================================================================== */\r\n\r\n// Remove default Radio Buttons\r\n[type=\"radio\"]:not(:checked),\r\n[type=\"radio\"]:checked {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n}\r\n\r\n[type=\"radio\"]:not(:checked) + span,\r\n[type=\"radio\"]:checked + span {\r\n position: relative;\r\n padding-left: 35px;\r\n cursor: pointer;\r\n display: inline-block;\r\n height: 25px;\r\n line-height: 25px;\r\n font-size: 1rem;\r\n transition: .28s ease;\r\n user-select: none;\r\n}\r\n\r\n[type=\"radio\"] + span:before,\r\n[type=\"radio\"] + span:after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n margin: 4px;\r\n width: 16px;\r\n height: 16px;\r\n z-index: 0;\r\n transition: .28s ease;\r\n}\r\n\r\n/* Unchecked styles */\r\n[type=\"radio\"]:not(:checked) + span:before,\r\n[type=\"radio\"]:not(:checked) + span:after,\r\n[type=\"radio\"]:checked + span:before,\r\n[type=\"radio\"]:checked + span:after,\r\n[type=\"radio\"].with-gap:checked + span:before,\r\n[type=\"radio\"].with-gap:checked + span:after {\r\n border-radius: 50%;\r\n}\r\n\r\n[type=\"radio\"]:not(:checked) + span:before,\r\n[type=\"radio\"]:not(:checked) + span:after {\r\n border: 2px solid $radio-empty-color;\r\n}\r\n\r\n[type=\"radio\"]:not(:checked) + span:after {\r\n transform: scale(0);\r\n}\r\n\r\n/* Checked styles */\r\n[type=\"radio\"]:checked + span:before {\r\n border: 2px solid transparent;\r\n}\r\n\r\n[type=\"radio\"]:checked + span:after,\r\n[type=\"radio\"].with-gap:checked + span:before,\r\n[type=\"radio\"].with-gap:checked + span:after {\r\n border: $radio-border;\r\n}\r\n\r\n[type=\"radio\"]:checked + span:after,\r\n[type=\"radio\"].with-gap:checked + span:after {\r\n background-color: $radio-fill-color;\r\n}\r\n\r\n[type=\"radio\"]:checked + span:after {\r\n transform: scale(1.02);\r\n}\r\n\r\n/* Radio With gap */\r\n[type=\"radio\"].with-gap:checked + span:after {\r\n transform: scale(.5);\r\n}\r\n\r\n/* Focused styles */\r\n[type=\"radio\"].tabbed:focus + span:before {\r\n box-shadow: 0 0 0 10px rgba(0,0,0,.1);\r\n}\r\n\r\n/* Disabled Radio With gap */\r\n[type=\"radio\"].with-gap:disabled:checked + span:before {\r\n border: 2px solid $input-disabled-color;\r\n}\r\n\r\n[type=\"radio\"].with-gap:disabled:checked + span:after {\r\n border: none;\r\n background-color: $input-disabled-color;\r\n}\r\n\r\n/* Disabled style */\r\n[type=\"radio\"]:disabled:not(:checked) + span:before,\r\n[type=\"radio\"]:disabled:checked + span:before {\r\n background-color: transparent;\r\n border-color: $input-disabled-color;\r\n}\r\n\r\n[type=\"radio\"]:disabled + span {\r\n color: $input-disabled-color;\r\n}\r\n\r\n[type=\"radio\"]:disabled:not(:checked) + span:before {\r\n border-color: $input-disabled-color;\r\n}\r\n\r\n[type=\"radio\"]:disabled:checked + span:after {\r\n background-color: $input-disabled-color;\r\n border-color: $input-disabled-solid-color;\r\n}\r\n","/* Checkboxes\r\n ========================================================================== */\r\n\r\n/* Remove default checkbox */\r\n[type=\"checkbox\"]:not(:checked),\r\n[type=\"checkbox\"]:checked {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n}\r\n\r\n// Checkbox Styles\r\n[type=\"checkbox\"] {\r\n // Text Label Style\r\n + span:not(.lever) {\r\n position: relative;\r\n padding-left: 35px;\r\n cursor: pointer;\r\n display: inline-block;\r\n height: 25px;\r\n line-height: 25px;\r\n font-size: 1rem;\r\n user-select: none;\r\n }\r\n\r\n /* checkbox aspect */\r\n + span:not(.lever):before,\r\n &:not(.filled-in) + span:not(.lever):after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 18px;\r\n height: 18px;\r\n z-index: 0;\r\n border: 2px solid $radio-empty-color;\r\n border-radius: 1px;\r\n margin-top: 3px;\r\n transition: .2s;\r\n }\r\n\r\n &:not(.filled-in) + span:not(.lever):after {\r\n border: 0;\r\n transform: scale(0);\r\n }\r\n\r\n &:not(:checked):disabled + span:not(.lever):before {\r\n border: none;\r\n background-color: $input-disabled-color;\r\n }\r\n\r\n // Focused styles\r\n &.tabbed:focus + span:not(.lever):after {\r\n transform: scale(1);\r\n border: 0;\r\n border-radius: 50%;\r\n box-shadow: 0 0 0 10px rgba(0,0,0,.1);\r\n background-color: rgba(0,0,0,.1);\r\n }\r\n}\r\n\r\n[type=\"checkbox\"]:checked {\r\n + span:not(.lever):before {\r\n top: -4px;\r\n left: -5px;\r\n width: 12px;\r\n height: 22px;\r\n border-top: 2px solid transparent;\r\n border-left: 2px solid transparent;\r\n border-right: $radio-border;\r\n border-bottom: $radio-border;\r\n transform: rotate(40deg);\r\n backface-visibility: hidden;\r\n transform-origin: 100% 100%;\r\n }\r\n\r\n &:disabled + span:before {\r\n border-right: 2px solid $input-disabled-color;\r\n border-bottom: 2px solid $input-disabled-color;\r\n }\r\n}\r\n\r\n/* Indeterminate checkbox */\r\n[type=\"checkbox\"]:indeterminate {\r\n + span:not(.lever):before {\r\n top: -11px;\r\n left: -12px;\r\n width: 10px;\r\n height: 22px;\r\n border-top: none;\r\n border-left: none;\r\n border-right: $radio-border;\r\n border-bottom: none;\r\n transform: rotate(90deg);\r\n backface-visibility: hidden;\r\n transform-origin: 100% 100%;\r\n }\r\n\r\n // Disabled indeterminate\r\n &:disabled + span:not(.lever):before {\r\n border-right: 2px solid $input-disabled-color;\r\n background-color: transparent;\r\n }\r\n}\r\n\r\n// Filled in Style\r\n[type=\"checkbox\"].filled-in {\r\n // General\r\n + span:not(.lever):after {\r\n border-radius: 2px;\r\n }\r\n\r\n + span:not(.lever):before,\r\n + span:not(.lever):after {\r\n content: '';\r\n left: 0;\r\n position: absolute;\r\n /* .1s delay is for check animation */\r\n transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;\r\n z-index: 1;\r\n }\r\n\r\n // Unchecked style\r\n &:not(:checked) + span:not(.lever):before {\r\n width: 0;\r\n height: 0;\r\n border: 3px solid transparent;\r\n left: 6px;\r\n top: 10px;\r\n transform: rotateZ(37deg);\r\n transform-origin: 100% 100%;\r\n }\r\n\r\n &:not(:checked) + span:not(.lever):after {\r\n height: 20px;\r\n width: 20px;\r\n background-color: transparent;\r\n border: 2px solid $radio-empty-color;\r\n top: 0px;\r\n z-index: 0;\r\n }\r\n\r\n // Checked style\r\n &:checked {\r\n + span:not(.lever):before {\r\n top: 0;\r\n left: 1px;\r\n width: 8px;\r\n height: 13px;\r\n border-top: 2px solid transparent;\r\n border-left: 2px solid transparent;\r\n border-right: 2px solid $input-background;\r\n border-bottom: 2px solid $input-background;\r\n transform: rotateZ(37deg);\r\n transform-origin: 100% 100%;\r\n }\r\n\r\n + span:not(.lever):after {\r\n top: 0;\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid $secondary-color;\r\n background-color: $secondary-color;\r\n z-index: 0;\r\n }\r\n }\r\n\r\n // Focused styles\r\n &.tabbed:focus + span:not(.lever):after {\r\n border-radius: 2px;\r\n border-color: $radio-empty-color;\r\n background-color: rgba(0,0,0,.1);\r\n }\r\n\r\n &.tabbed:checked:focus + span:not(.lever):after {\r\n border-radius: 2px;\r\n background-color: $secondary-color;\r\n border-color: $secondary-color;\r\n }\r\n\r\n // Disabled style\r\n &:disabled:not(:checked) + span:not(.lever):before {\r\n background-color: transparent;\r\n border: 2px solid transparent;\r\n }\r\n\r\n &:disabled:not(:checked) + span:not(.lever):after {\r\n border-color: transparent;\r\n background-color: $input-disabled-solid-color;\r\n }\r\n\r\n &:disabled:checked + span:not(.lever):before {\r\n background-color: transparent;\r\n }\r\n\r\n &:disabled:checked + span:not(.lever):after {\r\n background-color: $input-disabled-solid-color;\r\n border-color: $input-disabled-solid-color;\r\n }\r\n}\r\n","/* Switch\r\n ========================================================================== */\r\n\r\n.switch,\r\n.switch * {\r\n -webkit-tap-highlight-color: transparent;\r\n user-select: none;\r\n}\r\n\r\n.switch label {\r\n cursor: pointer;\r\n}\r\n\r\n.switch label input[type=checkbox] {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n\r\n &:checked + .lever {\r\n background-color: $switch-checked-lever-bg;\r\n\r\n &:before, &:after {\r\n left: 18px;\r\n }\r\n\r\n &:after {\r\n background-color: $switch-bg-color;\r\n }\r\n }\r\n}\r\n\r\n.switch label .lever {\r\n content: \"\";\r\n display: inline-block;\r\n position: relative;\r\n width: 36px;\r\n height: 14px;\r\n background-color: $switch-unchecked-lever-bg;\r\n border-radius: $switch-radius;\r\n //margin-right: 10px;\r\n transition: background 0.3s ease;\r\n vertical-align: middle;\r\n margin: 0 16px;\r\n\r\n &:before, &:after {\r\n content: \"\";\r\n position: absolute;\r\n display: inline-block;\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n left: 0;\r\n top: -3px;\r\n transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease;\r\n }\r\n\r\n &:before {\r\n background-color: transparentize($switch-bg-color, .85);\r\n }\r\n\r\n &:after {\r\n background-color: $switch-unchecked-bg;\r\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\r\n }\r\n}\r\n\r\n// Switch active style\r\ninput[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,\r\ninput[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before {\r\n transform: scale(2.4);\r\n background-color: transparentize($switch-bg-color, .85);\r\n}\r\n\r\ninput[type=checkbox]:not(:disabled) ~ .lever:active:before,\r\ninput[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before {\r\n transform: scale(2.4);\r\n background-color: rgba(0,0,0,.08);\r\n}\r\n\r\n// Disabled Styles\r\n.switch input[type=checkbox][disabled] + .lever {\r\n cursor: default;\r\n background-color: rgba(0,0,0,.12);\r\n}\r\n\r\n.switch label input[type=checkbox][disabled] + .lever:after,\r\n.switch label input[type=checkbox][disabled]:checked + .lever:after {\r\n background-color: $input-disabled-solid-color;\r\n}\r\n","/* Select Field\r\n ========================================================================== */\r\n\r\nselect { display: none; }\r\nselect.browser-default { display: block; }\r\n\r\nselect {\r\n background-color: $select-background;\r\n width: 100%;\r\n padding: $select-padding;\r\n border: $select-border;\r\n border-radius: $select-radius;\r\n height: $input-height;\r\n}\r\n\r\n.select-label {\r\n position: absolute;\r\n}\r\n\r\n.select-wrapper {\r\n &.valid .helper-text[data-success],\r\n &.invalid ~ .helper-text[data-error] {\r\n @extend %hidden-text;\r\n }\r\n\r\n &.valid {\r\n & > input.select-dropdown {\r\n @extend %valid-input-style;\r\n }\r\n\r\n & ~ .helper-text:after {\r\n @extend %custom-success-message;\r\n }\r\n }\r\n\r\n &.invalid {\r\n & > input.select-dropdown,\r\n & > input.select-dropdown:focus {\r\n @extend %invalid-input-style;\r\n }\r\n\r\n & ~ .helper-text:after {\r\n @extend %custom-error-message;\r\n }\r\n }\r\n\r\n &.valid + label,\r\n &.invalid + label {\r\n width: 100%;\r\n pointer-events: none;\r\n }\r\n\r\n & + label:after {\r\n @extend %input-after-style;\r\n }\r\n\r\n position: relative;\r\n\r\n input.select-dropdown {\r\n &:focus {\r\n border-bottom: 1px solid $input-focus-color;\r\n }\r\n position: relative;\r\n cursor: pointer;\r\n background-color: transparent;\r\n border: none;\r\n border-bottom: $input-border;\r\n outline: none;\r\n height: $input-height;\r\n line-height: $input-height;\r\n width: 100%;\r\n font-size: $input-font-size;\r\n margin: $input-margin;\r\n padding: 0;\r\n display: block;\r\n user-select:none;\r\n z-index: 1;\r\n }\r\n\r\n .caret {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n margin: auto 0;\r\n z-index: 0;\r\n fill: rgba(0,0,0,.87);\r\n }\r\n\r\n & + label {\r\n position: absolute;\r\n top: -26px;\r\n font-size: $label-font-size;\r\n }\r\n}\r\n\r\n// Disabled styles\r\nselect:disabled {\r\n color: $input-disabled-color;\r\n}\r\n\r\n.select-wrapper.disabled {\r\n + label {\r\n color: $input-disabled-color;\r\n }\r\n .caret {\r\n fill: $input-disabled-color;\r\n }\r\n}\r\n\r\n.select-wrapper input.select-dropdown:disabled {\r\n color: $input-disabled-color;\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n.select-wrapper i {\r\n color: $select-disabled-color;\r\n}\r\n\r\n.select-dropdown li.disabled,\r\n.select-dropdown li.disabled > span,\r\n.select-dropdown li.optgroup {\r\n color: $select-disabled-color;\r\n background-color: transparent;\r\n}\r\n\r\nbody.keyboard-focused {\r\n .select-dropdown.dropdown-content li:focus {\r\n background-color: $select-option-focus;\r\n }\r\n}\r\n\r\n.select-dropdown.dropdown-content {\r\n li {\r\n &:hover {\r\n background-color: $select-option-hover;\r\n }\r\n\r\n &.selected {\r\n background-color: $select-option-selected;\r\n }\r\n }\r\n}\r\n\r\n// Prefix Icons\r\n.prefix ~ .select-wrapper {\r\n margin-left: 3rem;\r\n width: 92%;\r\n width: calc(100% - 3rem);\r\n}\r\n\r\n.prefix ~ label { margin-left: 3rem; }\r\n\r\n// Icons\r\n.select-dropdown li {\r\n img {\r\n // height: $dropdown-item-height - 10;\r\n // width: $dropdown-item-height - 10;\r\n margin: 5px 15px;\r\n float: right;\r\n }\r\n}\r\n\r\n// Optgroup styles\r\n.select-dropdown li.optgroup {\r\n // border-top: 1px solid $dropdown-hover-bg-color;\r\n\r\n &.selected > span {\r\n color: rgba(0, 0, 0, .7);\r\n }\r\n\r\n & > span {\r\n color: rgba(0, 0, 0, .4);\r\n }\r\n\r\n & ~ li.optgroup-option {\r\n padding-left: 1rem;\r\n }\r\n}\r\n","/* File Input\r\n ========================================================================== */\r\n\r\n.file-field {\r\n position: relative;\r\n\r\n .file-path-wrapper {\r\n overflow: hidden;\r\n padding-left: 10px;\r\n }\r\n\r\n input.file-path { width: 100%; }\r\n\r\n .btn {\r\n float: left;\r\n height: $input-height;\r\n line-height: $input-height;\r\n }\r\n\r\n span {\r\n cursor: pointer;\r\n }\r\n\r\n input[type=file] {\r\n\r\n // Needed to override webkit button\r\n &::-webkit-file-upload-button {\r\n display: none;\r\n }\r\n\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n margin: 0;\r\n padding: 0;\r\n font-size: 20px;\r\n cursor: pointer;\r\n opacity: 0;\r\n filter: alpha(opacity=0);\r\n }\r\n}\r\n","/* Range\r\n ========================================================================== */\r\n\r\n.range-field {\r\n position: relative;\r\n}\r\n\r\ninput[type=range],\r\ninput[type=range] + .thumb {\r\n // @extend .no-select;\r\n cursor: pointer;\r\n}\r\n\r\ninput[type=range] {\r\n position: relative;\r\n background-color: transparent;\r\n border: none;\r\n outline: none;\r\n width: 100%;\r\n margin: 15px 0;\r\n padding: 0;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n}\r\n\r\ninput[type=range] + .thumb {\r\n position: absolute;\r\n top: 10px;\r\n left: 0;\r\n border: none;\r\n height: 0;\r\n width: 0;\r\n border-radius: 50%;\r\n background-color: $radio-fill-color;\r\n margin-left: 7px;\r\n\r\n transform-origin: 50% 50%;\r\n transform: rotate(-45deg);\r\n\r\n .value {\r\n display: block;\r\n width: 30px;\r\n text-align: center;\r\n color: $radio-fill-color;\r\n font-size: 0;\r\n transform: rotate(45deg);\r\n }\r\n\r\n &.active {\r\n border-radius: 50% 50% 50% 0;\r\n\r\n .value {\r\n color: $input-background;\r\n margin-left: -1px;\r\n margin-top: 8px;\r\n font-size: 10px;\r\n }\r\n }\r\n}\r\n\r\n// Shared\r\n@mixin range-track {\r\n height: $track-height;\r\n background: #c2c0c2;\r\n border: none;\r\n}\r\n\r\n@mixin range-thumb {\r\n border: none;\r\n height: $range-height;\r\n width: $range-width;\r\n border-radius: 50%;\r\n background: $radio-fill-color;\r\n transition: box-shadow .3s;\r\n}\r\n\r\n// WebKit\r\ninput[type=range] {\r\n -webkit-appearance: none;\r\n}\r\n\r\ninput[type=range]::-webkit-slider-runnable-track {\r\n @include range-track;\r\n}\r\n\r\ninput[type=range]::-webkit-slider-thumb {\r\n @include range-thumb;\r\n -webkit-appearance: none;\r\n background-color: $radio-fill-color;\r\n transform-origin: 50% 50%;\r\n margin: -5px 0 0 0;\r\n\r\n}\r\n\r\n.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb {\r\n box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);\r\n}\r\n\r\n// FireFox\r\ninput[type=range] {\r\n /* fix for FF unable to apply focus style bug */\r\n border: 1px solid white;\r\n\r\n /*required for proper track sizing in FF*/\r\n}\r\n\r\ninput[type=range]::-moz-range-track {\r\n @include range-track;\r\n}\r\n\r\ninput[type=range]::-moz-focus-inner {\r\n border: 0;\r\n}\r\n\r\ninput[type=range]::-moz-range-thumb {\r\n @include range-thumb;\r\n margin-top: -5px;\r\n}\r\n\r\n// hide the outline behind the border\r\ninput[type=range]:-moz-focusring {\r\n outline: 1px solid #fff;\r\n outline-offset: -1px;\r\n}\r\n\r\n.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb {\r\n box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);\r\n}\r\n\r\n// IE 10+\r\ninput[type=range]::-ms-track {\r\n height: $track-height;\r\n\r\n // remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead\r\n background: transparent;\r\n\r\n // leave room for the larger thumb to overflow with a transparent border */\r\n border-color: transparent;\r\n border-width: 6px 0;\r\n\r\n /*remove default tick marks*/\r\n color: transparent;\r\n}\r\n\r\ninput[type=range]::-ms-fill-lower {\r\n background: #777;\r\n}\r\n\r\ninput[type=range]::-ms-fill-upper {\r\n background: #ddd;\r\n}\r\n\r\ninput[type=range]::-ms-thumb {\r\n @include range-thumb;\r\n}\r\n\r\n.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb {\r\n box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);\r\n}\r\n",".parallax {\r\n\r\n /* Set a specific height */\r\n min-height: 500px;\r\n\r\n /* Create the parallax scrolling effect */\r\n background-attachment: fixed;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n background-size: cover;\r\n}","$cube-height:200px;\r\n* { box-sizing: border-box; }\r\n\r\nbody { font-family: sans-serif; }\r\n\r\n.scene {\r\n width: $cube-height;\r\n height: $cube-height;\r\n border: 1px solid #CCC;\r\n margin: 80px;\r\n perspective: 400px;\r\n}\r\n\r\n.cube {\r\n width: $cube-height;\r\n height: $cube-height;\r\n position: relative;\r\n transform-style: preserve-3d;\r\n transform: translateZ(-400px);\r\n transition: transform 1s;\r\n}\r\n\r\n.cube.show-front { transform: translateZ(-10px) rotateY( 0deg); }\r\n.cube.show-right { transform: translateZ(-10px) rotateY( -90deg); }\r\n.cube.show-back { transform: translateZ(-10px) rotateY(-180deg); }\r\n.cube.show-left { transform: translateZ(-10px) rotateY( 90deg); }\r\n.cube.show-top { transform: translateZ(-10px) rotateX( -90deg); }\r\n.cube.show-bottom { transform: translateZ(-10px) rotateX( 90deg); }\r\n\r\n.cube__face {\r\n position: absolute;\r\n width: $cube-height;\r\n height: $cube-height;\r\n border: 2px solid black;\r\n line-height: $cube-height;\r\n font-size: 40px;\r\n font-weight: bold;\r\n color: white;\r\n text-align: center;\r\n}\r\n\r\n.cube__face--front { background: hsla( 0, 100%, 50%, 0.7); }\r\n.cube__face--right { background: hsla( 60, 100%, 50%, 0.7); }\r\n.cube__face--back { background: hsla(120, 100%, 50%, 0.7); }\r\n.cube__face--left { background: hsla(180, 100%, 50%, 0.7); }\r\n.cube__face--top { background: hsla(240, 100%, 50%, 0.7); }\r\n.cube__face--bottom { background: hsla(300, 100%, 50%, 0.7); }\r\n\r\n.cube__face--front { transform: rotateY( 0deg) translateZ(100px); }\r\n.cube__face--right { transform: rotateY( 90deg) translateZ(100px); }\r\n.cube__face--back { transform: rotateY(180deg) translateZ(100px); }\r\n.cube__face--left { transform: rotateY(-90deg) translateZ(100px); }\r\n.cube__face--top { transform: rotateX( 90deg) translateZ(100px); }\r\n.cube__face--bottom { transform: rotateX(-90deg) translateZ(100px); }\r\n\r\nlabel { margin-right: 10px; }","@use \"sass:math\";\r\n.container {\r\n margin: 0 auto;\r\n max-width: 1280px;\r\n width: 90%;\r\n}\r\n@media #{$medium-and-up} {\r\n .container {\r\n width: 85%;\r\n }\r\n}\r\n@media #{$large-and-up} {\r\n .container {\r\n width: 70%;\r\n }\r\n}\r\n.col .row {\r\n margin-left: math.div(-1 * $gutter-width , 2);\r\n margin-right: math.div(-1 * $gutter-width , 2);\r\n}\r\n\r\n.section {\r\n padding-top: 1rem;\r\n padding-bottom: 1rem;\r\n\r\n &.no-pad {\r\n padding: 0;\r\n }\r\n &.no-pad-bot {\r\n padding-bottom: 0;\r\n }\r\n &.no-pad-top {\r\n padding-top: 0;\r\n }\r\n}\r\n\r\n\r\n// Mixins to eliminate code repitition\r\n@mixin reset-offset {\r\n margin-left: auto;\r\n left: auto;\r\n right: auto;\r\n}\r\n@mixin grid-classes($size, $i, $perc) {\r\n &.offset-#{$size}#{$i} {\r\n margin-left: $perc;\r\n }\r\n &.pull-#{$size}#{$i} {\r\n right: $perc;\r\n }\r\n &.push-#{$size}#{$i} {\r\n left: $perc;\r\n }\r\n}\r\n\r\n\r\n.row {\r\n margin-left: auto;\r\n margin-right: auto;\r\n margin-bottom: 20px;\r\n\r\n // Clear floating children\r\n &:after {\r\n content: \"\";\r\n display: table;\r\n clear: both;\r\n }\r\n\r\n .col {\r\n float: left;\r\n box-sizing: border-box;\r\n padding: 0 math.div($gutter-width , 2);\r\n min-height: 1px;\r\n\r\n &[class*=\"push-\"],\r\n &[class*=\"pull-\"] {\r\n position: relative;\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n &.s#{$i} {\r\n width: $perc;\r\n @include reset-offset;\r\n }\r\n $i: $i + 1;\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n @include grid-classes(\"s\", $i, $perc);\r\n $i: $i + 1;\r\n }\r\n\r\n @media #{$medium-and-up} {\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n &.m#{$i} {\r\n width: $perc;\r\n @include reset-offset;\r\n }\r\n $i: $i + 1\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n @include grid-classes(\"m\", $i, $perc);\r\n $i: $i + 1;\r\n }\r\n }\r\n\r\n @media #{$large-and-up} {\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n &.l#{$i} {\r\n width: $perc;\r\n @include reset-offset;\r\n }\r\n $i: $i + 1;\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n @include grid-classes(\"l\", $i, $perc);\r\n $i: $i + 1;\r\n }\r\n }\r\n\r\n @media #{$extra-large-and-up} {\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n &.xl#{$i} {\r\n width: $perc;\r\n @include reset-offset;\r\n }\r\n $i: $i + 1;\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n @include grid-classes(\"xl\", $i, $perc);\r\n $i: $i + 1;\r\n }\r\n }\r\n }\r\n}\r\n","@use \"sass:math\";\r\nsvg{\r\n //fill:red;\r\n}\r\n.sidenav {\r\n position: fixed;\r\n width: $sidenav-width;\r\n left: 0;\r\n top: 0;\r\n margin: 0;\r\n //transform: translateX(-100%);\r\n height: 100%;\r\n height: calc(100% + 60px);\r\n height: -moz-calc(100%); //Temporary Firefox Fix\r\n padding-bottom: 60px;\r\n background-color: $sidenav-bg-color;\r\n z-index: 999;\r\n overflow-y: auto;\r\n will-change: transform;\r\n backface-visibility: hidden;\r\n transform: translateX(-105%);\r\n transition: transform 1s;\r\n\r\n //@extend .shadow-1;\r\n\r\n // Right Align\r\n &.right-aligned {\r\n right: 0;\r\n //transform: translateX(105%);\r\n left: auto;\r\n transform: translateX(100%);\r\n }\r\n\r\n .collapsible {\r\n margin: 0;\r\n }\r\n\r\n\r\n li {\r\n float: none;\r\n //line-height: $sidenav-line-height;\r\n // margin: 15px 0;\r\n // height: 45px;\r\n .iconSideLink {\r\n display: flex;\r\n align-items: center;\r\n \r\n svg {\r\n //stroke:rgba(0, 0, 0, 0.2);\r\n // fill: white;\r\n stroke:rgba(0, 0, 0, 0.2);\r\n width: 30px;\r\n }\r\n \r\n }\r\n &.active {\r\n background-color: rgba(0, 0, 0, 0.05);\r\n svg {\r\n stroke: white!important;\r\n //fill: white!important;\r\n width: 30px;\r\n }\r\n }\r\n\r\n &.last {\r\n position: sticky;\r\n top: calc(100% - #{$sidenav-item-height} - 35px);\r\n }\r\n }\r\n\r\n li > a {\r\n color: $sidenav-font-color;\r\n display: flex;\r\n font-size: $sidenav-font-size;\r\n font-weight: 700;\r\n height: $sidenav-item-height;\r\n line-height: $sidenav-line-height;\r\n padding: 0 ($sidenav-padding * 2);\r\n\r\n &:hover {\r\n background-color: rgba(0, 0, 0, 0.05);\r\n }\r\n\r\n &.btn,\r\n &.btn-large,\r\n &.btn-flat,\r\n &.btn-floating {\r\n margin: 10px 15px;\r\n }\r\n\r\n &.btn,\r\n &.btn-large,\r\n &.btn-floating {\r\n color: $button-raised-color;\r\n }\r\n\r\n &.btn-flat {\r\n color: $button-flat-color;\r\n }\r\n\r\n &.btn:hover,\r\n &.btn-large:hover {\r\n background-color: lighten($button-raised-background, 5%);\r\n }\r\n\r\n &.btn-floating:hover {\r\n background-color: $button-raised-background;\r\n }\r\n\r\n & > i,\r\n & > [class^=\"mdi-\"],\r\n li > a > [class*=\"mdi-\"],\r\n & > i.s-icon {\r\n float: left;\r\n height: $sidenav-item-height;\r\n line-height: $sidenav-line-height;\r\n margin: 0 ($sidenav-padding * 2) 0 0;\r\n width: math.div($sidenav-item-height, 2);\r\n color: rgba(0, 0, 0, 0.54);\r\n }\r\n }\r\n\r\n .divider {\r\n margin: math.div($sidenav-padding, 2) 0 0 0;\r\n }\r\n\r\n .subheader {\r\n &:hover {\r\n background-color: transparent;\r\n }\r\n\r\n cursor: initial;\r\n pointer-events: none;\r\n color: rgba(0, 0, 0, 0.54);\r\n font-size: $sidenav-font-size;\r\n font-weight: 500;\r\n line-height: $sidenav-line-height;\r\n }\r\n\r\n .user-view {\r\n position: relative;\r\n padding: ($sidenav-padding * 2) ($sidenav-padding * 2) 0;\r\n margin-bottom: math.div($sidenav-padding, 2);\r\n\r\n & > a {\r\n &:hover {\r\n background-color: transparent;\r\n }\r\n\r\n height: auto;\r\n padding: 0;\r\n }\r\n\r\n .background {\r\n overflow: hidden;\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: -1;\r\n }\r\n\r\n .circle,\r\n .name,\r\n .email {\r\n display: block;\r\n }\r\n\r\n .circle {\r\n height: 64px;\r\n width: 64px;\r\n }\r\n\r\n .name,\r\n .email {\r\n font-size: $sidenav-font-size;\r\n line-height: math.div($sidenav-line-height, 2);\r\n }\r\n\r\n .name {\r\n margin-top: 16px;\r\n font-weight: 500;\r\n }\r\n\r\n .email {\r\n padding-bottom: 16px;\r\n font-weight: 400;\r\n }\r\n }\r\n}\r\n\r\n// Touch interaction\r\n.drag-target {\r\n // Right Align\r\n &.right-aligned {\r\n right: 0;\r\n }\r\n\r\n height: 100%;\r\n width: 10px;\r\n position: fixed;\r\n top: 0;\r\n z-index: 998;\r\n}\r\n\r\n// Fixed Sidenav shown\r\n.sidenav.sidenav-fixed {\r\n // Right Align\r\n &.right-aligned {\r\n right: 0;\r\n left: auto;\r\n }\r\n\r\n left: 0;\r\n transform: translateX(0);\r\n position: fixed;\r\n}\r\n\r\n// Fixed Sidenav hide on smaller\r\n@media #{$medium-and-down} {\r\n .sidenav {\r\n &.sidenav-fixed {\r\n transform: translateX(-105%);\r\n\r\n &.right-aligned {\r\n transform: translateX(105%);\r\n }\r\n }\r\n\r\n > a {\r\n padding: 0 $sidenav-padding;\r\n }\r\n\r\n .user-view {\r\n padding: $sidenav-padding $sidenav-padding 0;\r\n }\r\n }\r\n}\r\n\r\n.sidenav .collapsible-body > ul:not(.collapsible) > li.active,\r\n.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active {\r\n background-color: $primary-color;\r\n\r\n a {\r\n color: $sidenav-bg-color;\r\n }\r\n}\r\n\r\n.sidenav .collapsible-body {\r\n padding: 0;\r\n}\r\n\r\n.sidenav-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n opacity: 0;\r\n height: 120vh;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n z-index: 997;\r\n display: none;\r\n}\r\n\r\n\r\n\r\n\r\n .with-side-nav-open{\r\n padding-left: 300px;\r\n transition: padding 1s;\r\n }\r\n","// shared styles\r\n\r\n.btn,\r\n.btn-flat {\r\n border: $button-border;\r\n border-radius: $button-radius;\r\n display: inline-block;\r\n height: $button-height;\r\n line-height: $button-height;\r\n padding: $button-padding;\r\n text-transform: uppercase;\r\n vertical-align: middle;\r\n -webkit-tap-highlight-color: transparent; // Gets rid of tap active state\r\n}\r\n\r\n// Disabled shared style\r\n.btn.disabled,\r\n.btn-floating.disabled,\r\n.btn-large.disabled,\r\n.btn-small.disabled,\r\n.btn-flat.disabled,\r\n.btn:disabled,\r\n.btn-floating:disabled,\r\n.btn-large:disabled,\r\n.btn-small:disabled,\r\n.btn-flat:disabled,\r\n.btn[disabled],\r\n.btn-floating[disabled],\r\n.btn-large[disabled],\r\n.btn-small[disabled],\r\n.btn-flat[disabled] {\r\n pointer-events: none;\r\n background-color: $button-disabled-background !important;\r\n box-shadow: none;\r\n color: $button-disabled-color !important;\r\n cursor: default;\r\n &:hover {\r\n background-color: $button-disabled-background !important;\r\n color: $button-disabled-color !important;\r\n }\r\n}\r\n\r\n// Shared icon styles\r\n.btn,\r\n.btn-floating,\r\n.btn-large,\r\n.btn-small,\r\n.btn-flat {\r\n font-size: $button-font-size;\r\n outline: 0;\r\n i {\r\n font-size: $button-icon-font-size;\r\n line-height: inherit;\r\n }\r\n}\r\n\r\n// Shared focus button style\r\n.btn,\r\n.btn-floating {\r\n &:focus {\r\n background-color: darken($button-raised-background, 10%);\r\n }\r\n}\r\n\r\n// Raised Button\r\n.btn {\r\n text-decoration: none;\r\n color: $button-raised-color;\r\n background-color: $button-raised-background;\r\n text-align: center;\r\n letter-spacing: .5px;\r\n @extend .shadow-1;\r\n transition: background-color .2s ease-out;\r\n cursor: pointer;\r\n &:hover {\r\n background-color: $button-raised-background-hover;\r\n @extend .shadow-1-half;\r\n }\r\n}\r\n\r\n// Floating button\r\n.btn-floating {\r\n &:hover {\r\n background-color: $button-floating-background-hover;\r\n @extend .shadow-1-half;\r\n }\r\n &:before {\r\n border-radius: 0;\r\n }\r\n &.btn-large {\r\n &.halfway-fab {\r\n bottom: calc($button-floating-large-size / 2);\r\n }\r\n width: $button-floating-large-size;\r\n height: $button-floating-large-size;\r\n padding: 0;\r\n i {\r\n line-height: $button-floating-large-size;\r\n }\r\n }\r\n\r\n &.btn-small {\r\n &.halfway-fab {\r\n bottom: calc($button-floating-small-size / 2);\r\n }\r\n width: $button-floating-small-size;\r\n height: $button-floating-small-size;\r\n i {\r\n line-height: $button-floating-small-size;\r\n }\r\n }\r\n\r\n &.halfway-fab {\r\n &.left {\r\n right: auto;\r\n left: 24px;\r\n }\r\n position: absolute;\r\n right: 24px;\r\n bottom: calc($button-floating-size / 2);\r\n }\r\n display: inline-block;\r\n color: $button-floating-color;\r\n position: relative;\r\n overflow: hidden;\r\n z-index: 1;\r\n width: $button-floating-size;\r\n height: $button-floating-size;\r\n line-height: $button-floating-size;\r\n padding: 0;\r\n background-color: $button-floating-background;\r\n border-radius: $button-floating-radius;\r\n @extend .shadow-1;\r\n transition: background-color .3s;\r\n cursor: pointer;\r\n vertical-align: middle;\r\n i {\r\n width: inherit;\r\n display: inline-block;\r\n text-align: center;\r\n color: $button-floating-color;\r\n font-size: $button-large-icon-font-size;\r\n line-height: $button-floating-size;\r\n }\r\n}\r\n\r\n// button fix\r\nbutton.btn-floating {\r\n border: $button-border;\r\n}\r\n\r\n// Fixed Action Button\r\n.fixed-action-btn {\r\n &.active {\r\n ul {\r\n visibility: visible;\r\n }\r\n }\r\n\r\n // Directions\r\n &.direction-left,\r\n &.direction-right {\r\n padding: 0 0 0 15px;\r\n ul {\r\n text-align: right;\r\n right: 64px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n height: 100%;\r\n left: auto;\r\n /*width 100% only goes to width of button container */\r\n width: 500px;\r\n li {\r\n display: inline-block;\r\n margin: 7.5px 15px 0 0;\r\n }\r\n }\r\n }\r\n &.direction-right {\r\n padding: 0 15px 0 0;\r\n ul {\r\n text-align: left;\r\n direction: rtl;\r\n left: 64px;\r\n right: auto;\r\n li {\r\n margin: 7.5px 0 0 15px;\r\n }\r\n }\r\n }\r\n &.direction-bottom {\r\n padding: 0 0 15px 0;\r\n ul {\r\n top: 64px;\r\n bottom: auto;\r\n display: flex;\r\n flex-direction: column-reverse;\r\n li {\r\n margin: 15px 0 0 0;\r\n }\r\n }\r\n }\r\n &.toolbar {\r\n &.active {\r\n &>a i {\r\n opacity: 0;\r\n }\r\n }\r\n padding: 0;\r\n height: $button-floating-large-size;\r\n ul {\r\n display: flex;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 1;\r\n li {\r\n flex: 1;\r\n display: inline-block;\r\n margin: 0;\r\n height: 100%;\r\n transition: none;\r\n a {\r\n display: block;\r\n overflow: hidden;\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n background-color: transparent;\r\n box-shadow: none;\r\n color: #fff;\r\n line-height: $button-floating-large-size;\r\n z-index: 1;\r\n i {\r\n line-height: inherit;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n position: fixed;\r\n right: 23px;\r\n bottom: 23px;\r\n padding-top: 15px;\r\n margin-bottom: 0;\r\n z-index: 997;\r\n ul {\r\n left: 0;\r\n right: 0;\r\n text-align: center;\r\n position: absolute;\r\n bottom: 64px;\r\n margin: 0;\r\n visibility: hidden;\r\n li {\r\n margin-bottom: 15px;\r\n }\r\n a.btn-floating {\r\n opacity: 0;\r\n }\r\n }\r\n .fab-backdrop {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: -1;\r\n width: $button-floating-size;\r\n height: $button-floating-size;\r\n background-color: $button-floating-background;\r\n border-radius: $button-floating-radius;\r\n transform: scale(0);\r\n }\r\n}\r\n\r\n// Flat button\r\n.btn-flat {\r\n box-shadow: none;\r\n background-color: transparent;\r\n color: $button-flat-color;\r\n cursor: pointer;\r\n transition: background-color .2s;\r\n &:focus,\r\n &:hover {\r\n box-shadow: none;\r\n }\r\n &:focus {\r\n background-color: rgba(0, 0, 0, .1);\r\n }\r\n &.disabled,\r\n &.btn-flat[disabled] {\r\n background-color: transparent !important;\r\n color: $button-flat-disabled-color !important;\r\n cursor: default;\r\n }\r\n}\r\n\r\n// Large button\r\n.btn-large {\r\n @extend .btn;\r\n height: $button-large-height;\r\n line-height: $button-large-height;\r\n font-size: $button-large-font-size;\r\n padding: 0 28px;\r\n\r\n i {\r\n font-size: $button-large-icon-font-size;\r\n }\r\n}\r\n\r\n// Small button\r\n.btn-small {\r\n @extend .btn;\r\n height: $button-small-height;\r\n line-height: $button-small-height;\r\n font-size: $button-small-font-size;\r\n i {\r\n font-size: $button-small-icon-font-size;\r\n }\r\n}\r\n\r\n// Block button\r\n.btn-block {\r\n display: block;\r\n}\r\n","$mainColor:#0062d6;\r\n$othermain:#034d82;\r\n$secondColor:#0077FA;\r\n$thirdColor:#09bddd;\r\n$forthColor:#cbe7fe;\r\n\r\n$tab1: $forthColor;\r\n$tab2: darken($forthColor,15%);\r\n$tab3: darken($forthColor,30%);\r\n\r\n.communTabHeader {\r\n height: 100px;\r\n padding: 40px;\r\n}\r\n\r\n.tabs {\r\n min-height: calc(100% - 150px);\r\n margin-top: 30px;\r\n padding:0!important;\r\n border-radius: 40px!important;\r\n.innerpage{\r\n min-height: 70VH!important;\r\n}\r\n .tabs-header-overlay {\r\n display: flex;\r\n height: 100px;\r\n }\r\n\r\n &.activeTab-0 {\r\n .tab-header-over0 {\r\n flex: 1;\r\n background-color: $tab2;\r\n border-radius: 40px 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab1;\r\n border-radius: 40px 40px 0 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over1 {\r\n flex: 1;\r\n background: linear-gradient(0.25turn, $tab1, $tab3);\r\n border-radius: 0 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab2;\r\n border-radius: 0 40px 0 40px;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over2 {\r\n flex: 1;\r\n background-color: $tab2;\r\n border-radius: 0 40px 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab3;\r\n border-radius: 0 40px 0 40px;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n }\r\n\r\n &.activeTab-1 {\r\n .tab-header-over0 {\r\n flex: 1;\r\n background-color: $tab1;\r\n //linear-gradient(0.25turn, $tab1, $tab1);\r\n //linear-gradient(0.25turn, $tab1, $tab1);\r\n border-radius: 40px 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab2;\r\n // border-radius: 40px 40px 0 0;\r\n border-radius: 40px 0 40px 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over1 {\r\n flex: 1;\r\n background: linear-gradient(0.25turn, $tab2, $tab3);\r\n //$tab2;\r\n //border-radius: 40px 0 0;\r\n border-radius: 0 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab1;\r\n border-radius: 40px 40px 0 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over2 {\r\n flex: 1;\r\n background-color: $tab1;\r\n border-radius: 0 40px 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab3;\r\n border-radius: 0 40px 0 40px;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n }\r\n\r\n\r\n &.activeTab-2 {\r\n .tab-header-over0 {\r\n flex: 1;\r\n background-color: $tab3;\r\n //linear-gradient(0.25turn, $tab1, $tab1);\r\n //linear-gradient(0.25turn, $tab1, $tab1);\r\n border-radius: 40px 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab2;\r\n // border-radius: 40px 40px 0 0;\r\n border-radius: 40px 0 40px 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over1 {\r\n flex: 1;\r\n background: linear-gradient(0.25turn, $tab2, $tab1);\r\n //$tab2;\r\n //border-radius: 40px 0 0;\r\n border-radius: 0 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab3;\r\n border-radius: 40px 0 40px 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over2 {\r\n flex: 1;\r\n background-color: $tab3;\r\n border-radius: 0 40px 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab1;\r\n border-radius: 40px 40px 0 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n }\r\n\r\n .tab-content {\r\n background-color: $tab1;\r\n padding: 10px;\r\n //border: 1px solid rgb(207, 205, 205);\r\n border-top: 0;\r\n min-height: 70vh;\r\n border-radius: 0 0 40px 40px;\r\n padding-bottom: 20px;\r\n \r\n }\r\n}\r\n\r\n// .tabs {\r\n// // display: flex;\r\n// // flex-direction: column;\r\n// .tabs-header-overlay {\r\n// display: flex;\r\n// height: 100px;\r\n\r\n// .tab-header-over {\r\n// flex: 1;\r\n// background-color: hotpink;\r\n// border-radius: 0 40px 0 0;\r\n// &.active {\r\n// background-color: rgb(155, 152, 153);\r\n// border-radius: 40px 0 0 0;\r\n// }\r\n// .tab-header {\r\n// &.active {\r\n// background-color: hotpink;\r\n// border-radius: 40px 40px 0 0;\r\n// }\r\n// border-radius: 0px 40px 0 40px;\r\n// padding: 40px;\r\n// background-color: rgb(155, 152, 153);\r\n// }\r\n// }\r\n// }\r\n\r\n// .tab-content {\r\n// background-color: hotpink;\r\n// padding: 10px;\r\n// border: 1px solid rgb(207, 205, 205);\r\n// border-top: 0;\r\n// }\r\n// }\r\n",".loader-overlay {\r\n z-index: 999;\r\n position: absolute;\r\n height: 100vh;\r\n width: 100vw;\r\n top: 0;\r\n left: 0;\r\n background-color: rgba(102, 100, 100, 0.603);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n flex-direction: column;\r\n .loader {\r\n border: 7px solid #f3f3f3; /* Light grey */\r\n border-top: 7px solid #2ea2cc; /* Blue */\r\n border-radius: 50%;\r\n width: 70px;\r\n height: 70px;\r\n animation: spin 2s linear infinite;\r\n }\r\n .loader-text{\r\n margin-top: 20px;\r\n font-size: 25px;\r\n color: #2ea2cc;\r\n }\r\n\r\n @keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n}\r\n","\r\n\r\n.card-panel {\r\n transition: box-shadow .25s;\r\n padding: $card-padding;\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n border-radius: 2px;\r\n @extend .shadow-1;\r\n background-color: $card-bg-color;\r\n}\r\n\r\n.card {\r\n position: relative;\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n background-color: $card-bg-color;\r\n transition: box-shadow .25s;\r\n border-radius: 2px;\r\n @extend .shadow-1;\r\n\r\n\r\n .card-title {\r\n font-size: 24px;\r\n font-weight: 300;\r\n &.activator {\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n // Card Sizes\r\n &.small, &.medium, &.large {\r\n position: relative;\r\n\r\n .card-image {\r\n max-height: 60%;\r\n overflow: hidden;\r\n }\r\n .card-image + .card-content {\r\n max-height: 40%;\r\n }\r\n .card-content {\r\n max-height: 100%;\r\n overflow: hidden;\r\n }\r\n .card-action {\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n }\r\n }\r\n\r\n &.small {\r\n height: 300px;\r\n }\r\n\r\n &.medium {\r\n height: 400px;\r\n }\r\n\r\n &.large {\r\n height: 500px;\r\n }\r\n\r\n // Horizontal Cards\r\n &.horizontal {\r\n &.small, &.medium, &.large {\r\n .card-image {\r\n height: 100%;\r\n max-height: none;\r\n overflow: visible;\r\n\r\n img {\r\n height: 100%;\r\n }\r\n }\r\n }\r\n\r\n display: flex;\r\n\r\n .card-image {\r\n max-width: 50%;\r\n img {\r\n border-radius: 2px 0 0 2px;\r\n max-width: 100%;\r\n width: auto;\r\n }\r\n }\r\n\r\n .card-stacked {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n position: relative;\r\n\r\n .card-content {\r\n flex-grow: 1;\r\n }\r\n }\r\n }\r\n\r\n // Sticky Action Section\r\n &.sticky-action {\r\n .card-action {\r\n z-index: 2;\r\n }\r\n\r\n .card-reveal {\r\n z-index: 1;\r\n padding-bottom: 64px;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n .card-image {\r\n position: relative;\r\n\r\n // Image background for content\r\n img {\r\n display: block;\r\n border-radius: 2px 2px 0 0;\r\n position: relative;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 100%;\r\n }\r\n\r\n .card-title {\r\n color: $card-bg-color;\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n max-width: 100%;\r\n padding: $card-padding;\r\n }\r\n }\r\n\r\n .card-content {\r\n padding: $card-padding;\r\n border-radius: 0 0 2px 2px;\r\n\r\n p {\r\n margin: 0;\r\n }\r\n .card-title {\r\n display: block;\r\n line-height: 32px;\r\n margin-bottom: 8px;\r\n\r\n i {\r\n line-height: 32px;\r\n }\r\n }\r\n }\r\n\r\n .card-action {\r\n &:last-child {\r\n border-radius: 0 0 2px 2px;\r\n }\r\n background-color: inherit; // Use inherit to inherit color classes\r\n border-top: 1px solid rgba(160,160,160,.2);\r\n position: relative;\r\n padding: 16px $card-padding;\r\n\r\n a:not(.btn):not(.btn-large):not(.btn-floating) {\r\n color: $card-link-color;\r\n margin-right: $card-padding;\r\n transition: color .3s ease;\r\n text-transform: uppercase;\r\n\r\n &:hover { color: $card-link-color-light; }\r\n }\r\n }\r\n\r\n .card-reveal {\r\n padding: $card-padding;\r\n position: absolute;\r\n background-color: $card-bg-color;\r\n width: 100%;\r\n overflow-y: auto;\r\n left: 0;\r\n top: 100%;\r\n height: 100%;\r\n z-index: 3;\r\n display: none;\r\n\r\n .card-title {\r\n cursor: pointer;\r\n display: block;\r\n }\r\n }\r\n}\r\n","/*\r\n @license\r\n Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\r\n This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\r\n The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\r\n The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n Code distributed by Google as part of the polymer project is also\r\n subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n/**************************/\r\n/* STYLES FOR THE SPINNER */\r\n/**************************/\r\n\r\n/*\r\n * Constants:\r\n * STROKEWIDTH = 3px\r\n * ARCSIZE = 270 degrees (amount of circle the arc takes up)\r\n * ARCTIME = 1333ms (time it takes to expand and contract arc)\r\n * ARCSTARTROT = 216 degrees (how much the start location of the arc\r\n * should rotate each time, 216 gives us a\r\n * 5 pointed star shape (it's 360/5 * 3).\r\n * For a 7 pointed star, we might do\r\n * 360/7 * 3 = 154.286)\r\n * CONTAINERWIDTH = 28px\r\n * SHRINK_TIME = 400ms\r\n */\r\n\r\n\r\n.preloader-wrapper {\r\n display: inline-block;\r\n position: relative;\r\n width: 50px;\r\n height: 50px;\r\n\r\n &.small {\r\n width: 36px;\r\n height: 36px;\r\n }\r\n\r\n &.big {\r\n width: 64px;\r\n height: 64px;\r\n }\r\n\r\n &.active {\r\n /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */\r\n -webkit-animation: container-rotate 1568ms linear infinite;\r\n animation: container-rotate 1568ms linear infinite;\r\n }\r\n}\r\n\r\n@-webkit-keyframes container-rotate {\r\n to { -webkit-transform: rotate(360deg) }\r\n}\r\n\r\n@keyframes container-rotate {\r\n to { transform: rotate(360deg) }\r\n}\r\n\r\n.spinner-layer {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n opacity: 0;\r\n border-color: $spinner-default-color;\r\n}\r\n\r\n.spinner-blue,\r\n.spinner-blue-only {\r\n border-color: #4285f4;\r\n}\r\n\r\n.spinner-red,\r\n.spinner-red-only {\r\n border-color: #db4437;\r\n}\r\n\r\n.spinner-yellow,\r\n.spinner-yellow-only {\r\n border-color: #f4b400;\r\n}\r\n\r\n.spinner-green,\r\n.spinner-green-only {\r\n border-color: #0f9d58;\r\n}\r\n\r\n/**\r\n * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):\r\n *\r\n * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't\r\n * guarantee that the animation will start _exactly_ after that value. So we avoid using\r\n * animation-delay and instead set custom keyframes for each color (as redundant as it\r\n * seems).\r\n *\r\n * We write out each animation in full (instead of separating animation-name,\r\n * animation-duration, etc.) because under the polyfill, Safari does not recognize those\r\n * specific properties properly, treats them as -webkit-animation, and overrides the\r\n * other animation rules. See https://github.com/Polymer/platform/issues/53.\r\n */\r\n.active .spinner-layer.spinner-blue {\r\n /* durations: 4 * ARCTIME */\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .spinner-layer.spinner-red {\r\n /* durations: 4 * ARCTIME */\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .spinner-layer.spinner-yellow {\r\n /* durations: 4 * ARCTIME */\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .spinner-layer.spinner-green {\r\n /* durations: 4 * ARCTIME */\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .spinner-layer,\r\n.active .spinner-layer.spinner-blue-only,\r\n.active .spinner-layer.spinner-red-only,\r\n.active .spinner-layer.spinner-yellow-only,\r\n.active .spinner-layer.spinner-green-only {\r\n /* durations: 4 * ARCTIME */\r\n opacity: 1;\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n@-webkit-keyframes fill-unfill-rotate {\r\n 12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */\r\n 25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */\r\n 37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */\r\n 50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */\r\n 62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */\r\n 75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */\r\n 87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */\r\n to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */\r\n}\r\n\r\n@keyframes fill-unfill-rotate {\r\n 12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */\r\n 25% { transform: rotate(270deg); } /* 1 * ARCSIZE */\r\n 37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */\r\n 50% { transform: rotate(540deg); } /* 2 * ARCSIZE */\r\n 62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */\r\n 75% { transform: rotate(810deg); } /* 3 * ARCSIZE */\r\n 87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */\r\n to { transform: rotate(1080deg); } /* 4 * ARCSIZE */\r\n}\r\n\r\n@-webkit-keyframes blue-fade-in-out {\r\n from { opacity: 1; }\r\n 25% { opacity: 1; }\r\n 26% { opacity: 0; }\r\n 89% { opacity: 0; }\r\n 90% { opacity: 1; }\r\n 100% { opacity: 1; }\r\n}\r\n\r\n@keyframes blue-fade-in-out {\r\n from { opacity: 1; }\r\n 25% { opacity: 1; }\r\n 26% { opacity: 0; }\r\n 89% { opacity: 0; }\r\n 90% { opacity: 1; }\r\n 100% { opacity: 1; }\r\n}\r\n\r\n@-webkit-keyframes red-fade-in-out {\r\n from { opacity: 0; }\r\n 15% { opacity: 0; }\r\n 25% { opacity: 1; }\r\n 50% { opacity: 1; }\r\n 51% { opacity: 0; }\r\n}\r\n\r\n@keyframes red-fade-in-out {\r\n from { opacity: 0; }\r\n 15% { opacity: 0; }\r\n 25% { opacity: 1; }\r\n 50% { opacity: 1; }\r\n 51% { opacity: 0; }\r\n}\r\n\r\n@-webkit-keyframes yellow-fade-in-out {\r\n from { opacity: 0; }\r\n 40% { opacity: 0; }\r\n 50% { opacity: 1; }\r\n 75% { opacity: 1; }\r\n 76% { opacity: 0; }\r\n}\r\n\r\n@keyframes yellow-fade-in-out {\r\n from { opacity: 0; }\r\n 40% { opacity: 0; }\r\n 50% { opacity: 1; }\r\n 75% { opacity: 1; }\r\n 76% { opacity: 0; }\r\n}\r\n\r\n@-webkit-keyframes green-fade-in-out {\r\n from { opacity: 0; }\r\n 65% { opacity: 0; }\r\n 75% { opacity: 1; }\r\n 90% { opacity: 1; }\r\n 100% { opacity: 0; }\r\n}\r\n\r\n@keyframes green-fade-in-out {\r\n from { opacity: 0; }\r\n 65% { opacity: 0; }\r\n 75% { opacity: 1; }\r\n 90% { opacity: 1; }\r\n 100% { opacity: 0; }\r\n}\r\n\r\n/**\r\n * Patch the gap that appear between the two adjacent div.circle-clipper while the\r\n * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).\r\n */\r\n.gap-patch {\r\n position: absolute;\r\n top: 0;\r\n left: 45%;\r\n width: 10%;\r\n height: 100%;\r\n overflow: hidden;\r\n border-color: inherit;\r\n}\r\n\r\n.gap-patch .circle {\r\n width: 1000%;\r\n left: -450%;\r\n}\r\n\r\n.circle-clipper {\r\n display: inline-block;\r\n position: relative;\r\n width: 50%;\r\n height: 100%;\r\n overflow: hidden;\r\n border-color: inherit;\r\n\r\n .circle {\r\n width: 200%;\r\n height: 100%;\r\n border-width: 3px; /* STROKEWIDTH */\r\n border-style: solid;\r\n border-color: inherit;\r\n border-bottom-color: transparent !important;\r\n border-radius: 50%;\r\n -webkit-animation: none;\r\n animation: none;\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n }\r\n\r\n &.left .circle {\r\n left: 0;\r\n border-right-color: transparent !important;\r\n -webkit-transform: rotate(129deg);\r\n transform: rotate(129deg);\r\n }\r\n &.right .circle {\r\n left: -100%;\r\n border-left-color: transparent !important;\r\n -webkit-transform: rotate(-129deg);\r\n transform: rotate(-129deg);\r\n }\r\n}\r\n\r\n\r\n\r\n.active .circle-clipper.left .circle {\r\n /* duration: ARCTIME */\r\n -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .circle-clipper.right .circle {\r\n /* duration: ARCTIME */\r\n -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n@-webkit-keyframes left-spin {\r\n from { -webkit-transform: rotate(130deg); }\r\n 50% { -webkit-transform: rotate(-5deg); }\r\n to { -webkit-transform: rotate(130deg); }\r\n}\r\n\r\n@keyframes left-spin {\r\n from { transform: rotate(130deg); }\r\n 50% { transform: rotate(-5deg); }\r\n to { transform: rotate(130deg); }\r\n}\r\n\r\n@-webkit-keyframes right-spin {\r\n from { -webkit-transform: rotate(-130deg); }\r\n 50% { -webkit-transform: rotate(5deg); }\r\n to { -webkit-transform: rotate(-130deg); }\r\n}\r\n\r\n@keyframes right-spin {\r\n from { transform: rotate(-130deg); }\r\n 50% { transform: rotate(5deg); }\r\n to { transform: rotate(-130deg); }\r\n}\r\n\r\n#spinnerContainer.cooldown {\r\n /* duration: SHRINK_TIME */\r\n -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1);\r\n animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1);\r\n}\r\n\r\n@-webkit-keyframes fade-out {\r\n from { opacity: 1; }\r\n to { opacity: 0; }\r\n}\r\n\r\n@keyframes fade-out {\r\n from { opacity: 1; }\r\n to { opacity: 0; }\r\n}\r\n","\r\n// Progress Bar\r\n.progress {\r\n position: relative;\r\n height: 4px;\r\n display: block;\r\n width: 100%;\r\n background-color: lighten($progress-bar-color, 40%);\r\n border-radius: 2px;\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n overflow: hidden;\r\n .determinate {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n background-color: $progress-bar-color;\r\n transition: width .3s linear;\r\n }\r\n .indeterminate {\r\n background-color: $progress-bar-color;\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n background-color: inherit;\r\n top: 0;\r\n left:0;\r\n bottom: 0;\r\n will-change: left, right;\r\n // Custom bezier\r\n animation: indeterminate 2.1s cubic-bezier(0.650, 0.815, 0.735, 0.395) infinite;\r\n\r\n }\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n background-color: inherit;\r\n top: 0;\r\n left:0;\r\n bottom: 0;\r\n will-change: left, right;\r\n // Custom bezier\r\n animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.840, 0.440, 1.000) infinite;\r\n animation-delay: 1.15s;\r\n }\r\n }\r\n}\r\n@keyframes indeterminate {\r\n 0% {\r\n left: -35%;\r\n right:100%;\r\n }\r\n 60% {\r\n left: 100%;\r\n right: -90%;\r\n }\r\n 100% {\r\n left: 100%;\r\n right: -90%;\r\n }\r\n}\r\n\r\n@keyframes indeterminate-short {\r\n 0% {\r\n left: -200%;\r\n right: 100%;\r\n }\r\n 60% {\r\n left: 107%;\r\n right: -8%;\r\n }\r\n 100% {\r\n left: 107%;\r\n right: -8%;\r\n }\r\n}\r\n\r\n",".flash-message {\r\n position: absolute;\r\n padding: 2px 10px;\r\n border-radius: 5px;\r\n z-index: 99999;\r\n right: 0;\r\n bottom: 0;\r\n font-size: 14px;\r\n\r\n\r\n &.info {\r\n background-color: #beddbe;\r\n border: 1px solid #728f72;\r\n }\r\n\r\n &.warn {\r\n background-color: #f5e6d0;\r\n border: 1px solid #ea7d17;\r\n }\r\n &.error {\r\n background-color: #e5b2bc;\r\n border: 1px solid #e33257;\r\n }\r\n}\r\n\r\n@keyframes messageIn {\r\n from {\r\n right: 80%;\r\n }\r\n\r\n to {\r\n right: 0;\r\n\r\n }\r\n}",".pulse {\r\n &::before {\r\n content: '';\r\n display: block;\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n top: 0;\r\n left: 0;\r\n background-color: inherit;\r\n border-radius: inherit;\r\n transition: opacity .3s, transform .3s;\r\n animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;\r\n //z-index: -1;\r\n }\r\n\r\n overflow: visible;\r\n position: relative;\r\n}\r\n\r\n@keyframes pulse-animation {\r\n 0% {\r\n opacity: 1;\r\n transform: scale(1);\r\n }\r\n 50% {\r\n opacity: 0;\r\n transform: scale(1.5);\r\n }\r\n 100% {\r\n opacity: 0;\r\n transform: scale(1.5);\r\n }\r\n}\r\n",".dropdown-content {\r\n &:focus {\r\n outline: 0;\r\n }\r\n\r\n\r\n @extend .shadow-1;\r\n background-color: $dropdown-bg-color;\r\n margin: 0;\r\n display: flow;\r\n min-width: 100px;\r\n overflow-y: auto;\r\n //opacity: 0;\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n z-index: 9999; // TODO: Check if this doesn't break other things\r\n transform-origin: 0 0;\r\n\r\n\r\n li {\r\n &:hover, &.active {\r\n background-color: $dropdown-hover-bg-color;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &.divider {\r\n min-height: 0;\r\n height: 1px;\r\n }\r\n\r\n & > a, & > span {\r\n font-size: 16px;\r\n color: $dropdown-color;\r\n display: block;\r\n line-height: 22px;\r\n padding: calc(($dropdown-item-height - 22px) / 2) 16px;\r\n }\r\n\r\n & > span > label {\r\n top: 1px;\r\n left: 0;\r\n height: 18px;\r\n }\r\n\r\n // Icon alignment override\r\n & > a > i {\r\n height: inherit;\r\n line-height: inherit;\r\n float: left;\r\n margin: 0 24px 0 0;\r\n width: 24px;\r\n }\r\n\r\n\r\n clear: both;\r\n color: $off-black;\r\n cursor: pointer;\r\n min-height: $dropdown-item-height;\r\n line-height: 1.5rem;\r\n width: 100%;\r\n text-align: left;\r\n }\r\n}\r\n\r\nbody.keyboard-focused {\r\n .dropdown-content li:focus {\r\n background-color: darken($dropdown-hover-bg-color, 8%);\r\n }\r\n}\r\n\r\n// Input field specificity bugfix\r\n.input-field.col .dropdown-content [type=\"checkbox\"] + label {\r\n top: 1px;\r\n left: 0;\r\n height: 18px;\r\n transform: none;\r\n}\r\n\r\n.dropdown-trigger {\r\n cursor: pointer;\r\n}","nav {\r\n &.nav-extended {\r\n height: auto;\r\n\r\n .nav-wrapper {\r\n display: flex;\r\n align-items: center;\r\n min-height: $navbar-height-mobile;\r\n height: auto;\r\n }\r\n\r\n .nav-content {\r\n position: relative;\r\n line-height: normal;\r\n }\r\n }\r\n\r\n color: $navbar-font-color;\r\n @extend .shadow-1;\r\n background-color: $primary-color;\r\n width: 100%;\r\n height: $navbar-height-mobile;\r\n line-height: $navbar-line-height-mobile;\r\n\r\n a { color: $navbar-font-color; }\r\n\r\n i,\r\n [class^=\"mdi-\"], [class*=\"mdi-\"],\r\n i.s-icons {\r\n display: block;\r\n font-size: 24px;\r\n height: $navbar-height-mobile;\r\n line-height: $navbar-line-height-mobile;\r\n }\r\n\r\n .nav-wrapper {\r\n position: relative;\r\n height: 100%;\r\n }\r\n\r\n @media #{$large-and-up} {\r\n a.sidenav-trigger { display: none; }\r\n }\r\n\r\n\r\n // Collapse button\r\n .sidenav-trigger {\r\n float: left;\r\n position: relative;\r\n z-index: 1;\r\n height: $navbar-height-mobile;\r\n margin: 0 18px;\r\n\r\n i {\r\n height: $navbar-height-mobile;\r\n line-height: $navbar-line-height-mobile;\r\n }\r\n }\r\n\r\n\r\n // Logo\r\n .brand-logo {\r\n position: absolute;\r\n color: $navbar-font-color;\r\n display: inline-block;\r\n font-size: $navbar-brand-font-size;\r\n padding: 0;\r\n img.circle {\r\n height: 32px;\r\n width: 32px;\r\n }\r\n\r\n &.center {\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n\r\n @media #{$medium-and-down} {\r\n left: 50%;\r\n transform: translateX(-50%);\r\n\r\n &.left, &.right {\r\n padding: 0;\r\n transform: none;\r\n }\r\n\r\n &.left { left: 0.5rem; }\r\n &.right {\r\n right: 0.5rem;\r\n left: auto;\r\n }\r\n }\r\n\r\n &.right {\r\n right: 0.5rem;\r\n padding: 0;\r\n }\r\n\r\n i,\r\n [class^=\"mdi-\"], [class*=\"mdi-\"],\r\n i.s-icons {\r\n float: left;\r\n margin-right: 15px;\r\n }\r\n }\r\n\r\n\r\n // Title\r\n .nav-title {\r\n display: inline-block;\r\n font-size: 32px;\r\n padding: 28px 0;\r\n }\r\n\r\n\r\n // Navbar Links\r\n ul {\r\n margin: 0;\r\n\r\n li {\r\n transition: background-color .3s;\r\n float: left;\r\n padding: 0;\r\n\r\n &.active {\r\n background-color: rgba(0,0,0,.1);\r\n }\r\n }\r\n a {\r\n transition: background-color .3s;\r\n font-size: $navbar-font-size;\r\n color: $navbar-font-color;\r\n display: block;\r\n padding: 0 15px;\r\n cursor: pointer;\r\n\r\n &.btn, &.btn-large, &.btn-flat, &.btn-floating {\r\n margin-top: -2px;\r\n margin-left: 15px;\r\n margin-right: 15px;\r\n\r\n & > .material-icons {\r\n height: inherit;\r\n line-height: inherit;\r\n }\r\n }\r\n\r\n &:hover {\r\n background-color: rgba(0,0,0,.1);\r\n }\r\n }\r\n\r\n &.left {\r\n float: left;\r\n }\r\n }\r\n\r\n // Navbar Search Form\r\n form {\r\n height: 100%;\r\n }\r\n\r\n .input-field {\r\n margin: 0;\r\n height: 100%;\r\n\r\n input {\r\n height: 100%;\r\n font-size: 1.2rem;\r\n border: none;\r\n padding-left: 2rem;\r\n\r\n &:focus, &[type=text]:valid, &[type=password]:valid,\r\n &[type=email]:valid, &[type=url]:valid, &[type=date]:valid {\r\n border: none;\r\n box-shadow: none;\r\n }\r\n }\r\n\r\n label {\r\n top: 0;\r\n left: 0;\r\n\r\n i {\r\n color: rgba(255,255,255,.7);\r\n transition: color .3s;\r\n }\r\n &.active i { color: $navbar-font-color; }\r\n }\r\n }\r\n}\r\n\r\n// Fixed Navbar\r\n.navbar-fixed {\r\n position: relative;\r\n height: $navbar-height-mobile;\r\n z-index: 997;\r\n\r\n nav {\r\n position: fixed;\r\n }\r\n}\r\n@media #{$medium-and-up} {\r\n nav.nav-extended .nav-wrapper {\r\n min-height: $navbar-height;\r\n }\r\n nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i {\r\n height: $navbar-height;\r\n line-height: $navbar-line-height;\r\n }\r\n .navbar-fixed {\r\n height: $navbar-height;\r\n }\r\n}\r\n"],"sourceRoot":""}]);
- // Exports
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
- /***/ }),
- /***/ "./node_modules/css-loader/dist/runtime/api.js":
- /*!*****************************************************!*\
- !*** ./node_modules/css-loader/dist/runtime/api.js ***!
- \*****************************************************/
- /***/ ((module) => {
- "use strict";
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- module.exports = function (cssWithMappingToString) {
- var list = [];
- // return the list of modules as css string
- list.toString = function toString() {
- return this.map(function (item) {
- var content = "";
- var needLayer = typeof item[5] !== "undefined";
- if (item[4]) {
- content += "@supports (".concat(item[4], ") {");
- }
- if (item[2]) {
- content += "@media ".concat(item[2], " {");
- }
- if (needLayer) {
- content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
- }
- content += cssWithMappingToString(item);
- if (needLayer) {
- content += "}";
- }
- if (item[2]) {
- content += "}";
- }
- if (item[4]) {
- content += "}";
- }
- return content;
- }).join("");
- };
- // import a list of modules into the list
- list.i = function i(modules, media, dedupe, supports, layer) {
- if (typeof modules === "string") {
- modules = [[null, modules, undefined]];
- }
- var alreadyImportedModules = {};
- if (dedupe) {
- for (var k = 0; k < this.length; k++) {
- var id = this[k][0];
- if (id != null) {
- alreadyImportedModules[id] = true;
- }
- }
- }
- for (var _k = 0; _k < modules.length; _k++) {
- var item = [].concat(modules[_k]);
- if (dedupe && alreadyImportedModules[item[0]]) {
- continue;
- }
- if (typeof layer !== "undefined") {
- if (typeof item[5] === "undefined") {
- item[5] = layer;
- } else {
- item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
- item[5] = layer;
- }
- }
- if (media) {
- if (!item[2]) {
- item[2] = media;
- } else {
- item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
- item[2] = media;
- }
- }
- if (supports) {
- if (!item[4]) {
- item[4] = "".concat(supports);
- } else {
- item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
- item[4] = supports;
- }
- }
- list.push(item);
- }
- };
- return list;
- };
- /***/ }),
- /***/ "./node_modules/css-loader/dist/runtime/sourceMaps.js":
- /*!************************************************************!*\
- !*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***!
- \************************************************************/
- /***/ ((module) => {
- "use strict";
- module.exports = function (item) {
- var content = item[1];
- var cssMapping = item[3];
- if (!cssMapping) {
- return content;
- }
- if (typeof btoa === "function") {
- var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
- var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
- var sourceMapping = "/*# ".concat(data, " */");
- return [content].concat([sourceMapping]).join("\n");
- }
- return [content].join("\n");
- };
- /***/ }),
- /***/ "./node_modules/deepmerge/dist/cjs.js":
- /*!********************************************!*\
- !*** ./node_modules/deepmerge/dist/cjs.js ***!
- \********************************************/
- /***/ ((module) => {
- "use strict";
- var isMergeableObject = function isMergeableObject(value) {
- return isNonNullObject(value)
- && !isSpecial(value)
- };
- function isNonNullObject(value) {
- return !!value && typeof value === 'object'
- }
- function isSpecial(value) {
- var stringValue = Object.prototype.toString.call(value);
- return stringValue === '[object RegExp]'
- || stringValue === '[object Date]'
- || isReactElement(value)
- }
- // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
- var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
- var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
- function isReactElement(value) {
- return value.$$typeof === REACT_ELEMENT_TYPE
- }
- function emptyTarget(val) {
- return Array.isArray(val) ? [] : {}
- }
- function cloneUnlessOtherwiseSpecified(value, options) {
- return (options.clone !== false && options.isMergeableObject(value))
- ? deepmerge(emptyTarget(value), value, options)
- : value
- }
- function defaultArrayMerge(target, source, options) {
- return target.concat(source).map(function(element) {
- return cloneUnlessOtherwiseSpecified(element, options)
- })
- }
- function getMergeFunction(key, options) {
- if (!options.customMerge) {
- return deepmerge
- }
- var customMerge = options.customMerge(key);
- return typeof customMerge === 'function' ? customMerge : deepmerge
- }
- function getEnumerableOwnPropertySymbols(target) {
- return Object.getOwnPropertySymbols
- ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
- return Object.propertyIsEnumerable.call(target, symbol)
- })
- : []
- }
- function getKeys(target) {
- return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))
- }
- function propertyIsOnObject(object, property) {
- try {
- return property in object
- } catch(_) {
- return false
- }
- }
- // Protects from prototype poisoning and unexpected merging up the prototype chain.
- function propertyIsUnsafe(target, key) {
- return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,
- && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,
- && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.
- }
- function mergeObject(target, source, options) {
- var destination = {};
- if (options.isMergeableObject(target)) {
- getKeys(target).forEach(function(key) {
- destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
- });
- }
- getKeys(source).forEach(function(key) {
- if (propertyIsUnsafe(target, key)) {
- return
- }
- if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
- destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
- } else {
- destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
- }
- });
- return destination
- }
- function deepmerge(target, source, options) {
- options = options || {};
- options.arrayMerge = options.arrayMerge || defaultArrayMerge;
- options.isMergeableObject = options.isMergeableObject || isMergeableObject;
- // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()
- // implementations can use it. The caller may not replace it.
- options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
- var sourceIsArray = Array.isArray(source);
- var targetIsArray = Array.isArray(target);
- var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
- if (!sourceAndTargetTypesMatch) {
- return cloneUnlessOtherwiseSpecified(source, options)
- } else if (sourceIsArray) {
- return options.arrayMerge(target, source, options)
- } else {
- return mergeObject(target, source, options)
- }
- }
- deepmerge.all = function deepmergeAll(array, options) {
- if (!Array.isArray(array)) {
- throw new Error('first argument should be an array')
- }
- return array.reduce(function(prev, next) {
- return deepmerge(prev, next, options)
- }, {})
- };
- var deepmerge_1 = deepmerge;
- module.exports = deepmerge_1;
- /***/ }),
- /***/ "./node_modules/object-assign/index.js":
- /*!*********************************************!*\
- !*** ./node_modules/object-assign/index.js ***!
- \*********************************************/
- /***/ ((module) => {
- "use strict";
- /*
- object-assign
- (c) Sindre Sorhus
- @license MIT
- */
- /* eslint-disable no-unused-vars */
- var getOwnPropertySymbols = Object.getOwnPropertySymbols;
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- var propIsEnumerable = Object.prototype.propertyIsEnumerable;
- function toObject(val) {
- if (val === null || val === undefined) {
- throw new TypeError('Object.assign cannot be called with null or undefined');
- }
- return Object(val);
- }
- function shouldUseNative() {
- try {
- if (!Object.assign) {
- return false;
- }
- // Detect buggy property enumeration order in older V8 versions.
- // https://bugs.chromium.org/p/v8/issues/detail?id=4118
- var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
- test1[5] = 'de';
- if (Object.getOwnPropertyNames(test1)[0] === '5') {
- return false;
- }
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
- var test2 = {};
- for (var i = 0; i < 10; i++) {
- test2['_' + String.fromCharCode(i)] = i;
- }
- var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
- return test2[n];
- });
- if (order2.join('') !== '0123456789') {
- return false;
- }
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
- var test3 = {};
- 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
- test3[letter] = letter;
- });
- if (Object.keys(Object.assign({}, test3)).join('') !==
- 'abcdefghijklmnopqrst') {
- return false;
- }
- return true;
- } catch (err) {
- // We don't expect any of the above to throw, but better to be safe.
- return false;
- }
- }
- module.exports = shouldUseNative() ? Object.assign : function (target, source) {
- var from;
- var to = toObject(target);
- var symbols;
- for (var s = 1; s < arguments.length; s++) {
- from = Object(arguments[s]);
- for (var key in from) {
- if (hasOwnProperty.call(from, key)) {
- to[key] = from[key];
- }
- }
- if (getOwnPropertySymbols) {
- symbols = getOwnPropertySymbols(from);
- for (var i = 0; i < symbols.length; i++) {
- if (propIsEnumerable.call(from, symbols[i])) {
- to[symbols[i]] = from[symbols[i]];
- }
- }
- }
- }
- return to;
- };
- /***/ }),
- /***/ "./node_modules/prop-types/checkPropTypes.js":
- /*!***************************************************!*\
- !*** ./node_modules/prop-types/checkPropTypes.js ***!
- \***************************************************/
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- var printWarning = function() {};
- if (true) {
- var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
- var loggedTypeFailures = {};
- var has = __webpack_require__(/*! ./lib/has */ "./node_modules/prop-types/lib/has.js");
- printWarning = function(text) {
- var message = 'Warning: ' + text;
- if (typeof console !== 'undefined') {
- console.error(message);
- }
- try {
- // --- Welcome to debugging React ---
- // This error was thrown as a convenience so that you can use this stack
- // to find the callsite that caused this warning to fire.
- throw new Error(message);
- } catch (x) { /**/ }
- };
- }
- /**
- * Assert that the values match with the type specs.
- * Error messages are memorized and will only be shown once.
- *
- * @param {object} typeSpecs Map of name to a ReactPropType
- * @param {object} values Runtime values that need to be type-checked
- * @param {string} location e.g. "prop", "context", "child context"
- * @param {string} componentName Name of the component for error messages.
- * @param {?Function} getStack Returns the component stack.
- * @private
- */
- function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
- if (true) {
- for (var typeSpecName in typeSpecs) {
- if (has(typeSpecs, typeSpecName)) {
- var error;
- // Prop type validation may throw. In case they do, we don't want to
- // fail the render phase where it didn't fail before. So we log it.
- // After these have been cleaned up, we'll let them throw.
- try {
- // This is intentionally an invariant that gets caught. It's the same
- // behavior as without this statement except with a better message.
- if (typeof typeSpecs[typeSpecName] !== 'function') {
- var err = Error(
- (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
- 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +
- 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'
- );
- err.name = 'Invariant Violation';
- throw err;
- }
- error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
- } catch (ex) {
- error = ex;
- }
- if (error && !(error instanceof Error)) {
- printWarning(
- (componentName || 'React class') + ': type specification of ' +
- location + ' `' + typeSpecName + '` is invalid; the type checker ' +
- 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
- 'You may have forgotten to pass an argument to the type checker ' +
- 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
- 'shape all require an argument).'
- );
- }
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
- // Only monitor this failure once because there tends to be a lot of the
- // same error.
- loggedTypeFailures[error.message] = true;
- var stack = getStack ? getStack() : '';
- printWarning(
- 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
- );
- }
- }
- }
- }
- }
- /**
- * Resets warning cache when testing.
- *
- * @private
- */
- checkPropTypes.resetWarningCache = function() {
- if (true) {
- loggedTypeFailures = {};
- }
- }
- module.exports = checkPropTypes;
- /***/ }),
- /***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
- /*!************************************************************!*\
- !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
- \************************************************************/
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js");
- var assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
- var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
- var has = __webpack_require__(/*! ./lib/has */ "./node_modules/prop-types/lib/has.js");
- var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");
- var printWarning = function() {};
- if (true) {
- printWarning = function(text) {
- var message = 'Warning: ' + text;
- if (typeof console !== 'undefined') {
- console.error(message);
- }
- try {
- // --- Welcome to debugging React ---
- // This error was thrown as a convenience so that you can use this stack
- // to find the callsite that caused this warning to fire.
- throw new Error(message);
- } catch (x) {}
- };
- }
- function emptyFunctionThatReturnsNull() {
- return null;
- }
- module.exports = function(isValidElement, throwOnDirectAccess) {
- /* global Symbol */
- var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
- var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
- /**
- * Returns the iterator method function contained on the iterable object.
- *
- * Be sure to invoke the function with the iterable as context:
- *
- * var iteratorFn = getIteratorFn(myIterable);
- * if (iteratorFn) {
- * var iterator = iteratorFn.call(myIterable);
- * ...
- * }
- *
- * @param {?object} maybeIterable
- * @return {?function}
- */
- function getIteratorFn(maybeIterable) {
- var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
- if (typeof iteratorFn === 'function') {
- return iteratorFn;
- }
- }
- /**
- * Collection of methods that allow declaration and validation of props that are
- * supplied to React components. Example usage:
- *
- * var Props = require('ReactPropTypes');
- * var MyArticle = React.createClass({
- * propTypes: {
- * // An optional string prop named "description".
- * description: Props.string,
- *
- * // A required enum prop named "category".
- * category: Props.oneOf(['News','Photos']).isRequired,
- *
- * // A prop named "dialog" that requires an instance of Dialog.
- * dialog: Props.instanceOf(Dialog).isRequired
- * },
- * render: function() { ... }
- * });
- *
- * A more formal specification of how these methods are used:
- *
- * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
- * decl := ReactPropTypes.{type}(.isRequired)?
- *
- * Each and every declaration produces a function with the same signature. This
- * allows the creation of custom validation functions. For example:
- *
- * var MyLink = React.createClass({
- * propTypes: {
- * // An optional string or URI prop named "href".
- * href: function(props, propName, componentName) {
- * var propValue = props[propName];
- * if (propValue != null && typeof propValue !== 'string' &&
- * !(propValue instanceof URI)) {
- * return new Error(
- * 'Expected a string or an URI for ' + propName + ' in ' +
- * componentName
- * );
- * }
- * }
- * },
- * render: function() {...}
- * });
- *
- * @internal
- */
- var ANONYMOUS = '<<anonymous>>';
- // Important!
- // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
- var ReactPropTypes = {
- array: createPrimitiveTypeChecker('array'),
- bigint: createPrimitiveTypeChecker('bigint'),
- bool: createPrimitiveTypeChecker('boolean'),
- func: createPrimitiveTypeChecker('function'),
- number: createPrimitiveTypeChecker('number'),
- object: createPrimitiveTypeChecker('object'),
- string: createPrimitiveTypeChecker('string'),
- symbol: createPrimitiveTypeChecker('symbol'),
- any: createAnyTypeChecker(),
- arrayOf: createArrayOfTypeChecker,
- element: createElementTypeChecker(),
- elementType: createElementTypeTypeChecker(),
- instanceOf: createInstanceTypeChecker,
- node: createNodeChecker(),
- objectOf: createObjectOfTypeChecker,
- oneOf: createEnumTypeChecker,
- oneOfType: createUnionTypeChecker,
- shape: createShapeTypeChecker,
- exact: createStrictShapeTypeChecker,
- };
- /**
- * inlined Object.is polyfill to avoid requiring consumers ship their own
- * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
- */
- /*eslint-disable no-self-compare*/
- function is(x, y) {
- // SameValue algorithm
- if (x === y) {
- // Steps 1-5, 7-10
- // Steps 6.b-6.e: +0 != -0
- return x !== 0 || 1 / x === 1 / y;
- } else {
- // Step 6.a: NaN == NaN
- return x !== x && y !== y;
- }
- }
- /*eslint-enable no-self-compare*/
- /**
- * We use an Error-like object for backward compatibility as people may call
- * PropTypes directly and inspect their output. However, we don't use real
- * Errors anymore. We don't inspect their stack anyway, and creating them
- * is prohibitively expensive if they are created too often, such as what
- * happens in oneOfType() for any type before the one that matched.
- */
- function PropTypeError(message, data) {
- this.message = message;
- this.data = data && typeof data === 'object' ? data: {};
- this.stack = '';
- }
- // Make `instanceof Error` still work for returned errors.
- PropTypeError.prototype = Error.prototype;
- function createChainableTypeChecker(validate) {
- if (true) {
- var manualPropTypeCallCache = {};
- var manualPropTypeWarningCount = 0;
- }
- function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
- componentName = componentName || ANONYMOUS;
- propFullName = propFullName || propName;
- if (secret !== ReactPropTypesSecret) {
- if (throwOnDirectAccess) {
- // New behavior only for users of `prop-types` package
- var err = new Error(
- 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
- 'Use `PropTypes.checkPropTypes()` to call them. ' +
- 'Read more at http://fb.me/use-check-prop-types'
- );
- err.name = 'Invariant Violation';
- throw err;
- } else if ( true && typeof console !== 'undefined') {
- // Old behavior for people using React.PropTypes
- var cacheKey = componentName + ':' + propName;
- if (
- !manualPropTypeCallCache[cacheKey] &&
- // Avoid spamming the console because they are often not actionable except for lib authors
- manualPropTypeWarningCount < 3
- ) {
- printWarning(
- 'You are manually calling a React.PropTypes validation ' +
- 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +
- 'and will throw in the standalone `prop-types` package. ' +
- 'You may be seeing this warning due to a third-party PropTypes ' +
- 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
- );
- manualPropTypeCallCache[cacheKey] = true;
- manualPropTypeWarningCount++;
- }
- }
- }
- if (props[propName] == null) {
- if (isRequired) {
- if (props[propName] === null) {
- return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
- }
- return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
- }
- return null;
- } else {
- return validate(props, propName, componentName, location, propFullName);
- }
- }
- var chainedCheckType = checkType.bind(null, false);
- chainedCheckType.isRequired = checkType.bind(null, true);
- return chainedCheckType;
- }
- function createPrimitiveTypeChecker(expectedType) {
- function validate(props, propName, componentName, location, propFullName, secret) {
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== expectedType) {
- // `propValue` being instance of, say, date/regexp, pass the 'object'
- // check, but we can offer a more precise error message here rather than
- // 'of type `object`'.
- var preciseType = getPreciseType(propValue);
- return new PropTypeError(
- 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),
- {expectedType: expectedType}
- );
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createAnyTypeChecker() {
- return createChainableTypeChecker(emptyFunctionThatReturnsNull);
- }
- function createArrayOfTypeChecker(typeChecker) {
- function validate(props, propName, componentName, location, propFullName) {
- if (typeof typeChecker !== 'function') {
- return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
- }
- var propValue = props[propName];
- if (!Array.isArray(propValue)) {
- var propType = getPropType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
- }
- for (var i = 0; i < propValue.length; i++) {
- var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
- if (error instanceof Error) {
- return error;
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createElementTypeChecker() {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- if (!isValidElement(propValue)) {
- var propType = getPropType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createElementTypeTypeChecker() {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- if (!ReactIs.isValidElementType(propValue)) {
- var propType = getPropType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createInstanceTypeChecker(expectedClass) {
- function validate(props, propName, componentName, location, propFullName) {
- if (!(props[propName] instanceof expectedClass)) {
- var expectedClassName = expectedClass.name || ANONYMOUS;
- var actualClassName = getClassName(props[propName]);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createEnumTypeChecker(expectedValues) {
- if (!Array.isArray(expectedValues)) {
- if (true) {
- if (arguments.length > 1) {
- printWarning(
- 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
- 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
- );
- } else {
- printWarning('Invalid argument supplied to oneOf, expected an array.');
- }
- }
- return emptyFunctionThatReturnsNull;
- }
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- for (var i = 0; i < expectedValues.length; i++) {
- if (is(propValue, expectedValues[i])) {
- return null;
- }
- }
- var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
- var type = getPreciseType(value);
- if (type === 'symbol') {
- return String(value);
- }
- return value;
- });
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
- }
- return createChainableTypeChecker(validate);
- }
- function createObjectOfTypeChecker(typeChecker) {
- function validate(props, propName, componentName, location, propFullName) {
- if (typeof typeChecker !== 'function') {
- return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
- }
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== 'object') {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
- }
- for (var key in propValue) {
- if (has(propValue, key)) {
- var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
- if (error instanceof Error) {
- return error;
- }
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createUnionTypeChecker(arrayOfTypeCheckers) {
- if (!Array.isArray(arrayOfTypeCheckers)) {
- true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;
- return emptyFunctionThatReturnsNull;
- }
- for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
- var checker = arrayOfTypeCheckers[i];
- if (typeof checker !== 'function') {
- printWarning(
- 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
- 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
- );
- return emptyFunctionThatReturnsNull;
- }
- }
- function validate(props, propName, componentName, location, propFullName) {
- var expectedTypes = [];
- for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
- var checker = arrayOfTypeCheckers[i];
- var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);
- if (checkerResult == null) {
- return null;
- }
- if (checkerResult.data && has(checkerResult.data, 'expectedType')) {
- expectedTypes.push(checkerResult.data.expectedType);
- }
- }
- var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));
- }
- return createChainableTypeChecker(validate);
- }
- function createNodeChecker() {
- function validate(props, propName, componentName, location, propFullName) {
- if (!isNode(props[propName])) {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function invalidValidatorError(componentName, location, propFullName, key, type) {
- return new PropTypeError(
- (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +
- 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'
- );
- }
- function createShapeTypeChecker(shapeTypes) {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== 'object') {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
- }
- for (var key in shapeTypes) {
- var checker = shapeTypes[key];
- if (typeof checker !== 'function') {
- return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
- }
- var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
- if (error) {
- return error;
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createStrictShapeTypeChecker(shapeTypes) {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== 'object') {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
- }
- // We need to check all keys in case some are required but missing from props.
- var allKeys = assign({}, props[propName], shapeTypes);
- for (var key in allKeys) {
- var checker = shapeTypes[key];
- if (has(shapeTypes, key) && typeof checker !== 'function') {
- return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
- }
- if (!checker) {
- return new PropTypeError(
- 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
- '\nBad object: ' + JSON.stringify(props[propName], null, ' ') +
- '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')
- );
- }
- var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
- if (error) {
- return error;
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function isNode(propValue) {
- switch (typeof propValue) {
- case 'number':
- case 'string':
- case 'undefined':
- return true;
- case 'boolean':
- return !propValue;
- case 'object':
- if (Array.isArray(propValue)) {
- return propValue.every(isNode);
- }
- if (propValue === null || isValidElement(propValue)) {
- return true;
- }
- var iteratorFn = getIteratorFn(propValue);
- if (iteratorFn) {
- var iterator = iteratorFn.call(propValue);
- var step;
- if (iteratorFn !== propValue.entries) {
- while (!(step = iterator.next()).done) {
- if (!isNode(step.value)) {
- return false;
- }
- }
- } else {
- // Iterator will provide entry [k,v] tuples rather than values.
- while (!(step = iterator.next()).done) {
- var entry = step.value;
- if (entry) {
- if (!isNode(entry[1])) {
- return false;
- }
- }
- }
- }
- } else {
- return false;
- }
- return true;
- default:
- return false;
- }
- }
- function isSymbol(propType, propValue) {
- // Native Symbol.
- if (propType === 'symbol') {
- return true;
- }
- // falsy value can't be a Symbol
- if (!propValue) {
- return false;
- }
- // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
- if (propValue['@@toStringTag'] === 'Symbol') {
- return true;
- }
- // Fallback for non-spec compliant Symbols which are polyfilled.
- if (typeof Symbol === 'function' && propValue instanceof Symbol) {
- return true;
- }
- return false;
- }
- // Equivalent of `typeof` but with special handling for array and regexp.
- function getPropType(propValue) {
- var propType = typeof propValue;
- if (Array.isArray(propValue)) {
- return 'array';
- }
- if (propValue instanceof RegExp) {
- // Old webkits (at least until Android 4.0) return 'function' rather than
- // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
- // passes PropTypes.object.
- return 'object';
- }
- if (isSymbol(propType, propValue)) {
- return 'symbol';
- }
- return propType;
- }
- // This handles more types than `getPropType`. Only used for error messages.
- // See `createPrimitiveTypeChecker`.
- function getPreciseType(propValue) {
- if (typeof propValue === 'undefined' || propValue === null) {
- return '' + propValue;
- }
- var propType = getPropType(propValue);
- if (propType === 'object') {
- if (propValue instanceof Date) {
- return 'date';
- } else if (propValue instanceof RegExp) {
- return 'regexp';
- }
- }
- return propType;
- }
- // Returns a string that is postfixed to a warning about an invalid type.
- // For example, "undefined" or "of type array"
- function getPostfixForTypeWarning(value) {
- var type = getPreciseType(value);
- switch (type) {
- case 'array':
- case 'object':
- return 'an ' + type;
- case 'boolean':
- case 'date':
- case 'regexp':
- return 'a ' + type;
- default:
- return type;
- }
- }
- // Returns class name of the object, if any.
- function getClassName(propValue) {
- if (!propValue.constructor || !propValue.constructor.name) {
- return ANONYMOUS;
- }
- return propValue.constructor.name;
- }
- ReactPropTypes.checkPropTypes = checkPropTypes;
- ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
- ReactPropTypes.PropTypes = ReactPropTypes;
- return ReactPropTypes;
- };
- /***/ }),
- /***/ "./node_modules/prop-types/index.js":
- /*!******************************************!*\
- !*** ./node_modules/prop-types/index.js ***!
- \******************************************/
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- if (true) {
- var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js");
- // By explicitly using `prop-types` you are opting into new development behavior.
- // http://fb.me/prop-types-in-prod
- var throwOnDirectAccess = true;
- module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "./node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
- } else {}
- /***/ }),
- /***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
- /*!*************************************************************!*\
- !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
- \*************************************************************/
- /***/ ((module) => {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
- module.exports = ReactPropTypesSecret;
- /***/ }),
- /***/ "./node_modules/prop-types/lib/has.js":
- /*!********************************************!*\
- !*** ./node_modules/prop-types/lib/has.js ***!
- \********************************************/
- /***/ ((module) => {
- module.exports = Function.call.bind(Object.prototype.hasOwnProperty);
- /***/ }),
- /***/ "./node_modules/react-is/cjs/react-is.development.js":
- /*!***********************************************************!*\
- !*** ./node_modules/react-is/cjs/react-is.development.js ***!
- \***********************************************************/
- /***/ ((__unused_webpack_module, exports) => {
- "use strict";
- /** @license React v16.13.1
- * react-is.development.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- if (true) {
- (function() {
- 'use strict';
- // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
- // nor polyfill, then a plain number is used for performance.
- var hasSymbol = typeof Symbol === 'function' && Symbol.for;
- var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
- var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
- var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
- var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
- var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
- var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
- var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
- // (unstable) APIs that have been removed. Can we remove the symbols?
- var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
- var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
- var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
- var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
- var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
- var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
- var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
- var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
- var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
- var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
- var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
- function isValidElementType(type) {
- return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
- type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
- }
- function typeOf(object) {
- if (typeof object === 'object' && object !== null) {
- var $$typeof = object.$$typeof;
- switch ($$typeof) {
- case REACT_ELEMENT_TYPE:
- var type = object.type;
- switch (type) {
- case REACT_ASYNC_MODE_TYPE:
- case REACT_CONCURRENT_MODE_TYPE:
- case REACT_FRAGMENT_TYPE:
- case REACT_PROFILER_TYPE:
- case REACT_STRICT_MODE_TYPE:
- case REACT_SUSPENSE_TYPE:
- return type;
- default:
- var $$typeofType = type && type.$$typeof;
- switch ($$typeofType) {
- case REACT_CONTEXT_TYPE:
- case REACT_FORWARD_REF_TYPE:
- case REACT_LAZY_TYPE:
- case REACT_MEMO_TYPE:
- case REACT_PROVIDER_TYPE:
- return $$typeofType;
- default:
- return $$typeof;
- }
- }
- case REACT_PORTAL_TYPE:
- return $$typeof;
- }
- }
- return undefined;
- } // AsyncMode is deprecated along with isAsyncMode
- var AsyncMode = REACT_ASYNC_MODE_TYPE;
- var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
- var ContextConsumer = REACT_CONTEXT_TYPE;
- var ContextProvider = REACT_PROVIDER_TYPE;
- var Element = REACT_ELEMENT_TYPE;
- var ForwardRef = REACT_FORWARD_REF_TYPE;
- var Fragment = REACT_FRAGMENT_TYPE;
- var Lazy = REACT_LAZY_TYPE;
- var Memo = REACT_MEMO_TYPE;
- var Portal = REACT_PORTAL_TYPE;
- var Profiler = REACT_PROFILER_TYPE;
- var StrictMode = REACT_STRICT_MODE_TYPE;
- var Suspense = REACT_SUSPENSE_TYPE;
- var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
- function isAsyncMode(object) {
- {
- if (!hasWarnedAboutDeprecatedIsAsyncMode) {
- hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
- console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
- }
- }
- return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
- }
- function isConcurrentMode(object) {
- return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
- }
- function isContextConsumer(object) {
- return typeOf(object) === REACT_CONTEXT_TYPE;
- }
- function isContextProvider(object) {
- return typeOf(object) === REACT_PROVIDER_TYPE;
- }
- function isElement(object) {
- return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
- }
- function isForwardRef(object) {
- return typeOf(object) === REACT_FORWARD_REF_TYPE;
- }
- function isFragment(object) {
- return typeOf(object) === REACT_FRAGMENT_TYPE;
- }
- function isLazy(object) {
- return typeOf(object) === REACT_LAZY_TYPE;
- }
- function isMemo(object) {
- return typeOf(object) === REACT_MEMO_TYPE;
- }
- function isPortal(object) {
- return typeOf(object) === REACT_PORTAL_TYPE;
- }
- function isProfiler(object) {
- return typeOf(object) === REACT_PROFILER_TYPE;
- }
- function isStrictMode(object) {
- return typeOf(object) === REACT_STRICT_MODE_TYPE;
- }
- function isSuspense(object) {
- return typeOf(object) === REACT_SUSPENSE_TYPE;
- }
- exports.AsyncMode = AsyncMode;
- exports.ConcurrentMode = ConcurrentMode;
- exports.ContextConsumer = ContextConsumer;
- exports.ContextProvider = ContextProvider;
- exports.Element = Element;
- exports.ForwardRef = ForwardRef;
- exports.Fragment = Fragment;
- exports.Lazy = Lazy;
- exports.Memo = Memo;
- exports.Portal = Portal;
- exports.Profiler = Profiler;
- exports.StrictMode = StrictMode;
- exports.Suspense = Suspense;
- exports.isAsyncMode = isAsyncMode;
- exports.isConcurrentMode = isConcurrentMode;
- exports.isContextConsumer = isContextConsumer;
- exports.isContextProvider = isContextProvider;
- exports.isElement = isElement;
- exports.isForwardRef = isForwardRef;
- exports.isFragment = isFragment;
- exports.isLazy = isLazy;
- exports.isMemo = isMemo;
- exports.isPortal = isPortal;
- exports.isProfiler = isProfiler;
- exports.isStrictMode = isStrictMode;
- exports.isSuspense = isSuspense;
- exports.isValidElementType = isValidElementType;
- exports.typeOf = typeOf;
- })();
- }
- /***/ }),
- /***/ "./node_modules/react-is/index.js":
- /*!****************************************!*\
- !*** ./node_modules/react-is/index.js ***!
- \****************************************/
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
- "use strict";
- if (false) {} else {
- module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/react-is/cjs/react-is.development.js");
- }
- /***/ }),
- /***/ "./node_modules/react/cjs/react.development.js":
- /*!*****************************************************!*\
- !*** ./node_modules/react/cjs/react.development.js ***!
- \*****************************************************/
- /***/ ((module, exports, __webpack_require__) => {
- "use strict";
- /* module decorator */ module = __webpack_require__.nmd(module);
- /**
- * @license React
- * react.development.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- if (true) {
- (function() {
- 'use strict';
- /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
- if (
- typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
- typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===
- 'function'
- ) {
- __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
- }
- var ReactVersion = '18.2.0';
- // ATTENTION
- // When adding new symbols to this file,
- // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
- // The Symbol used to tag the ReactElement-like types.
- var REACT_ELEMENT_TYPE = Symbol.for('react.element');
- var REACT_PORTAL_TYPE = Symbol.for('react.portal');
- var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
- var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
- var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
- var REACT_PROVIDER_TYPE = Symbol.for('react.provider');
- var REACT_CONTEXT_TYPE = Symbol.for('react.context');
- var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
- var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
- var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
- var REACT_MEMO_TYPE = Symbol.for('react.memo');
- var REACT_LAZY_TYPE = Symbol.for('react.lazy');
- var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
- var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
- var FAUX_ITERATOR_SYMBOL = '@@iterator';
- function getIteratorFn(maybeIterable) {
- if (maybeIterable === null || typeof maybeIterable !== 'object') {
- return null;
- }
- var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
- if (typeof maybeIterator === 'function') {
- return maybeIterator;
- }
- return null;
- }
- /**
- * Keeps track of the current dispatcher.
- */
- var ReactCurrentDispatcher = {
- /**
- * @internal
- * @type {ReactComponent}
- */
- current: null
- };
- /**
- * Keeps track of the current batch's configuration such as how long an update
- * should suspend for if it needs to.
- */
- var ReactCurrentBatchConfig = {
- transition: null
- };
- var ReactCurrentActQueue = {
- current: null,
- // Used to reproduce behavior of `batchedUpdates` in legacy mode.
- isBatchingLegacy: false,
- didScheduleLegacyUpdate: false
- };
- /**
- * Keeps track of the current owner.
- *
- * The current owner is the component who should own any components that are
- * currently being constructed.
- */
- var ReactCurrentOwner = {
- /**
- * @internal
- * @type {ReactComponent}
- */
- current: null
- };
- var ReactDebugCurrentFrame = {};
- var currentExtraStackFrame = null;
- function setExtraStackFrame(stack) {
- {
- currentExtraStackFrame = stack;
- }
- }
- {
- ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {
- {
- currentExtraStackFrame = stack;
- }
- }; // Stack implementation injected by the current renderer.
- ReactDebugCurrentFrame.getCurrentStack = null;
- ReactDebugCurrentFrame.getStackAddendum = function () {
- var stack = ''; // Add an extra top frame while an element is being validated
- if (currentExtraStackFrame) {
- stack += currentExtraStackFrame;
- } // Delegate to the injected renderer-specific implementation
- var impl = ReactDebugCurrentFrame.getCurrentStack;
- if (impl) {
- stack += impl() || '';
- }
- return stack;
- };
- }
- // -----------------------------------------------------------------------------
- var enableScopeAPI = false; // Experimental Create Event Handle API.
- var enableCacheElement = false;
- var enableTransitionTracing = false; // No known bugs, but needs performance testing
- var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber
- // stuff. Intended to enable React core members to more easily debug scheduling
- // issues in DEV builds.
- var enableDebugTracing = false; // Track which Fiber(s) schedule render work.
- var ReactSharedInternals = {
- ReactCurrentDispatcher: ReactCurrentDispatcher,
- ReactCurrentBatchConfig: ReactCurrentBatchConfig,
- ReactCurrentOwner: ReactCurrentOwner
- };
- {
- ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;
- ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;
- }
- // by calls to these methods by a Babel plugin.
- //
- // In PROD (or in packages without access to React internals),
- // they are left as they are instead.
- function warn(format) {
- {
- {
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
- printWarning('warn', format, args);
- }
- }
- }
- function error(format) {
- {
- {
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
- args[_key2 - 1] = arguments[_key2];
- }
- printWarning('error', format, args);
- }
- }
- }
- function printWarning(level, format, args) {
- // When changing this logic, you might want to also
- // update consoleWithStackDev.www.js as well.
- {
- var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
- var stack = ReactDebugCurrentFrame.getStackAddendum();
- if (stack !== '') {
- format += '%s';
- args = args.concat([stack]);
- } // eslint-disable-next-line react-internal/safe-string-coercion
- var argsWithFormat = args.map(function (item) {
- return String(item);
- }); // Careful: RN currently depends on this prefix
- argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
- // breaks IE9: https://github.com/facebook/react/issues/13610
- // eslint-disable-next-line react-internal/no-production-logging
- Function.prototype.apply.call(console[level], console, argsWithFormat);
- }
- }
- var didWarnStateUpdateForUnmountedComponent = {};
- function warnNoop(publicInstance, callerName) {
- {
- var _constructor = publicInstance.constructor;
- var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';
- var warningKey = componentName + "." + callerName;
- if (didWarnStateUpdateForUnmountedComponent[warningKey]) {
- return;
- }
- error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);
- didWarnStateUpdateForUnmountedComponent[warningKey] = true;
- }
- }
- /**
- * This is the abstract API for an update queue.
- */
- var ReactNoopUpdateQueue = {
- /**
- * Checks whether or not this composite component is mounted.
- * @param {ReactClass} publicInstance The instance we want to test.
- * @return {boolean} True if mounted, false otherwise.
- * @protected
- * @final
- */
- isMounted: function (publicInstance) {
- return false;
- },
- /**
- * Forces an update. This should only be invoked when it is known with
- * certainty that we are **not** in a DOM transaction.
- *
- * You may want to call this when you know that some deeper aspect of the
- * component's state has changed but `setState` was not called.
- *
- * This will not invoke `shouldComponentUpdate`, but it will invoke
- * `componentWillUpdate` and `componentDidUpdate`.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {?function} callback Called after component is updated.
- * @param {?string} callerName name of the calling function in the public API.
- * @internal
- */
- enqueueForceUpdate: function (publicInstance, callback, callerName) {
- warnNoop(publicInstance, 'forceUpdate');
- },
- /**
- * Replaces all of the state. Always use this or `setState` to mutate state.
- * You should treat `this.state` as immutable.
- *
- * There is no guarantee that `this.state` will be immediately updated, so
- * accessing `this.state` after calling this method may return the old value.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {object} completeState Next state.
- * @param {?function} callback Called after component is updated.
- * @param {?string} callerName name of the calling function in the public API.
- * @internal
- */
- enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {
- warnNoop(publicInstance, 'replaceState');
- },
- /**
- * Sets a subset of the state. This only exists because _pendingState is
- * internal. This provides a merging strategy that is not available to deep
- * properties which is confusing. TODO: Expose pendingState or don't use it
- * during the merge.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {object} partialState Next partial state to be merged with state.
- * @param {?function} callback Called after component is updated.
- * @param {?string} Name of the calling function in the public API.
- * @internal
- */
- enqueueSetState: function (publicInstance, partialState, callback, callerName) {
- warnNoop(publicInstance, 'setState');
- }
- };
- var assign = Object.assign;
- var emptyObject = {};
- {
- Object.freeze(emptyObject);
- }
- /**
- * Base class helpers for the updating state of a component.
- */
- function Component(props, context, updater) {
- this.props = props;
- this.context = context; // If a component has string refs, we will assign a different object later.
- this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the
- // renderer.
- this.updater = updater || ReactNoopUpdateQueue;
- }
- Component.prototype.isReactComponent = {};
- /**
- * Sets a subset of the state. Always use this to mutate
- * state. You should treat `this.state` as immutable.
- *
- * There is no guarantee that `this.state` will be immediately updated, so
- * accessing `this.state` after calling this method may return the old value.
- *
- * There is no guarantee that calls to `setState` will run synchronously,
- * as they may eventually be batched together. You can provide an optional
- * callback that will be executed when the call to setState is actually
- * completed.
- *
- * When a function is provided to setState, it will be called at some point in
- * the future (not synchronously). It will be called with the up to date
- * component arguments (state, props, context). These values can be different
- * from this.* because your function may be called after receiveProps but before
- * shouldComponentUpdate, and this new state, props, and context will not yet be
- * assigned to this.
- *
- * @param {object|function} partialState Next partial state or function to
- * produce next partial state to be merged with current state.
- * @param {?function} callback Called after state is updated.
- * @final
- * @protected
- */
- Component.prototype.setState = function (partialState, callback) {
- if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {
- throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');
- }
- this.updater.enqueueSetState(this, partialState, callback, 'setState');
- };
- /**
- * Forces an update. This should only be invoked when it is known with
- * certainty that we are **not** in a DOM transaction.
- *
- * You may want to call this when you know that some deeper aspect of the
- * component's state has changed but `setState` was not called.
- *
- * This will not invoke `shouldComponentUpdate`, but it will invoke
- * `componentWillUpdate` and `componentDidUpdate`.
- *
- * @param {?function} callback Called after update is complete.
- * @final
- * @protected
- */
- Component.prototype.forceUpdate = function (callback) {
- this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
- };
- /**
- * Deprecated APIs. These APIs used to exist on classic React classes but since
- * we would like to deprecate them, we're not going to move them over to this
- * modern base class. Instead, we define a getter that warns if it's accessed.
- */
- {
- var deprecatedAPIs = {
- isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
- replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
- };
- var defineDeprecationWarning = function (methodName, info) {
- Object.defineProperty(Component.prototype, methodName, {
- get: function () {
- warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);
- return undefined;
- }
- });
- };
- for (var fnName in deprecatedAPIs) {
- if (deprecatedAPIs.hasOwnProperty(fnName)) {
- defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
- }
- }
- }
- function ComponentDummy() {}
- ComponentDummy.prototype = Component.prototype;
- /**
- * Convenience component with default shallow equality check for sCU.
- */
- function PureComponent(props, context, updater) {
- this.props = props;
- this.context = context; // If a component has string refs, we will assign a different object later.
- this.refs = emptyObject;
- this.updater = updater || ReactNoopUpdateQueue;
- }
- var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
- pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.
- assign(pureComponentPrototype, Component.prototype);
- pureComponentPrototype.isPureReactComponent = true;
- // an immutable object with a single mutable value
- function createRef() {
- var refObject = {
- current: null
- };
- {
- Object.seal(refObject);
- }
- return refObject;
- }
- var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare
- function isArray(a) {
- return isArrayImpl(a);
- }
- /*
- * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol
- * and Temporal.* types. See https://github.com/facebook/react/pull/22064.
- *
- * The functions in this module will throw an easier-to-understand,
- * easier-to-debug exception with a clear errors message message explaining the
- * problem. (Instead of a confusing exception thrown inside the implementation
- * of the `value` object).
- */
- // $FlowFixMe only called in DEV, so void return is not possible.
- function typeName(value) {
- {
- // toStringTag is needed for namespaced types like Temporal.Instant
- var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;
- var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';
- return type;
- }
- } // $FlowFixMe only called in DEV, so void return is not possible.
- function willCoercionThrow(value) {
- {
- try {
- testStringCoercion(value);
- return false;
- } catch (e) {
- return true;
- }
- }
- }
- function testStringCoercion(value) {
- // If you ended up here by following an exception call stack, here's what's
- // happened: you supplied an object or symbol value to React (as a prop, key,
- // DOM attribute, CSS property, string ref, etc.) and when React tried to
- // coerce it to a string using `'' + value`, an exception was thrown.
- //
- // The most common types that will cause this exception are `Symbol` instances
- // and Temporal objects like `Temporal.Instant`. But any object that has a
- // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this
- // exception. (Library authors do this to prevent users from using built-in
- // numeric operators like `+` or comparison operators like `>=` because custom
- // methods are needed to perform accurate arithmetic or comparison.)
- //
- // To fix the problem, coerce this object or symbol value to a string before
- // passing it to React. The most reliable way is usually `String(value)`.
- //
- // To find which value is throwing, check the browser or debugger console.
- // Before this exception was thrown, there should be `console.error` output
- // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the
- // problem and how that type was used: key, atrribute, input value prop, etc.
- // In most cases, this console output also shows the component and its
- // ancestor components where the exception happened.
- //
- // eslint-disable-next-line react-internal/safe-string-coercion
- return '' + value;
- }
- function checkKeyStringCoercion(value) {
- {
- if (willCoercionThrow(value)) {
- error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));
- return testStringCoercion(value); // throw (to help callers find troubleshooting comments)
- }
- }
- }
- function getWrappedName(outerType, innerType, wrapperName) {
- var displayName = outerType.displayName;
- if (displayName) {
- return displayName;
- }
- var functionName = innerType.displayName || innerType.name || '';
- return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName;
- } // Keep in sync with react-reconciler/getComponentNameFromFiber
- function getContextName(type) {
- return type.displayName || 'Context';
- } // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.
- function getComponentNameFromType(type) {
- if (type == null) {
- // Host root, text node or just invalid type.
- return null;
- }
- {
- if (typeof type.tag === 'number') {
- error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');
- }
- }
- if (typeof type === 'function') {
- return type.displayName || type.name || null;
- }
- if (typeof type === 'string') {
- return type;
- }
- switch (type) {
- case REACT_FRAGMENT_TYPE:
- return 'Fragment';
- case REACT_PORTAL_TYPE:
- return 'Portal';
- case REACT_PROFILER_TYPE:
- return 'Profiler';
- case REACT_STRICT_MODE_TYPE:
- return 'StrictMode';
- case REACT_SUSPENSE_TYPE:
- return 'Suspense';
- case REACT_SUSPENSE_LIST_TYPE:
- return 'SuspenseList';
- }
- if (typeof type === 'object') {
- switch (type.$$typeof) {
- case REACT_CONTEXT_TYPE:
- var context = type;
- return getContextName(context) + '.Consumer';
- case REACT_PROVIDER_TYPE:
- var provider = type;
- return getContextName(provider._context) + '.Provider';
- case REACT_FORWARD_REF_TYPE:
- return getWrappedName(type, type.render, 'ForwardRef');
- case REACT_MEMO_TYPE:
- var outerName = type.displayName || null;
- if (outerName !== null) {
- return outerName;
- }
- return getComponentNameFromType(type.type) || 'Memo';
- case REACT_LAZY_TYPE:
- {
- var lazyComponent = type;
- var payload = lazyComponent._payload;
- var init = lazyComponent._init;
- try {
- return getComponentNameFromType(init(payload));
- } catch (x) {
- return null;
- }
- }
- // eslint-disable-next-line no-fallthrough
- }
- }
- return null;
- }
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- var RESERVED_PROPS = {
- key: true,
- ref: true,
- __self: true,
- __source: true
- };
- var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;
- {
- didWarnAboutStringRefs = {};
- }
- function hasValidRef(config) {
- {
- if (hasOwnProperty.call(config, 'ref')) {
- var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
- if (getter && getter.isReactWarning) {
- return false;
- }
- }
- }
- return config.ref !== undefined;
- }
- function hasValidKey(config) {
- {
- if (hasOwnProperty.call(config, 'key')) {
- var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
- if (getter && getter.isReactWarning) {
- return false;
- }
- }
- }
- return config.key !== undefined;
- }
- function defineKeyPropWarningGetter(props, displayName) {
- var warnAboutAccessingKey = function () {
- {
- if (!specialPropKeyWarningShown) {
- specialPropKeyWarningShown = true;
- error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
- }
- }
- };
- warnAboutAccessingKey.isReactWarning = true;
- Object.defineProperty(props, 'key', {
- get: warnAboutAccessingKey,
- configurable: true
- });
- }
- function defineRefPropWarningGetter(props, displayName) {
- var warnAboutAccessingRef = function () {
- {
- if (!specialPropRefWarningShown) {
- specialPropRefWarningShown = true;
- error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
- }
- }
- };
- warnAboutAccessingRef.isReactWarning = true;
- Object.defineProperty(props, 'ref', {
- get: warnAboutAccessingRef,
- configurable: true
- });
- }
- function warnIfStringRefCannotBeAutoConverted(config) {
- {
- if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {
- var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);
- if (!didWarnAboutStringRefs[componentName]) {
- error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);
- didWarnAboutStringRefs[componentName] = true;
- }
- }
- }
- }
- /**
- * Factory method to create a new React element. This no longer adheres to
- * the class pattern, so do not use new to call it. Also, instanceof check
- * will not work. Instead test $$typeof field against Symbol.for('react.element') to check
- * if something is a React Element.
- *
- * @param {*} type
- * @param {*} props
- * @param {*} key
- * @param {string|object} ref
- * @param {*} owner
- * @param {*} self A *temporary* helper to detect places where `this` is
- * different from the `owner` when React.createElement is called, so that we
- * can warn. We want to get rid of owner and replace string `ref`s with arrow
- * functions, and as long as `this` and owner are the same, there will be no
- * change in behavior.
- * @param {*} source An annotation object (added by a transpiler or otherwise)
- * indicating filename, line number, and/or other information.
- * @internal
- */
- var ReactElement = function (type, key, ref, self, source, owner, props) {
- var element = {
- // This tag allows us to uniquely identify this as a React Element
- $$typeof: REACT_ELEMENT_TYPE,
- // Built-in properties that belong on the element
- type: type,
- key: key,
- ref: ref,
- props: props,
- // Record the component responsible for creating this element.
- _owner: owner
- };
- {
- // The validation flag is currently mutative. We put it on
- // an external backing store so that we can freeze the whole object.
- // This can be replaced with a WeakMap once they are implemented in
- // commonly used development environments.
- element._store = {}; // To make comparing ReactElements easier for testing purposes, we make
- // the validation flag non-enumerable (where possible, which should
- // include every environment we run tests in), so the test framework
- // ignores it.
- Object.defineProperty(element._store, 'validated', {
- configurable: false,
- enumerable: false,
- writable: true,
- value: false
- }); // self and source are DEV only properties.
- Object.defineProperty(element, '_self', {
- configurable: false,
- enumerable: false,
- writable: false,
- value: self
- }); // Two elements created in two different places should be considered
- // equal for testing purposes and therefore we hide it from enumeration.
- Object.defineProperty(element, '_source', {
- configurable: false,
- enumerable: false,
- writable: false,
- value: source
- });
- if (Object.freeze) {
- Object.freeze(element.props);
- Object.freeze(element);
- }
- }
- return element;
- };
- /**
- * Create and return a new ReactElement of the given type.
- * See https://reactjs.org/docs/react-api.html#createelement
- */
- function createElement(type, config, children) {
- var propName; // Reserved names are extracted
- var props = {};
- var key = null;
- var ref = null;
- var self = null;
- var source = null;
- if (config != null) {
- if (hasValidRef(config)) {
- ref = config.ref;
- {
- warnIfStringRefCannotBeAutoConverted(config);
- }
- }
- if (hasValidKey(config)) {
- {
- checkKeyStringCoercion(config.key);
- }
- key = '' + config.key;
- }
- self = config.__self === undefined ? null : config.__self;
- source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object
- for (propName in config) {
- if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
- props[propName] = config[propName];
- }
- }
- } // Children can be more than one argument, and those are transferred onto
- // the newly allocated props object.
- var childrenLength = arguments.length - 2;
- if (childrenLength === 1) {
- props.children = children;
- } else if (childrenLength > 1) {
- var childArray = Array(childrenLength);
- for (var i = 0; i < childrenLength; i++) {
- childArray[i] = arguments[i + 2];
- }
- {
- if (Object.freeze) {
- Object.freeze(childArray);
- }
- }
- props.children = childArray;
- } // Resolve default props
- if (type && type.defaultProps) {
- var defaultProps = type.defaultProps;
- for (propName in defaultProps) {
- if (props[propName] === undefined) {
- props[propName] = defaultProps[propName];
- }
- }
- }
- {
- if (key || ref) {
- var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
- if (key) {
- defineKeyPropWarningGetter(props, displayName);
- }
- if (ref) {
- defineRefPropWarningGetter(props, displayName);
- }
- }
- }
- return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
- }
- function cloneAndReplaceKey(oldElement, newKey) {
- var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
- return newElement;
- }
- /**
- * Clone and return a new ReactElement using element as the starting point.
- * See https://reactjs.org/docs/react-api.html#cloneelement
- */
- function cloneElement(element, config, children) {
- if (element === null || element === undefined) {
- throw new Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + ".");
- }
- var propName; // Original props are copied
- var props = assign({}, element.props); // Reserved names are extracted
- var key = element.key;
- var ref = element.ref; // Self is preserved since the owner is preserved.
- var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a
- // transpiler, and the original source is probably a better indicator of the
- // true owner.
- var source = element._source; // Owner will be preserved, unless ref is overridden
- var owner = element._owner;
- if (config != null) {
- if (hasValidRef(config)) {
- // Silently steal the ref from the parent.
- ref = config.ref;
- owner = ReactCurrentOwner.current;
- }
- if (hasValidKey(config)) {
- {
- checkKeyStringCoercion(config.key);
- }
- key = '' + config.key;
- } // Remaining properties override existing props
- var defaultProps;
- if (element.type && element.type.defaultProps) {
- defaultProps = element.type.defaultProps;
- }
- for (propName in config) {
- if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
- if (config[propName] === undefined && defaultProps !== undefined) {
- // Resolve default props
- props[propName] = defaultProps[propName];
- } else {
- props[propName] = config[propName];
- }
- }
- }
- } // Children can be more than one argument, and those are transferred onto
- // the newly allocated props object.
- var childrenLength = arguments.length - 2;
- if (childrenLength === 1) {
- props.children = children;
- } else if (childrenLength > 1) {
- var childArray = Array(childrenLength);
- for (var i = 0; i < childrenLength; i++) {
- childArray[i] = arguments[i + 2];
- }
- props.children = childArray;
- }
- return ReactElement(element.type, key, ref, self, source, owner, props);
- }
- /**
- * Verifies the object is a ReactElement.
- * See https://reactjs.org/docs/react-api.html#isvalidelement
- * @param {?object} object
- * @return {boolean} True if `object` is a ReactElement.
- * @final
- */
- function isValidElement(object) {
- return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
- }
- var SEPARATOR = '.';
- var SUBSEPARATOR = ':';
- /**
- * Escape and wrap key so it is safe to use as a reactid
- *
- * @param {string} key to be escaped.
- * @return {string} the escaped key.
- */
- function escape(key) {
- var escapeRegex = /[=:]/g;
- var escaperLookup = {
- '=': '=0',
- ':': '=2'
- };
- var escapedString = key.replace(escapeRegex, function (match) {
- return escaperLookup[match];
- });
- return '$' + escapedString;
- }
- /**
- * TODO: Test that a single child and an array with one item have the same key
- * pattern.
- */
- var didWarnAboutMaps = false;
- var userProvidedKeyEscapeRegex = /\/+/g;
- function escapeUserProvidedKey(text) {
- return text.replace(userProvidedKeyEscapeRegex, '$&/');
- }
- /**
- * Generate a key string that identifies a element within a set.
- *
- * @param {*} element A element that could contain a manual key.
- * @param {number} index Index that is used if a manual key is not provided.
- * @return {string}
- */
- function getElementKey(element, index) {
- // Do some typechecking here since we call this blindly. We want to ensure
- // that we don't block potential future ES APIs.
- if (typeof element === 'object' && element !== null && element.key != null) {
- // Explicit key
- {
- checkKeyStringCoercion(element.key);
- }
- return escape('' + element.key);
- } // Implicit key determined by the index in the set
- return index.toString(36);
- }
- function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
- var type = typeof children;
- if (type === 'undefined' || type === 'boolean') {
- // All of the above are perceived as null.
- children = null;
- }
- var invokeCallback = false;
- if (children === null) {
- invokeCallback = true;
- } else {
- switch (type) {
- case 'string':
- case 'number':
- invokeCallback = true;
- break;
- case 'object':
- switch (children.$$typeof) {
- case REACT_ELEMENT_TYPE:
- case REACT_PORTAL_TYPE:
- invokeCallback = true;
- }
- }
- }
- if (invokeCallback) {
- var _child = children;
- var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array
- // so that it's consistent if the number of children grows:
- var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;
- if (isArray(mappedChild)) {
- var escapedChildKey = '';
- if (childKey != null) {
- escapedChildKey = escapeUserProvidedKey(childKey) + '/';
- }
- mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {
- return c;
- });
- } else if (mappedChild != null) {
- if (isValidElement(mappedChild)) {
- {
- // The `if` statement here prevents auto-disabling of the safe
- // coercion ESLint rule, so we must manually disable it below.
- // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key
- if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {
- checkKeyStringCoercion(mappedChild.key);
- }
- }
- mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as
- // traverseAllChildren used to do for objects as children
- escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key
- mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number
- // eslint-disable-next-line react-internal/safe-string-coercion
- escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);
- }
- array.push(mappedChild);
- }
- return 1;
- }
- var child;
- var nextName;
- var subtreeCount = 0; // Count of children found in the current subtree.
- var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
- if (isArray(children)) {
- for (var i = 0; i < children.length; i++) {
- child = children[i];
- nextName = nextNamePrefix + getElementKey(child, i);
- subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
- }
- } else {
- var iteratorFn = getIteratorFn(children);
- if (typeof iteratorFn === 'function') {
- var iterableChildren = children;
- {
- // Warn about using Maps as children
- if (iteratorFn === iterableChildren.entries) {
- if (!didWarnAboutMaps) {
- warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');
- }
- didWarnAboutMaps = true;
- }
- }
- var iterator = iteratorFn.call(iterableChildren);
- var step;
- var ii = 0;
- while (!(step = iterator.next()).done) {
- child = step.value;
- nextName = nextNamePrefix + getElementKey(child, ii++);
- subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
- }
- } else if (type === 'object') {
- // eslint-disable-next-line react-internal/safe-string-coercion
- var childrenString = String(children);
- throw new Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). " + 'If you meant to render a collection of children, use an array ' + 'instead.');
- }
- }
- return subtreeCount;
- }
- /**
- * Maps children that are typically specified as `props.children`.
- *
- * See https://reactjs.org/docs/react-api.html#reactchildrenmap
- *
- * The provided mapFunction(child, index) will be called for each
- * leaf child.
- *
- * @param {?*} children Children tree container.
- * @param {function(*, int)} func The map function.
- * @param {*} context Context for mapFunction.
- * @return {object} Object containing the ordered map of results.
- */
- function mapChildren(children, func, context) {
- if (children == null) {
- return children;
- }
- var result = [];
- var count = 0;
- mapIntoArray(children, result, '', '', function (child) {
- return func.call(context, child, count++);
- });
- return result;
- }
- /**
- * Count the number of children that are typically specified as
- * `props.children`.
- *
- * See https://reactjs.org/docs/react-api.html#reactchildrencount
- *
- * @param {?*} children Children tree container.
- * @return {number} The number of children.
- */
- function countChildren(children) {
- var n = 0;
- mapChildren(children, function () {
- n++; // Don't return anything
- });
- return n;
- }
- /**
- * Iterates through children that are typically specified as `props.children`.
- *
- * See https://reactjs.org/docs/react-api.html#reactchildrenforeach
- *
- * The provided forEachFunc(child, index) will be called for each
- * leaf child.
- *
- * @param {?*} children Children tree container.
- * @param {function(*, int)} forEachFunc
- * @param {*} forEachContext Context for forEachContext.
- */
- function forEachChildren(children, forEachFunc, forEachContext) {
- mapChildren(children, function () {
- forEachFunc.apply(this, arguments); // Don't return anything.
- }, forEachContext);
- }
- /**
- * Flatten a children object (typically specified as `props.children`) and
- * return an array with appropriately re-keyed children.
- *
- * See https://reactjs.org/docs/react-api.html#reactchildrentoarray
- */
- function toArray(children) {
- return mapChildren(children, function (child) {
- return child;
- }) || [];
- }
- /**
- * Returns the first child in a collection of children and verifies that there
- * is only one child in the collection.
- *
- * See https://reactjs.org/docs/react-api.html#reactchildrenonly
- *
- * The current implementation of this function assumes that a single child gets
- * passed without a wrapper, but the purpose of this helper function is to
- * abstract away the particular structure of children.
- *
- * @param {?object} children Child collection structure.
- * @return {ReactElement} The first and only `ReactElement` contained in the
- * structure.
- */
- function onlyChild(children) {
- if (!isValidElement(children)) {
- throw new Error('React.Children.only expected to receive a single React element child.');
- }
- return children;
- }
- function createContext(defaultValue) {
- // TODO: Second argument used to be an optional `calculateChangedBits`
- // function. Warn to reserve for future use?
- var context = {
- $$typeof: REACT_CONTEXT_TYPE,
- // As a workaround to support multiple concurrent renderers, we categorize
- // some renderers as primary and others as secondary. We only expect
- // there to be two concurrent renderers at most: React Native (primary) and
- // Fabric (secondary); React DOM (primary) and React ART (secondary).
- // Secondary renderers store their context values on separate fields.
- _currentValue: defaultValue,
- _currentValue2: defaultValue,
- // Used to track how many concurrent renderers this context currently
- // supports within in a single renderer. Such as parallel server rendering.
- _threadCount: 0,
- // These are circular
- Provider: null,
- Consumer: null,
- // Add these to use same hidden class in VM as ServerContext
- _defaultValue: null,
- _globalName: null
- };
- context.Provider = {
- $$typeof: REACT_PROVIDER_TYPE,
- _context: context
- };
- var hasWarnedAboutUsingNestedContextConsumers = false;
- var hasWarnedAboutUsingConsumerProvider = false;
- var hasWarnedAboutDisplayNameOnConsumer = false;
- {
- // A separate object, but proxies back to the original context object for
- // backwards compatibility. It has a different $$typeof, so we can properly
- // warn for the incorrect usage of Context as a Consumer.
- var Consumer = {
- $$typeof: REACT_CONTEXT_TYPE,
- _context: context
- }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here
- Object.defineProperties(Consumer, {
- Provider: {
- get: function () {
- if (!hasWarnedAboutUsingConsumerProvider) {
- hasWarnedAboutUsingConsumerProvider = true;
- error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');
- }
- return context.Provider;
- },
- set: function (_Provider) {
- context.Provider = _Provider;
- }
- },
- _currentValue: {
- get: function () {
- return context._currentValue;
- },
- set: function (_currentValue) {
- context._currentValue = _currentValue;
- }
- },
- _currentValue2: {
- get: function () {
- return context._currentValue2;
- },
- set: function (_currentValue2) {
- context._currentValue2 = _currentValue2;
- }
- },
- _threadCount: {
- get: function () {
- return context._threadCount;
- },
- set: function (_threadCount) {
- context._threadCount = _threadCount;
- }
- },
- Consumer: {
- get: function () {
- if (!hasWarnedAboutUsingNestedContextConsumers) {
- hasWarnedAboutUsingNestedContextConsumers = true;
- error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');
- }
- return context.Consumer;
- }
- },
- displayName: {
- get: function () {
- return context.displayName;
- },
- set: function (displayName) {
- if (!hasWarnedAboutDisplayNameOnConsumer) {
- warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName);
- hasWarnedAboutDisplayNameOnConsumer = true;
- }
- }
- }
- }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty
- context.Consumer = Consumer;
- }
- {
- context._currentRenderer = null;
- context._currentRenderer2 = null;
- }
- return context;
- }
- var Uninitialized = -1;
- var Pending = 0;
- var Resolved = 1;
- var Rejected = 2;
- function lazyInitializer(payload) {
- if (payload._status === Uninitialized) {
- var ctor = payload._result;
- var thenable = ctor(); // Transition to the next state.
- // This might throw either because it's missing or throws. If so, we treat it
- // as still uninitialized and try again next time. Which is the same as what
- // happens if the ctor or any wrappers processing the ctor throws. This might
- // end up fixing it if the resolution was a concurrency bug.
- thenable.then(function (moduleObject) {
- if (payload._status === Pending || payload._status === Uninitialized) {
- // Transition to the next state.
- var resolved = payload;
- resolved._status = Resolved;
- resolved._result = moduleObject;
- }
- }, function (error) {
- if (payload._status === Pending || payload._status === Uninitialized) {
- // Transition to the next state.
- var rejected = payload;
- rejected._status = Rejected;
- rejected._result = error;
- }
- });
- if (payload._status === Uninitialized) {
- // In case, we're still uninitialized, then we're waiting for the thenable
- // to resolve. Set it as pending in the meantime.
- var pending = payload;
- pending._status = Pending;
- pending._result = thenable;
- }
- }
- if (payload._status === Resolved) {
- var moduleObject = payload._result;
- {
- if (moduleObject === undefined) {
- error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies.
- 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))\n\n" + 'Did you accidentally put curly braces around the import?', moduleObject);
- }
- }
- {
- if (!('default' in moduleObject)) {
- error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies.
- 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject);
- }
- }
- return moduleObject.default;
- } else {
- throw payload._result;
- }
- }
- function lazy(ctor) {
- var payload = {
- // We use these fields to store the result.
- _status: Uninitialized,
- _result: ctor
- };
- var lazyType = {
- $$typeof: REACT_LAZY_TYPE,
- _payload: payload,
- _init: lazyInitializer
- };
- {
- // In production, this would just set it on the object.
- var defaultProps;
- var propTypes; // $FlowFixMe
- Object.defineProperties(lazyType, {
- defaultProps: {
- configurable: true,
- get: function () {
- return defaultProps;
- },
- set: function (newDefaultProps) {
- error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
- defaultProps = newDefaultProps; // Match production behavior more closely:
- // $FlowFixMe
- Object.defineProperty(lazyType, 'defaultProps', {
- enumerable: true
- });
- }
- },
- propTypes: {
- configurable: true,
- get: function () {
- return propTypes;
- },
- set: function (newPropTypes) {
- error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
- propTypes = newPropTypes; // Match production behavior more closely:
- // $FlowFixMe
- Object.defineProperty(lazyType, 'propTypes', {
- enumerable: true
- });
- }
- }
- });
- }
- return lazyType;
- }
- function forwardRef(render) {
- {
- if (render != null && render.$$typeof === REACT_MEMO_TYPE) {
- error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');
- } else if (typeof render !== 'function') {
- error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);
- } else {
- if (render.length !== 0 && render.length !== 2) {
- error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');
- }
- }
- if (render != null) {
- if (render.defaultProps != null || render.propTypes != null) {
- error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');
- }
- }
- }
- var elementType = {
- $$typeof: REACT_FORWARD_REF_TYPE,
- render: render
- };
- {
- var ownName;
- Object.defineProperty(elementType, 'displayName', {
- enumerable: false,
- configurable: true,
- get: function () {
- return ownName;
- },
- set: function (name) {
- ownName = name; // The inner component shouldn't inherit this display name in most cases,
- // because the component may be used elsewhere.
- // But it's nice for anonymous functions to inherit the name,
- // so that our component-stack generation logic will display their frames.
- // An anonymous function generally suggests a pattern like:
- // React.forwardRef((props, ref) => {...});
- // This kind of inner function is not used elsewhere so the side effect is okay.
- if (!render.name && !render.displayName) {
- render.displayName = name;
- }
- }
- });
- }
- return elementType;
- }
- var REACT_MODULE_REFERENCE;
- {
- REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');
- }
- function isValidElementType(type) {
- if (typeof type === 'string' || typeof type === 'function') {
- return true;
- } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
- if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {
- return true;
- }
- if (typeof type === 'object' && type !== null) {
- if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
- // types supported by any Flight configuration anywhere since
- // we don't know which Flight build this will end up being used
- // with.
- type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {
- return true;
- }
- }
- return false;
- }
- function memo(type, compare) {
- {
- if (!isValidElementType(type)) {
- error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);
- }
- }
- var elementType = {
- $$typeof: REACT_MEMO_TYPE,
- type: type,
- compare: compare === undefined ? null : compare
- };
- {
- var ownName;
- Object.defineProperty(elementType, 'displayName', {
- enumerable: false,
- configurable: true,
- get: function () {
- return ownName;
- },
- set: function (name) {
- ownName = name; // The inner component shouldn't inherit this display name in most cases,
- // because the component may be used elsewhere.
- // But it's nice for anonymous functions to inherit the name,
- // so that our component-stack generation logic will display their frames.
- // An anonymous function generally suggests a pattern like:
- // React.memo((props) => {...});
- // This kind of inner function is not used elsewhere so the side effect is okay.
- if (!type.name && !type.displayName) {
- type.displayName = name;
- }
- }
- });
- }
- return elementType;
- }
- function resolveDispatcher() {
- var dispatcher = ReactCurrentDispatcher.current;
- {
- if (dispatcher === null) {
- error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\n' + '2. You might be breaking the Rules of Hooks\n' + '3. You might have more than one copy of React in the same app\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');
- }
- } // Will result in a null access error if accessed outside render phase. We
- // intentionally don't throw our own error because this is in a hot path.
- // Also helps ensure this is inlined.
- return dispatcher;
- }
- function useContext(Context) {
- var dispatcher = resolveDispatcher();
- {
- // TODO: add a more generic warning for invalid values.
- if (Context._context !== undefined) {
- var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs
- // and nobody should be using this in existing code.
- if (realContext.Consumer === Context) {
- error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');
- } else if (realContext.Provider === Context) {
- error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');
- }
- }
- }
- return dispatcher.useContext(Context);
- }
- function useState(initialState) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useState(initialState);
- }
- function useReducer(reducer, initialArg, init) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useReducer(reducer, initialArg, init);
- }
- function useRef(initialValue) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useRef(initialValue);
- }
- function useEffect(create, deps) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useEffect(create, deps);
- }
- function useInsertionEffect(create, deps) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useInsertionEffect(create, deps);
- }
- function useLayoutEffect(create, deps) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useLayoutEffect(create, deps);
- }
- function useCallback(callback, deps) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useCallback(callback, deps);
- }
- function useMemo(create, deps) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useMemo(create, deps);
- }
- function useImperativeHandle(ref, create, deps) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useImperativeHandle(ref, create, deps);
- }
- function useDebugValue(value, formatterFn) {
- {
- var dispatcher = resolveDispatcher();
- return dispatcher.useDebugValue(value, formatterFn);
- }
- }
- function useTransition() {
- var dispatcher = resolveDispatcher();
- return dispatcher.useTransition();
- }
- function useDeferredValue(value) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useDeferredValue(value);
- }
- function useId() {
- var dispatcher = resolveDispatcher();
- return dispatcher.useId();
- }
- function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
- var dispatcher = resolveDispatcher();
- return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
- }
- // Helpers to patch console.logs to avoid logging during side-effect free
- // replaying on render function. This currently only patches the object
- // lazily which won't cover if the log function was extracted eagerly.
- // We could also eagerly patch the method.
- var disabledDepth = 0;
- var prevLog;
- var prevInfo;
- var prevWarn;
- var prevError;
- var prevGroup;
- var prevGroupCollapsed;
- var prevGroupEnd;
- function disabledLog() {}
- disabledLog.__reactDisabledLog = true;
- function disableLogs() {
- {
- if (disabledDepth === 0) {
- /* eslint-disable react-internal/no-production-logging */
- prevLog = console.log;
- prevInfo = console.info;
- prevWarn = console.warn;
- prevError = console.error;
- prevGroup = console.group;
- prevGroupCollapsed = console.groupCollapsed;
- prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099
- var props = {
- configurable: true,
- enumerable: true,
- value: disabledLog,
- writable: true
- }; // $FlowFixMe Flow thinks console is immutable.
- Object.defineProperties(console, {
- info: props,
- log: props,
- warn: props,
- error: props,
- group: props,
- groupCollapsed: props,
- groupEnd: props
- });
- /* eslint-enable react-internal/no-production-logging */
- }
- disabledDepth++;
- }
- }
- function reenableLogs() {
- {
- disabledDepth--;
- if (disabledDepth === 0) {
- /* eslint-disable react-internal/no-production-logging */
- var props = {
- configurable: true,
- enumerable: true,
- writable: true
- }; // $FlowFixMe Flow thinks console is immutable.
- Object.defineProperties(console, {
- log: assign({}, props, {
- value: prevLog
- }),
- info: assign({}, props, {
- value: prevInfo
- }),
- warn: assign({}, props, {
- value: prevWarn
- }),
- error: assign({}, props, {
- value: prevError
- }),
- group: assign({}, props, {
- value: prevGroup
- }),
- groupCollapsed: assign({}, props, {
- value: prevGroupCollapsed
- }),
- groupEnd: assign({}, props, {
- value: prevGroupEnd
- })
- });
- /* eslint-enable react-internal/no-production-logging */
- }
- if (disabledDepth < 0) {
- error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');
- }
- }
- }
- var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;
- var prefix;
- function describeBuiltInComponentFrame(name, source, ownerFn) {
- {
- if (prefix === undefined) {
- // Extract the VM specific prefix used by each line.
- try {
- throw Error();
- } catch (x) {
- var match = x.stack.trim().match(/\n( *(at )?)/);
- prefix = match && match[1] || '';
- }
- } // We use the prefix to ensure our stacks line up with native stack frames.
- return '\n' + prefix + name;
- }
- }
- var reentry = false;
- var componentFrameCache;
- {
- var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
- componentFrameCache = new PossiblyWeakMap();
- }
- function describeNativeComponentFrame(fn, construct) {
- // If something asked for a stack inside a fake render, it should get ignored.
- if ( !fn || reentry) {
- return '';
- }
- {
- var frame = componentFrameCache.get(fn);
- if (frame !== undefined) {
- return frame;
- }
- }
- var control;
- reentry = true;
- var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.
- Error.prepareStackTrace = undefined;
- var previousDispatcher;
- {
- previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function
- // for warnings.
- ReactCurrentDispatcher$1.current = null;
- disableLogs();
- }
- try {
- // This should throw.
- if (construct) {
- // Something should be setting the props in the constructor.
- var Fake = function () {
- throw Error();
- }; // $FlowFixMe
- Object.defineProperty(Fake.prototype, 'props', {
- set: function () {
- // We use a throwing setter instead of frozen or non-writable props
- // because that won't throw in a non-strict mode function.
- throw Error();
- }
- });
- if (typeof Reflect === 'object' && Reflect.construct) {
- // We construct a different control for this case to include any extra
- // frames added by the construct call.
- try {
- Reflect.construct(Fake, []);
- } catch (x) {
- control = x;
- }
- Reflect.construct(fn, [], Fake);
- } else {
- try {
- Fake.call();
- } catch (x) {
- control = x;
- }
- fn.call(Fake.prototype);
- }
- } else {
- try {
- throw Error();
- } catch (x) {
- control = x;
- }
- fn();
- }
- } catch (sample) {
- // This is inlined manually because closure doesn't do it for us.
- if (sample && control && typeof sample.stack === 'string') {
- // This extracts the first frame from the sample that isn't also in the control.
- // Skipping one frame that we assume is the frame that calls the two.
- var sampleLines = sample.stack.split('\n');
- var controlLines = control.stack.split('\n');
- var s = sampleLines.length - 1;
- var c = controlLines.length - 1;
- while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
- // We expect at least one stack frame to be shared.
- // Typically this will be the root most one. However, stack frames may be
- // cut off due to maximum stack limits. In this case, one maybe cut off
- // earlier than the other. We assume that the sample is longer or the same
- // and there for cut off earlier. So we should find the root most frame in
- // the sample somewhere in the control.
- c--;
- }
- for (; s >= 1 && c >= 0; s--, c--) {
- // Next we find the first one that isn't the same which should be the
- // frame that called our sample function and the control.
- if (sampleLines[s] !== controlLines[c]) {
- // In V8, the first line is describing the message but other VMs don't.
- // If we're about to return the first line, and the control is also on the same
- // line, that's a pretty good indicator that our sample threw at same line as
- // the control. I.e. before we entered the sample frame. So we ignore this result.
- // This can happen if you passed a class to function component, or non-function.
- if (s !== 1 || c !== 1) {
- do {
- s--;
- c--; // We may still have similar intermediate frames from the construct call.
- // The next one that isn't the same should be our match though.
- if (c < 0 || sampleLines[s] !== controlLines[c]) {
- // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier.
- var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled "<anonymous>"
- // but we have a user-provided "displayName"
- // splice it in to make the stack more readable.
- if (fn.displayName && _frame.includes('<anonymous>')) {
- _frame = _frame.replace('<anonymous>', fn.displayName);
- }
- {
- if (typeof fn === 'function') {
- componentFrameCache.set(fn, _frame);
- }
- } // Return the line we found.
- return _frame;
- }
- } while (s >= 1 && c >= 0);
- }
- break;
- }
- }
- }
- } finally {
- reentry = false;
- {
- ReactCurrentDispatcher$1.current = previousDispatcher;
- reenableLogs();
- }
- Error.prepareStackTrace = previousPrepareStackTrace;
- } // Fallback to just using the name if we couldn't make it throw.
- var name = fn ? fn.displayName || fn.name : '';
- var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';
- {
- if (typeof fn === 'function') {
- componentFrameCache.set(fn, syntheticFrame);
- }
- }
- return syntheticFrame;
- }
- function describeFunctionComponentFrame(fn, source, ownerFn) {
- {
- return describeNativeComponentFrame(fn, false);
- }
- }
- function shouldConstruct(Component) {
- var prototype = Component.prototype;
- return !!(prototype && prototype.isReactComponent);
- }
- function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
- if (type == null) {
- return '';
- }
- if (typeof type === 'function') {
- {
- return describeNativeComponentFrame(type, shouldConstruct(type));
- }
- }
- if (typeof type === 'string') {
- return describeBuiltInComponentFrame(type);
- }
- switch (type) {
- case REACT_SUSPENSE_TYPE:
- return describeBuiltInComponentFrame('Suspense');
- case REACT_SUSPENSE_LIST_TYPE:
- return describeBuiltInComponentFrame('SuspenseList');
- }
- if (typeof type === 'object') {
- switch (type.$$typeof) {
- case REACT_FORWARD_REF_TYPE:
- return describeFunctionComponentFrame(type.render);
- case REACT_MEMO_TYPE:
- // Memo may contain any component type so we recursively resolve it.
- return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
- case REACT_LAZY_TYPE:
- {
- var lazyComponent = type;
- var payload = lazyComponent._payload;
- var init = lazyComponent._init;
- try {
- // Lazy may contain any component type so we recursively resolve it.
- return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
- } catch (x) {}
- }
- }
- }
- return '';
- }
- var loggedTypeFailures = {};
- var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
- function setCurrentlyValidatingElement(element) {
- {
- if (element) {
- var owner = element._owner;
- var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
- ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
- } else {
- ReactDebugCurrentFrame$1.setExtraStackFrame(null);
- }
- }
- }
- function checkPropTypes(typeSpecs, values, location, componentName, element) {
- {
- // $FlowFixMe This is okay but Flow doesn't know it.
- var has = Function.call.bind(hasOwnProperty);
- for (var typeSpecName in typeSpecs) {
- if (has(typeSpecs, typeSpecName)) {
- var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to
- // fail the render phase where it didn't fail before. So we log it.
- // After these have been cleaned up, we'll let them throw.
- try {
- // This is intentionally an invariant that gets caught. It's the same
- // behavior as without this statement except with a better message.
- if (typeof typeSpecs[typeSpecName] !== 'function') {
- // eslint-disable-next-line react-internal/prod-error-codes
- var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');
- err.name = 'Invariant Violation';
- throw err;
- }
- error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');
- } catch (ex) {
- error$1 = ex;
- }
- if (error$1 && !(error$1 instanceof Error)) {
- setCurrentlyValidatingElement(element);
- error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);
- setCurrentlyValidatingElement(null);
- }
- if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
- // Only monitor this failure once because there tends to be a lot of the
- // same error.
- loggedTypeFailures[error$1.message] = true;
- setCurrentlyValidatingElement(element);
- error('Failed %s type: %s', location, error$1.message);
- setCurrentlyValidatingElement(null);
- }
- }
- }
- }
- }
- function setCurrentlyValidatingElement$1(element) {
- {
- if (element) {
- var owner = element._owner;
- var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
- setExtraStackFrame(stack);
- } else {
- setExtraStackFrame(null);
- }
- }
- }
- var propTypesMisspellWarningShown;
- {
- propTypesMisspellWarningShown = false;
- }
- function getDeclarationErrorAddendum() {
- if (ReactCurrentOwner.current) {
- var name = getComponentNameFromType(ReactCurrentOwner.current.type);
- if (name) {
- return '\n\nCheck the render method of `' + name + '`.';
- }
- }
- return '';
- }
- function getSourceInfoErrorAddendum(source) {
- if (source !== undefined) {
- var fileName = source.fileName.replace(/^.*[\\\/]/, '');
- var lineNumber = source.lineNumber;
- return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.';
- }
- return '';
- }
- function getSourceInfoErrorAddendumForProps(elementProps) {
- if (elementProps !== null && elementProps !== undefined) {
- return getSourceInfoErrorAddendum(elementProps.__source);
- }
- return '';
- }
- /**
- * Warn if there's no key explicitly set on dynamic arrays of children or
- * object keys are not valid. This allows us to keep track of children between
- * updates.
- */
- var ownerHasKeyUseWarning = {};
- function getCurrentComponentErrorInfo(parentType) {
- var info = getDeclarationErrorAddendum();
- if (!info) {
- var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
- if (parentName) {
- info = "\n\nCheck the top-level render call using <" + parentName + ">.";
- }
- }
- return info;
- }
- /**
- * Warn if the element doesn't have an explicit key assigned to it.
- * This element is in an array. The array could grow and shrink or be
- * reordered. All children that haven't already been validated are required to
- * have a "key" property assigned to it. Error statuses are cached so a warning
- * will only be shown once.
- *
- * @internal
- * @param {ReactElement} element Element that requires a key.
- * @param {*} parentType element's parent's type.
- */
- function validateExplicitKey(element, parentType) {
- if (!element._store || element._store.validated || element.key != null) {
- return;
- }
- element._store.validated = true;
- var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
- if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
- return;
- }
- ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a
- // property, it may be the creator of the child that's responsible for
- // assigning it a key.
- var childOwner = '';
- if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
- // Give the component that originally created this child.
- childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + ".";
- }
- {
- setCurrentlyValidatingElement$1(element);
- error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);
- setCurrentlyValidatingElement$1(null);
- }
- }
- /**
- * Ensure that every element either is passed in a static location, in an
- * array with an explicit keys property defined, or in an object literal
- * with valid key property.
- *
- * @internal
- * @param {ReactNode} node Statically passed child of any type.
- * @param {*} parentType node's parent's type.
- */
- function validateChildKeys(node, parentType) {
- if (typeof node !== 'object') {
- return;
- }
- if (isArray(node)) {
- for (var i = 0; i < node.length; i++) {
- var child = node[i];
- if (isValidElement(child)) {
- validateExplicitKey(child, parentType);
- }
- }
- } else if (isValidElement(node)) {
- // This element was passed in a valid location.
- if (node._store) {
- node._store.validated = true;
- }
- } else if (node) {
- var iteratorFn = getIteratorFn(node);
- if (typeof iteratorFn === 'function') {
- // Entry iterators used to provide implicit keys,
- // but now we print a separate warning for them later.
- if (iteratorFn !== node.entries) {
- var iterator = iteratorFn.call(node);
- var step;
- while (!(step = iterator.next()).done) {
- if (isValidElement(step.value)) {
- validateExplicitKey(step.value, parentType);
- }
- }
- }
- }
- }
- }
- /**
- * Given an element, validate that its props follow the propTypes definition,
- * provided by the type.
- *
- * @param {ReactElement} element
- */
- function validatePropTypes(element) {
- {
- var type = element.type;
- if (type === null || type === undefined || typeof type === 'string') {
- return;
- }
- var propTypes;
- if (typeof type === 'function') {
- propTypes = type.propTypes;
- } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
- // Inner props are checked in the reconciler.
- type.$$typeof === REACT_MEMO_TYPE)) {
- propTypes = type.propTypes;
- } else {
- return;
- }
- if (propTypes) {
- // Intentionally inside to avoid triggering lazy initializers:
- var name = getComponentNameFromType(type);
- checkPropTypes(propTypes, element.props, 'prop', name, element);
- } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
- propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:
- var _name = getComponentNameFromType(type);
- error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');
- }
- if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {
- error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');
- }
- }
- }
- /**
- * Given a fragment, validate that it can only be provided with fragment props
- * @param {ReactElement} fragment
- */
- function validateFragmentProps(fragment) {
- {
- var keys = Object.keys(fragment.props);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- if (key !== 'children' && key !== 'key') {
- setCurrentlyValidatingElement$1(fragment);
- error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
- setCurrentlyValidatingElement$1(null);
- break;
- }
- }
- if (fragment.ref !== null) {
- setCurrentlyValidatingElement$1(fragment);
- error('Invalid attribute `ref` supplied to `React.Fragment`.');
- setCurrentlyValidatingElement$1(null);
- }
- }
- }
- function createElementWithValidation(type, props, children) {
- var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to
- // succeed and there will likely be errors in render.
- if (!validType) {
- var info = '';
- if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
- info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports.";
- }
- var sourceInfo = getSourceInfoErrorAddendumForProps(props);
- if (sourceInfo) {
- info += sourceInfo;
- } else {
- info += getDeclarationErrorAddendum();
- }
- var typeString;
- if (type === null) {
- typeString = 'null';
- } else if (isArray(type)) {
- typeString = 'array';
- } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
- typeString = "<" + (getComponentNameFromType(type.type) || 'Unknown') + " />";
- info = ' Did you accidentally export a JSX literal instead of a component?';
- } else {
- typeString = typeof type;
- }
- {
- error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);
- }
- }
- var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.
- // TODO: Drop this when these are no longer allowed as the type argument.
- if (element == null) {
- return element;
- } // Skip key warning if the type isn't valid since our key validation logic
- // doesn't expect a non-string/function type and can throw confusing errors.
- // We don't want exception behavior to differ between dev and prod.
- // (Rendering will throw with a helpful message and as soon as the type is
- // fixed, the key warnings will appear.)
- if (validType) {
- for (var i = 2; i < arguments.length; i++) {
- validateChildKeys(arguments[i], type);
- }
- }
- if (type === REACT_FRAGMENT_TYPE) {
- validateFragmentProps(element);
- } else {
- validatePropTypes(element);
- }
- return element;
- }
- var didWarnAboutDeprecatedCreateFactory = false;
- function createFactoryWithValidation(type) {
- var validatedFactory = createElementWithValidation.bind(null, type);
- validatedFactory.type = type;
- {
- if (!didWarnAboutDeprecatedCreateFactory) {
- didWarnAboutDeprecatedCreateFactory = true;
- warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');
- } // Legacy hook: remove it
- Object.defineProperty(validatedFactory, 'type', {
- enumerable: false,
- get: function () {
- warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');
- Object.defineProperty(this, 'type', {
- value: type
- });
- return type;
- }
- });
- }
- return validatedFactory;
- }
- function cloneElementWithValidation(element, props, children) {
- var newElement = cloneElement.apply(this, arguments);
- for (var i = 2; i < arguments.length; i++) {
- validateChildKeys(arguments[i], newElement.type);
- }
- validatePropTypes(newElement);
- return newElement;
- }
- function startTransition(scope, options) {
- var prevTransition = ReactCurrentBatchConfig.transition;
- ReactCurrentBatchConfig.transition = {};
- var currentTransition = ReactCurrentBatchConfig.transition;
- {
- ReactCurrentBatchConfig.transition._updatedFibers = new Set();
- }
- try {
- scope();
- } finally {
- ReactCurrentBatchConfig.transition = prevTransition;
- {
- if (prevTransition === null && currentTransition._updatedFibers) {
- var updatedFibersCount = currentTransition._updatedFibers.size;
- if (updatedFibersCount > 10) {
- warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');
- }
- currentTransition._updatedFibers.clear();
- }
- }
- }
- }
- var didWarnAboutMessageChannel = false;
- var enqueueTaskImpl = null;
- function enqueueTask(task) {
- if (enqueueTaskImpl === null) {
- try {
- // read require off the module object to get around the bundlers.
- // we don't want them to detect a require and bundle a Node polyfill.
- var requireString = ('require' + Math.random()).slice(0, 7);
- var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's
- // version of setImmediate, bypassing fake timers if any.
- enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;
- } catch (_err) {
- // we're in a browser
- // we can't use regular timers because they may still be faked
- // so we try MessageChannel+postMessage instead
- enqueueTaskImpl = function (callback) {
- {
- if (didWarnAboutMessageChannel === false) {
- didWarnAboutMessageChannel = true;
- if (typeof MessageChannel === 'undefined') {
- error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');
- }
- }
- }
- var channel = new MessageChannel();
- channel.port1.onmessage = callback;
- channel.port2.postMessage(undefined);
- };
- }
- }
- return enqueueTaskImpl(task);
- }
- var actScopeDepth = 0;
- var didWarnNoAwaitAct = false;
- function act(callback) {
- {
- // `act` calls can be nested, so we track the depth. This represents the
- // number of `act` scopes on the stack.
- var prevActScopeDepth = actScopeDepth;
- actScopeDepth++;
- if (ReactCurrentActQueue.current === null) {
- // This is the outermost `act` scope. Initialize the queue. The reconciler
- // will detect the queue and use it instead of Scheduler.
- ReactCurrentActQueue.current = [];
- }
- var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;
- var result;
- try {
- // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only
- // set to `true` while the given callback is executed, not for updates
- // triggered during an async event, because this is how the legacy
- // implementation of `act` behaved.
- ReactCurrentActQueue.isBatchingLegacy = true;
- result = callback(); // Replicate behavior of original `act` implementation in legacy mode,
- // which flushed updates immediately after the scope function exits, even
- // if it's an async function.
- if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {
- var queue = ReactCurrentActQueue.current;
- if (queue !== null) {
- ReactCurrentActQueue.didScheduleLegacyUpdate = false;
- flushActQueue(queue);
- }
- }
- } catch (error) {
- popActScope(prevActScopeDepth);
- throw error;
- } finally {
- ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;
- }
- if (result !== null && typeof result === 'object' && typeof result.then === 'function') {
- var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait
- // for it to resolve before exiting the current scope.
- var wasAwaited = false;
- var thenable = {
- then: function (resolve, reject) {
- wasAwaited = true;
- thenableResult.then(function (returnValue) {
- popActScope(prevActScopeDepth);
- if (actScopeDepth === 0) {
- // We've exited the outermost act scope. Recursively flush the
- // queue until there's no remaining work.
- recursivelyFlushAsyncActWork(returnValue, resolve, reject);
- } else {
- resolve(returnValue);
- }
- }, function (error) {
- // The callback threw an error.
- popActScope(prevActScopeDepth);
- reject(error);
- });
- }
- };
- {
- if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {
- // eslint-disable-next-line no-undef
- Promise.resolve().then(function () {}).then(function () {
- if (!wasAwaited) {
- didWarnNoAwaitAct = true;
- error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');
- }
- });
- }
- }
- return thenable;
- } else {
- var returnValue = result; // The callback is not an async function. Exit the current scope
- // immediately, without awaiting.
- popActScope(prevActScopeDepth);
- if (actScopeDepth === 0) {
- // Exiting the outermost act scope. Flush the queue.
- var _queue = ReactCurrentActQueue.current;
- if (_queue !== null) {
- flushActQueue(_queue);
- ReactCurrentActQueue.current = null;
- } // Return a thenable. If the user awaits it, we'll flush again in
- // case additional work was scheduled by a microtask.
- var _thenable = {
- then: function (resolve, reject) {
- // Confirm we haven't re-entered another `act` scope, in case
- // the user does something weird like await the thenable
- // multiple times.
- if (ReactCurrentActQueue.current === null) {
- // Recursively flush the queue until there's no remaining work.
- ReactCurrentActQueue.current = [];
- recursivelyFlushAsyncActWork(returnValue, resolve, reject);
- } else {
- resolve(returnValue);
- }
- }
- };
- return _thenable;
- } else {
- // Since we're inside a nested `act` scope, the returned thenable
- // immediately resolves. The outer scope will flush the queue.
- var _thenable2 = {
- then: function (resolve, reject) {
- resolve(returnValue);
- }
- };
- return _thenable2;
- }
- }
- }
- }
- function popActScope(prevActScopeDepth) {
- {
- if (prevActScopeDepth !== actScopeDepth - 1) {
- error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');
- }
- actScopeDepth = prevActScopeDepth;
- }
- }
- function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {
- {
- var queue = ReactCurrentActQueue.current;
- if (queue !== null) {
- try {
- flushActQueue(queue);
- enqueueTask(function () {
- if (queue.length === 0) {
- // No additional work was scheduled. Finish.
- ReactCurrentActQueue.current = null;
- resolve(returnValue);
- } else {
- // Keep flushing work until there's none left.
- recursivelyFlushAsyncActWork(returnValue, resolve, reject);
- }
- });
- } catch (error) {
- reject(error);
- }
- } else {
- resolve(returnValue);
- }
- }
- }
- var isFlushing = false;
- function flushActQueue(queue) {
- {
- if (!isFlushing) {
- // Prevent re-entrance.
- isFlushing = true;
- var i = 0;
- try {
- for (; i < queue.length; i++) {
- var callback = queue[i];
- do {
- callback = callback(true);
- } while (callback !== null);
- }
- queue.length = 0;
- } catch (error) {
- // If something throws, leave the remaining callbacks on the queue.
- queue = queue.slice(i + 1);
- throw error;
- } finally {
- isFlushing = false;
- }
- }
- }
- }
- var createElement$1 = createElementWithValidation ;
- var cloneElement$1 = cloneElementWithValidation ;
- var createFactory = createFactoryWithValidation ;
- var Children = {
- map: mapChildren,
- forEach: forEachChildren,
- count: countChildren,
- toArray: toArray,
- only: onlyChild
- };
- exports.Children = Children;
- exports.Component = Component;
- exports.Fragment = REACT_FRAGMENT_TYPE;
- exports.Profiler = REACT_PROFILER_TYPE;
- exports.PureComponent = PureComponent;
- exports.StrictMode = REACT_STRICT_MODE_TYPE;
- exports.Suspense = REACT_SUSPENSE_TYPE;
- exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;
- exports.cloneElement = cloneElement$1;
- exports.createContext = createContext;
- exports.createElement = createElement$1;
- exports.createFactory = createFactory;
- exports.createRef = createRef;
- exports.forwardRef = forwardRef;
- exports.isValidElement = isValidElement;
- exports.lazy = lazy;
- exports.memo = memo;
- exports.startTransition = startTransition;
- exports.unstable_act = act;
- exports.useCallback = useCallback;
- exports.useContext = useContext;
- exports.useDebugValue = useDebugValue;
- exports.useDeferredValue = useDeferredValue;
- exports.useEffect = useEffect;
- exports.useId = useId;
- exports.useImperativeHandle = useImperativeHandle;
- exports.useInsertionEffect = useInsertionEffect;
- exports.useLayoutEffect = useLayoutEffect;
- exports.useMemo = useMemo;
- exports.useReducer = useReducer;
- exports.useRef = useRef;
- exports.useState = useState;
- exports.useSyncExternalStore = useSyncExternalStore;
- exports.useTransition = useTransition;
- exports.version = ReactVersion;
- /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
- if (
- typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
- typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===
- 'function'
- ) {
- __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
- }
-
- })();
- }
- /***/ }),
- /***/ "./node_modules/react/index.js":
- /*!*************************************!*\
- !*** ./node_modules/react/index.js ***!
- \*************************************/
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
- "use strict";
- if (false) {} else {
- module.exports = __webpack_require__(/*! ./cjs/react.development.js */ "./node_modules/react/cjs/react.development.js");
- }
- /***/ }),
- /***/ "./node_modules/shallowequal/index.js":
- /*!********************************************!*\
- !*** ./node_modules/shallowequal/index.js ***!
- \********************************************/
- /***/ ((module) => {
- //
- module.exports = function shallowEqual(objA, objB, compare, compareContext) {
- var ret = compare ? compare.call(compareContext, objA, objB) : void 0;
- if (ret !== void 0) {
- return !!ret;
- }
- if (objA === objB) {
- return true;
- }
- if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) {
- return false;
- }
- var keysA = Object.keys(objA);
- var keysB = Object.keys(objB);
- if (keysA.length !== keysB.length) {
- return false;
- }
- var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);
- // Test for A's keys different from B.
- for (var idx = 0; idx < keysA.length; idx++) {
- var key = keysA[idx];
- if (!bHasOwnProperty(key)) {
- return false;
- }
- var valueA = objA[key];
- var valueB = objB[key];
- ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;
- if (ret === false || (ret === void 0 && valueA !== valueB)) {
- return false;
- }
- }
- return true;
- };
- /***/ }),
- /***/ "./src/sass/d3v4pp.scss":
- /*!******************************!*\
- !*** ./src/sass/d3v4pp.scss ***!
- \******************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
- /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
- /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
- /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
- /* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./d3v4pp.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/sass/d3v4pp.scss");
-
-
-
-
-
-
-
-
-
- var options = {};
- options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
- options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
- options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
-
- options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
- options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
- var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
- /***/ }),
- /***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
- /*!****************************************************************************!*\
- !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
- \****************************************************************************/
- /***/ ((module) => {
- "use strict";
- var stylesInDOM = [];
- function getIndexByIdentifier(identifier) {
- var result = -1;
- for (var i = 0; i < stylesInDOM.length; i++) {
- if (stylesInDOM[i].identifier === identifier) {
- result = i;
- break;
- }
- }
- return result;
- }
- function modulesToDom(list, options) {
- var idCountMap = {};
- var identifiers = [];
- for (var i = 0; i < list.length; i++) {
- var item = list[i];
- var id = options.base ? item[0] + options.base : item[0];
- var count = idCountMap[id] || 0;
- var identifier = "".concat(id, " ").concat(count);
- idCountMap[id] = count + 1;
- var indexByIdentifier = getIndexByIdentifier(identifier);
- var obj = {
- css: item[1],
- media: item[2],
- sourceMap: item[3],
- supports: item[4],
- layer: item[5]
- };
- if (indexByIdentifier !== -1) {
- stylesInDOM[indexByIdentifier].references++;
- stylesInDOM[indexByIdentifier].updater(obj);
- } else {
- var updater = addElementStyle(obj, options);
- options.byIndex = i;
- stylesInDOM.splice(i, 0, {
- identifier: identifier,
- updater: updater,
- references: 1
- });
- }
- identifiers.push(identifier);
- }
- return identifiers;
- }
- function addElementStyle(obj, options) {
- var api = options.domAPI(options);
- api.update(obj);
- var updater = function updater(newObj) {
- if (newObj) {
- if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
- return;
- }
- api.update(obj = newObj);
- } else {
- api.remove();
- }
- };
- return updater;
- }
- module.exports = function (list, options) {
- options = options || {};
- list = list || [];
- var lastIdentifiers = modulesToDom(list, options);
- return function update(newList) {
- newList = newList || [];
- for (var i = 0; i < lastIdentifiers.length; i++) {
- var identifier = lastIdentifiers[i];
- var index = getIndexByIdentifier(identifier);
- stylesInDOM[index].references--;
- }
- var newLastIdentifiers = modulesToDom(newList, options);
- for (var _i = 0; _i < lastIdentifiers.length; _i++) {
- var _identifier = lastIdentifiers[_i];
- var _index = getIndexByIdentifier(_identifier);
- if (stylesInDOM[_index].references === 0) {
- stylesInDOM[_index].updater();
- stylesInDOM.splice(_index, 1);
- }
- }
- lastIdentifiers = newLastIdentifiers;
- };
- };
- /***/ }),
- /***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
- /*!********************************************************************!*\
- !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
- \********************************************************************/
- /***/ ((module) => {
- "use strict";
- var memo = {};
- /* istanbul ignore next */
- function getTarget(target) {
- if (typeof memo[target] === "undefined") {
- var styleTarget = document.querySelector(target);
- // Special case to return head of iframe instead of iframe itself
- if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
- try {
- // This will throw an exception if access to iframe is blocked
- // due to cross-origin restrictions
- styleTarget = styleTarget.contentDocument.head;
- } catch (e) {
- // istanbul ignore next
- styleTarget = null;
- }
- }
- memo[target] = styleTarget;
- }
- return memo[target];
- }
- /* istanbul ignore next */
- function insertBySelector(insert, style) {
- var target = getTarget(insert);
- if (!target) {
- throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
- }
- target.appendChild(style);
- }
- module.exports = insertBySelector;
- /***/ }),
- /***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
- /*!**********************************************************************!*\
- !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
- \**********************************************************************/
- /***/ ((module) => {
- "use strict";
- /* istanbul ignore next */
- function insertStyleElement(options) {
- var element = document.createElement("style");
- options.setAttributes(element, options.attributes);
- options.insert(element, options.options);
- return element;
- }
- module.exports = insertStyleElement;
- /***/ }),
- /***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
- /*!**********************************************************************************!*\
- !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
- \**********************************************************************************/
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
- "use strict";
- /* istanbul ignore next */
- function setAttributesWithoutAttributes(styleElement) {
- var nonce = true ? __webpack_require__.nc : 0;
- if (nonce) {
- styleElement.setAttribute("nonce", nonce);
- }
- }
- module.exports = setAttributesWithoutAttributes;
- /***/ }),
- /***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
- /*!***************************************************************!*\
- !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
- \***************************************************************/
- /***/ ((module) => {
- "use strict";
- /* istanbul ignore next */
- function apply(styleElement, options, obj) {
- var css = "";
- if (obj.supports) {
- css += "@supports (".concat(obj.supports, ") {");
- }
- if (obj.media) {
- css += "@media ".concat(obj.media, " {");
- }
- var needLayer = typeof obj.layer !== "undefined";
- if (needLayer) {
- css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
- }
- css += obj.css;
- if (needLayer) {
- css += "}";
- }
- if (obj.media) {
- css += "}";
- }
- if (obj.supports) {
- css += "}";
- }
- var sourceMap = obj.sourceMap;
- if (sourceMap && typeof btoa !== "undefined") {
- css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
- }
- // For old IE
- /* istanbul ignore if */
- options.styleTagTransform(css, styleElement, options.options);
- }
- function removeStyleElement(styleElement) {
- // istanbul ignore if
- if (styleElement.parentNode === null) {
- return false;
- }
- styleElement.parentNode.removeChild(styleElement);
- }
- /* istanbul ignore next */
- function domAPI(options) {
- if (typeof document === "undefined") {
- return {
- update: function update() {},
- remove: function remove() {}
- };
- }
- var styleElement = options.insertStyleElement(options);
- return {
- update: function update(obj) {
- apply(styleElement, options, obj);
- },
- remove: function remove() {
- removeStyleElement(styleElement);
- }
- };
- }
- module.exports = domAPI;
- /***/ }),
- /***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
- /*!*********************************************************************!*\
- !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
- \*********************************************************************/
- /***/ ((module) => {
- "use strict";
- /* istanbul ignore next */
- function styleTagTransform(css, styleElement) {
- if (styleElement.styleSheet) {
- styleElement.styleSheet.cssText = css;
- } else {
- while (styleElement.firstChild) {
- styleElement.removeChild(styleElement.firstChild);
- }
- styleElement.appendChild(document.createTextNode(css));
- }
- }
- module.exports = styleTagTransform;
- /***/ }),
- /***/ "./node_modules/styled-components/dist/styled-components.browser.esm.js":
- /*!******************************************************************************!*\
- !*** ./node_modules/styled-components/dist/styled-components.browser.esm.js ***!
- \******************************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ServerStyleSheet: () => (/* binding */ ut),
- /* harmony export */ StyleSheetConsumer: () => (/* binding */ je),
- /* harmony export */ StyleSheetContext: () => (/* binding */ ke),
- /* harmony export */ StyleSheetManager: () => (/* binding */ Me),
- /* harmony export */ ThemeConsumer: () => (/* binding */ Ue),
- /* harmony export */ ThemeContext: () => (/* binding */ He),
- /* harmony export */ ThemeProvider: () => (/* binding */ Xe),
- /* harmony export */ __PRIVATE__: () => (/* binding */ pt),
- /* harmony export */ createGlobalStyle: () => (/* binding */ at),
- /* harmony export */ css: () => (/* binding */ nt),
- /* harmony export */ "default": () => (/* binding */ st),
- /* harmony export */ isStyledComponent: () => (/* binding */ ee),
- /* harmony export */ keyframes: () => (/* binding */ ct),
- /* harmony export */ styled: () => (/* binding */ st),
- /* harmony export */ useTheme: () => (/* binding */ Je),
- /* harmony export */ version: () => (/* binding */ m),
- /* harmony export */ withTheme: () => (/* binding */ lt)
- /* harmony export */ });
- /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
- /* harmony import */ var _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/is-prop-valid */ "./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js");
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var shallowequal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! shallowequal */ "./node_modules/shallowequal/index.js");
- /* harmony import */ var shallowequal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(shallowequal__WEBPACK_IMPORTED_MODULE_2__);
- /* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! stylis */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js");
- /* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! stylis */ "./node_modules/styled-components/node_modules/stylis/src/Middleware.js");
- /* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! stylis */ "./node_modules/styled-components/node_modules/stylis/src/Serializer.js");
- /* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! stylis */ "./node_modules/styled-components/node_modules/stylis/src/Parser.js");
- /* harmony import */ var _emotion_unitless__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @emotion/unitless */ "./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js");
- var f="undefined"!=typeof process&&void 0!==process.env&&(process.env.REACT_APP_SC_ATTR||process.env.SC_ATTR)||"data-styled",m="6.0.7",y="undefined"!=typeof window&&"HTMLElement"in window,v=Boolean("boolean"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:"undefined"!=typeof process&&void 0!==process.env&&void 0!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&""!==process.env.REACT_APP_SC_DISABLE_SPEEDY?"false"!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&process.env.REACT_APP_SC_DISABLE_SPEEDY:"undefined"!=typeof process&&void 0!==process.env&&void 0!==process.env.SC_DISABLE_SPEEDY&&""!==process.env.SC_DISABLE_SPEEDY?"false"!==process.env.SC_DISABLE_SPEEDY&&process.env.SC_DISABLE_SPEEDY:"production"!=="development"),g={},S=/invalid hook call/i,w=new Set,b=function(t,n){if(true){var o=n?' with the id of "'.concat(n,'"'):"",s="The component ".concat(t).concat(o," has been created dynamically.\n")+"You may see this warning because you've called styled inside another component.\nTo resolve this only create new StyledComponents outside of any render method and function component.",i=console.error;try{var a=!0;console.error=function(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];S.test(t)?(a=!1,w.delete(s)):i.apply(void 0,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__spreadArray)([t],n,!1))},(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(),a&&!w.has(s)&&(console.warn(s),w.add(s))}catch(e){S.test(e.message)&&w.delete(s)}finally{console.error=i}}},E=Object.freeze([]),N=Object.freeze({});function P(e,t,n){return void 0===n&&(n=N),e.theme!==n.theme&&e.theme||t||n.theme}var _=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","use","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"]),C=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,I=/(^-|-$)/g;function A(e){return e.replace(C,"-").replace(I,"")}var O=/(a)(d)/gi,D=function(e){return String.fromCharCode(e+(e>25?39:97))};function R(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=D(t%52)+n;return(D(t%52)+n).replace(O,"$1-$2")}var T,k=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},j=function(e){return k(5381,e)};function x(e){return R(j(e)>>>0)}function V(e){return true&&"string"==typeof e&&e||e.displayName||e.name||"Component"}function M(e){return"string"==typeof e&&( false||e.charAt(0)===e.charAt(0).toLowerCase())}var F="function"==typeof Symbol&&Symbol.for,$=F?Symbol.for("react.memo"):60115,z=F?Symbol.for("react.forward_ref"):60112,B={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},L={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},G={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Y=((T={})[z]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},T[$]=G,T);function W(e){return("type"in(t=e)&&t.type.$$typeof)===$?G:"$$typeof"in e?Y[e.$$typeof]:B;var t}var q=Object.defineProperty,H=Object.getOwnPropertyNames,U=Object.getOwnPropertySymbols,J=Object.getOwnPropertyDescriptor,X=Object.getPrototypeOf,Z=Object.prototype;function K(e,t,n){if("string"!=typeof t){if(Z){var o=X(t);o&&o!==Z&&K(e,o,n)}var r=H(t);U&&(r=r.concat(U(t)));for(var s=W(e),i=W(t),a=0;a<r.length;++a){var c=r[a];if(!(c in L||n&&n[c]||i&&c in i||s&&c in s)){var l=J(t,c);try{q(e,c,l)}catch(e){}}}}return e}function Q(e){return"function"==typeof e}function ee(e){return"object"==typeof e&&"styledComponentId"in e}function te(e,t){return e&&t?"".concat(e," ").concat(t):e||t||""}function ne(e,t){if(0===e.length)return"";for(var n=e[0],o=1;o<e.length;o++)n+=t?t+e[o]:e[o];return n}function oe(e){return null!==e&&"object"==typeof e&&e.constructor.name===Object.name&&!("props"in e&&e.$$typeof)}function re(e,t,n){if(void 0===n&&(n=!1),!n&&!oe(e)&&!Array.isArray(e))return t;if(Array.isArray(t))for(var o=0;o<t.length;o++)e[o]=re(e[o],t[o]);else if(oe(t))for(var o in t)e[o]=re(e[o],t[o]);return e}function se(e,t){Object.defineProperty(e,"toString",{value:t})}var ie= true?{1:"Cannot create styled-component for component: %s.\n\n",2:"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\n\n- Are you trying to reuse it across renders?\n- Are you accidentally calling collectStyles twice?\n\n",3:"Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\n\n",4:"The `StyleSheetManager` expects a valid target or sheet prop!\n\n- Does this error occur on the client and is your target falsy?\n- Does this error occur on the server and is the sheet falsy?\n\n",5:"The clone method cannot be used on the client!\n\n- Are you running in a client-like environment on the server?\n- Are you trying to run SSR on the client?\n\n",6:"Trying to insert a new style tag, but the given Node is unmounted!\n\n- Are you using a custom target that isn't mounted?\n- Does your document not have a valid head element?\n- Have you accidentally removed a style tag manually?\n\n",7:'ThemeProvider: Please return an object from your "theme" prop function, e.g.\n\n```js\ntheme={() => ({})}\n```\n\n',8:'ThemeProvider: Please make your "theme" prop an object.\n\n',9:"Missing document `<head>`\n\n",10:"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\n\n",11:"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\n\n",12:"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\`\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\n\n",13:"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\n\n",14:'ThemeProvider: "theme" prop is required.\n\n',15:"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to `<StyleSheetManager stylisPlugins={[]}>`, please make sure each plugin is uniquely-named, e.g.\n\n```js\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\n```\n\n",16:"Reached the limit of how many styled components may be created at group %s.\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\nas for instance in your render method then you may be running into this limitation.\n\n",17:"CSSStyleSheet could not be found on HTMLStyleElement.\nHas styled-components' style tag been unmounted or altered by another script?\n",18:"ThemeProvider: Please make sure your useTheme hook is within a `<ThemeProvider>`"}:0;function ae(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=e[0],o=[],r=1,s=e.length;r<s;r+=1)o.push(e[r]);return o.forEach(function(e){n=n.replace(/%[a-z]/,e)}),n}function ce(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];return false?0:new Error(ae.apply(void 0,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__spreadArray)([ie[t]],n,!1)).trim())}var le=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}return e.prototype.indexOfGroup=function(e){for(var t=0,n=0;n<e;n++)t+=this.groupSizes[n];return t},e.prototype.insertRules=function(e,t){if(e>=this.groupSizes.length){for(var n=this.groupSizes,o=n.length,r=o;e>=r;)if((r<<=1)<0)throw ce(16,"".concat(e));this.groupSizes=new Uint32Array(r),this.groupSizes.set(n),this.length=r;for(var s=o;s<r;s++)this.groupSizes[s]=0}for(var i=this.indexOfGroup(e+1),a=(s=0,t.length);s<a;s++)this.tag.insertRule(i,t[s])&&(this.groupSizes[e]++,i++)},e.prototype.clearGroup=function(e){if(e<this.length){var t=this.groupSizes[e],n=this.indexOfGroup(e),o=n+t;this.groupSizes[e]=0;for(var r=n;r<o;r++)this.tag.deleteRule(n)}},e.prototype.getGroup=function(e){var t="";if(e>=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],o=this.indexOfGroup(e),r=o+n,s=o;s<r;s++)t+="".concat(this.tag.getRule(s)).concat("/*!sc*/\n");return t},e}(),ue=new Map,pe=new Map,de=1,he=function(e){if(ue.has(e))return ue.get(e);for(;pe.has(de);)de++;var t=de++;if( true&&((0|t)<0||t>1073741824))throw ce(16,"".concat(t));return ue.set(e,t),pe.set(t,e),t},fe=function(e,t){ue.set(e,t),pe.set(t,e)},me="style[".concat(f,"][").concat("data-styled-version",'="').concat("6.0.7",'"]'),ye=new RegExp("^".concat(f,'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)')),ve=function(e,t,n){for(var o,r=n.split(","),s=0,i=r.length;s<i;s++)(o=r[s])&&e.registerName(t,o)},ge=function(e,t){for(var n,o=(null!==(n=t.textContent)&&void 0!==n?n:"").split("/*!sc*/\n"),r=[],s=0,i=o.length;s<i;s++){var a=o[s].trim();if(a){var c=a.match(ye);if(c){var l=0|parseInt(c[1],10),u=c[2];0!==l&&(fe(u,l),ve(e,u,c[3]),e.getTag().insertRules(l,r)),r.length=0}else r.push(a)}}};function Se(){return true?__webpack_require__.nc:0}var we=function(e){var t=document.head,n=e||t,o=document.createElement("style"),r=function(e){var t=Array.from(e.querySelectorAll("style[".concat(f,"]")));return t[t.length-1]}(n),s=void 0!==r?r.nextSibling:null;o.setAttribute(f,"active"),o.setAttribute("data-styled-version","6.0.7");var i=Se();return i&&o.setAttribute("nonce",i),n.insertBefore(o,s),o},be=function(){function e(e){this.element=we(e),this.element.appendChild(document.createTextNode("")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,o=t.length;n<o;n++){var r=t[n];if(r.ownerNode===e)return r}throw ce(17)}(this.element),this.length=0}return e.prototype.insertRule=function(e,t){try{return this.sheet.insertRule(t,e),this.length++,!0}catch(e){return!1}},e.prototype.deleteRule=function(e){this.sheet.deleteRule(e),this.length--},e.prototype.getRule=function(e){var t=this.sheet.cssRules[e];return t&&t.cssText?t.cssText:""},e}(),Ee=function(){function e(e){this.element=we(e),this.nodes=this.element.childNodes,this.length=0}return e.prototype.insertRule=function(e,t){if(e<=this.length&&e>=0){var n=document.createTextNode(t);return this.element.insertBefore(n,this.nodes[e]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},e.prototype.getRule=function(e){return e<this.length?this.nodes[e].textContent:""},e}(),Ne=function(){function e(e){this.rules=[],this.length=0}return e.prototype.insertRule=function(e,t){return e<=this.length&&(this.rules.splice(e,0,t),this.length++,!0)},e.prototype.deleteRule=function(e){this.rules.splice(e,1),this.length--},e.prototype.getRule=function(e){return e<this.length?this.rules[e]:""},e}(),Pe=y,_e={isServer:!y,useCSSOMInjection:!v},Ce=function(){function e(e,n,o){void 0===e&&(e=N),void 0===n&&(n={});var r=this;this.options=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},_e),e),this.gs=n,this.names=new Map(o),this.server=!!e.isServer,!this.server&&y&&Pe&&(Pe=!1,function(e){for(var t=document.querySelectorAll(me),n=0,o=t.length;n<o;n++){var r=t[n];r&&"active"!==r.getAttribute(f)&&(ge(e,r),r.parentNode&&r.parentNode.removeChild(r))}}(this)),se(this,function(){return function(e){for(var t=e.getTag(),n=t.length,o="",r=function(n){var r=function(e){return pe.get(e)}(n);if(void 0===r)return"continue";var s=e.names.get(r),i=t.getGroup(n);if(void 0===s||0===i.length)return"continue";var a="".concat(f,".g").concat(n,'[id="').concat(r,'"]'),c="";void 0!==s&&s.forEach(function(e){e.length>0&&(c+="".concat(e,","))}),o+="".concat(i).concat(a,'{content:"').concat(c,'"}').concat("/*!sc*/\n")},s=0;s<n;s++)r(s);return o}(r)})}return e.registerId=function(e){return he(e)},e.prototype.reconstructWithOptions=function(n,o){return void 0===o&&(o=!0),new e((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},this.options),n),this.gs,o&&this.names||void 0)},e.prototype.allocateGSInstance=function(e){return this.gs[e]=(this.gs[e]||0)+1},e.prototype.getTag=function(){return this.tag||(this.tag=(e=function(e){var t=e.useCSSOMInjection,n=e.target;return e.isServer?new Ne(n):t?new be(n):new Ee(n)}(this.options),new le(e)));var e},e.prototype.hasNameForId=function(e,t){return this.names.has(e)&&this.names.get(e).has(t)},e.prototype.registerName=function(e,t){if(he(e),this.names.has(e))this.names.get(e).add(t);else{var n=new Set;n.add(t),this.names.set(e,n)}},e.prototype.insertRules=function(e,t,n){this.registerName(e,t),this.getTag().insertRules(he(e),n)},e.prototype.clearNames=function(e){this.names.has(e)&&this.names.get(e).clear()},e.prototype.clearRules=function(e){this.getTag().clearGroup(he(e)),this.clearNames(e)},e.prototype.clearTag=function(){this.tag=void 0},e}(),Ie=/&/g,Ae=/^\s*\/\/.*$/gm;function Oe(e,t){return e.map(function(e){return"rule"===e.type&&(e.value="".concat(t," ").concat(e.value),e.value=e.value.replaceAll(",",",".concat(t," ")),e.props=e.props.map(function(e){return"".concat(t," ").concat(e)})),Array.isArray(e.children)&&"@keyframes"!==e.type&&(e.children=Oe(e.children,t)),e})}function De(e){var t,n,o,r=void 0===e?N:e,s=r.options,i=void 0===s?N:s,a=r.plugins,c=void 0===a?E:a,l=function(e,o,r){return r===n||r.startsWith(n)&&r.endsWith(n)&&r.replaceAll(n,"").length>0?".".concat(t):e},u=c.slice();u.push(function(e){e.type===stylis__WEBPACK_IMPORTED_MODULE_5__.RULESET&&e.value.includes("&")&&(e.props[0]=e.props[0].replace(Ie,n).replace(o,l))}),i.prefix&&u.push(stylis__WEBPACK_IMPORTED_MODULE_6__.prefixer),u.push(stylis__WEBPACK_IMPORTED_MODULE_7__.stringify);var p=function(e,r,s,a){void 0===r&&(r=""),void 0===s&&(s=""),void 0===a&&(a="&"),t=a,n=r,o=new RegExp("\\".concat(n,"\\b"),"g");var c=e.replace(Ae,""),l=stylis__WEBPACK_IMPORTED_MODULE_8__.compile(s||r?"".concat(s," ").concat(r," { ").concat(c," }"):c);i.namespace&&(l=Oe(l,i.namespace));var p=[];return stylis__WEBPACK_IMPORTED_MODULE_7__.serialize(l,stylis__WEBPACK_IMPORTED_MODULE_6__.middleware(u.concat(stylis__WEBPACK_IMPORTED_MODULE_6__.rulesheet(function(e){return p.push(e)})))),p};return p.hash=c.length?c.reduce(function(e,t){return t.name||ce(15),k(e,t.name)},5381).toString():"",p}var Re=new Ce,Te=De(),ke=react__WEBPACK_IMPORTED_MODULE_1___default().createContext({shouldForwardProp:void 0,styleSheet:Re,stylis:Te}),je=ke.Consumer,xe=react__WEBPACK_IMPORTED_MODULE_1___default().createContext(void 0);function Ve(){return (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ke)}function Me(e){var t=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(e.stylisPlugins),n=t[0],r=t[1],c=Ve().styleSheet,l=(0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function(){var t=c;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t},[e.disableCSSOMInjection,e.sheet,e.target,c]),u=(0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function(){return De({options:{namespace:e.namespace,prefix:e.enableVendorPrefixes},plugins:n})},[e.enableVendorPrefixes,e.namespace,n]);return (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function(){shallowequal__WEBPACK_IMPORTED_MODULE_2___default()(n,e.stylisPlugins)||r(e.stylisPlugins)},[e.stylisPlugins]),react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ke.Provider,{value:{shouldForwardProp:e.shouldForwardProp,styleSheet:l,stylis:u}},react__WEBPACK_IMPORTED_MODULE_1___default().createElement(xe.Provider,{value:u},e.children))}var Fe=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=Te);var o=n.name+t.hash;e.hasNameForId(n.id,o)||e.insertRules(n.id,o,t(n.rules,o,"@keyframes"))},this.name=e,this.id="sc-keyframes-".concat(e),this.rules=t,se(this,function(){throw ce(12,String(n.name))})}return e.prototype.getName=function(e){return void 0===e&&(e=Te),this.name+e.hash},e}(),$e=function(e){return e>="A"&&e<="Z"};function ze(e){for(var t="",n=0;n<e.length;n++){var o=e[n];if(1===n&&"-"===o&&"-"===e[0])return e;$e(o)?t+="-"+o.toLowerCase():t+=o}return t.startsWith("ms-")?"-"+t:t}var Be=function(e){return null==e||!1===e||""===e},Le=function(t){var n,o,r=[];for(var s in t){var i=t[s];t.hasOwnProperty(s)&&!Be(i)&&(Array.isArray(i)&&i.isCss||Q(i)?r.push("".concat(ze(s),":"),i,";"):oe(i)?r.push.apply(r,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__spreadArray)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__spreadArray)(["".concat(s," {")],Le(i),!1),["}"],!1)):r.push("".concat(ze(s),": ").concat((n=s,null==(o=i)||"boolean"==typeof o||""===o?"":"number"!=typeof o||0===o||n in _emotion_unitless__WEBPACK_IMPORTED_MODULE_3__["default"]||n.startsWith("--")?String(o).trim():"".concat(o,"px")),";")))}return r};function Ge(e,t,n,o){if(Be(e))return[];if(ee(e))return[".".concat(e.styledComponentId)];if(Q(e)){if(!Q(s=e)||s.prototype&&s.prototype.isReactComponent||!t)return[e];var r=e(t);return false||"object"!=typeof r||Array.isArray(r)||r instanceof Fe||oe(r)||null===r||console.error("".concat(V(e)," is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.")),Ge(r,t,n,o)}var s;return e instanceof Fe?n?(e.inject(n,o),[e.getName(o)]):[e]:oe(e)?Le(e):Array.isArray(e)?Array.prototype.concat.apply(E,e.map(function(e){return Ge(e,t,n,o)})):[e.toString()]}function Ye(e){for(var t=0;t<e.length;t+=1){var n=e[t];if(Q(n)&&!ee(n))return!1}return!0}var We=j("6.0.7"),qe=function(){function e(e,t,n){this.rules=e,this.staticRulesId="",this.isStatic= false&&0,this.componentId=t,this.baseHash=k(We,t),this.baseStyle=n,Ce.registerId(t)}return e.prototype.generateAndInjectStyles=function(e,t,n){var o=this.baseStyle?this.baseStyle.generateAndInjectStyles(e,t,n):"";if(this.isStatic&&!n.hash)if(this.staticRulesId&&t.hasNameForId(this.componentId,this.staticRulesId))o=te(o,this.staticRulesId);else{var r=ne(Ge(this.rules,e,t,n)),s=R(k(this.baseHash,r)>>>0);if(!t.hasNameForId(this.componentId,s)){var i=n(r,".".concat(s),void 0,this.componentId);t.insertRules(this.componentId,s,i)}o=te(o,s),this.staticRulesId=s}else{for(var a=k(this.baseHash,n.hash),c="",l=0;l<this.rules.length;l++){var u=this.rules[l];if("string"==typeof u)c+=u, true&&(a=k(a,u));else if(u){var p=ne(Ge(u,e,t,n));a=k(a,p),c+=p}}if(c){var d=R(a>>>0);t.hasNameForId(this.componentId,d)||t.insertRules(this.componentId,d,n(c,".".concat(d),void 0,this.componentId)),o=te(o,d)}}return o},e}(),He=react__WEBPACK_IMPORTED_MODULE_1___default().createContext(void 0),Ue=He.Consumer;function Je(){var e=(0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(He);if(!e)throw ce(18);return e}function Xe(e){var n=react__WEBPACK_IMPORTED_MODULE_1___default().useContext(He),r=(0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function(){return function(e,n){if(!e)throw ce(14);if(Q(e)){var o=e(n);if( true&&(null===o||Array.isArray(o)||"object"!=typeof o))throw ce(7);return o}if(Array.isArray(e)||"object"!=typeof e)throw ce(8);return n?(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},n),e):e}(e.theme,n)},[e.theme,n]);return e.children?react__WEBPACK_IMPORTED_MODULE_1___default().createElement(He.Provider,{value:r},e.children):null}var Ze={},Ke=new Set;function Qe(e,r,s){var i=ee(e),a=e,c=!M(e),p=r.attrs,d=void 0===p?E:p,h=r.componentId,f=void 0===h?function(e,t){var n="string"!=typeof e?"sc":A(e);Ze[n]=(Ze[n]||0)+1;var o="".concat(n,"-").concat(x("6.0.7"+n+Ze[n]));return t?"".concat(t,"-").concat(o):o}(r.displayName,r.parentComponentId):h,m=r.displayName,y=void 0===m?function(e){return M(e)?"styled.".concat(e):"Styled(".concat(V(e),")")}(e):m,v=r.displayName&&r.componentId?"".concat(A(r.displayName),"-").concat(r.componentId):r.componentId||f,g=i&&a.attrs?a.attrs.concat(d).filter(Boolean):d,S=r.shouldForwardProp;if(i&&a.shouldForwardProp){var w=a.shouldForwardProp;if(r.shouldForwardProp){var C=r.shouldForwardProp;S=function(e,t){return w(e,t)&&C(e,t)}}else S=w}var I=new qe(s,v,i?a.componentStyle:void 0);function O(e,r){return function(e,r,s){var i=e.attrs,a=e.componentStyle,c=e.defaultProps,p=e.foldedComponentIds,d=e.styledComponentId,h=e.target,f=react__WEBPACK_IMPORTED_MODULE_1___default().useContext(He),m=Ve(),y=e.shouldForwardProp||m.shouldForwardProp; true&&(0,react__WEBPACK_IMPORTED_MODULE_1__.useDebugValue)(d);var v=function(e,n,o){for(var r,s=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},n),{className:void 0,theme:o}),i=0;i<e.length;i+=1){var a=Q(r=e[i])?r(s):r;for(var c in a)s[c]="className"===c?te(s[c],a[c]):"style"===c?(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},s[c]),a[c]):a[c]}return n.className&&(s.className=te(s.className,n.className)),s}(i,r,P(r,f,c)||N),g=v.as||h,S={};for(var w in v)void 0===v[w]||"$"===w[0]||"as"===w||"theme"===w||("forwardedAs"===w?S.as=v.forwardedAs:y&&!y(w,g)||(S[w]=v[w],y||"development"!=="development"||(0,_emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_0__["default"])(w)||Ke.has(w)||!_.has(g)||(Ke.add(w),console.warn('styled-components: it looks like an unknown prop "'.concat(w,'" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via `<StyleSheetManager shouldForwardProp={...}>` (connect an API like `@emotion/is-prop-valid`) or consider using transient props (`$` prefix for automatic filtering.)')))));var b=function(e,t){var n=Ve(),o=e.generateAndInjectStyles(t,n.styleSheet,n.stylis);return true&&(0,react__WEBPACK_IMPORTED_MODULE_1__.useDebugValue)(o),o}(a,v); true&&e.warnTooManyClasses&&e.warnTooManyClasses(b);var E=te(p,d);return b&&(E+=" "+b),v.className&&(E+=" "+v.className),S[M(g)&&!_.has(g)?"class":"className"]=E,S.ref=s,(0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(g,S)}(D,e,r)} true&&(O.displayName=y);var D=react__WEBPACK_IMPORTED_MODULE_1___default().forwardRef(O);return D.attrs=g,D.componentStyle=I,D.shouldForwardProp=S, true&&(D.displayName=y),D.foldedComponentIds=i?te(a.foldedComponentIds,a.styledComponentId):"",D.styledComponentId=v,D.target=i?a.target:e,Object.defineProperty(D,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(e){this._foldedDefaultProps=i?function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var o=0,r=t;o<r.length;o++)re(e,r[o],!0);return e}({},a.defaultProps,e):e}}), true&&(b(y,v),D.warnTooManyClasses=function(e,t){var n={},o=!1;return function(r){if(!o&&(n[r]=!0,Object.keys(n).length>=200)){var s=t?' with the id of "'.concat(t,'"'):"";console.warn("Over ".concat(200," classes were generated for component ").concat(e).concat(s,".\n")+"Consider using the attrs method, together with a style object for frequently changed styles.\nExample:\n const Component = styled.div.attrs(props => ({\n style: {\n background: props.background,\n },\n }))`width: 100%;`\n\n <Component />"),o=!0,n={}}}}(y,v)),se(D,function(){return".".concat(D.styledComponentId)}),c&&K(D,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0}),D}function et(e,t){for(var n=[e[0]],o=0,r=t.length;o<r;o+=1)n.push(t[o],e[o+1]);return n}var tt=function(e){return Object.assign(e,{isCss:!0})};function nt(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];if(Q(t)||oe(t)){var r=t;return tt(Ge(et(E,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__spreadArray)([r],n,!0))))}var s=t;return 0===n.length&&1===s.length&&"string"==typeof s[0]?Ge(s):tt(Ge(et(s,n)))}function ot(n,o,r){if(void 0===r&&(r=N),!o)throw ce(1,o);var s=function(t){for(var s=[],i=1;i<arguments.length;i++)s[i-1]=arguments[i];return n(o,r,nt.apply(void 0,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__spreadArray)([t],s,!1)))};return s.attrs=function(e){return ot(n,o,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},r),{attrs:Array.prototype.concat(r.attrs,e).filter(Boolean)}))},s.withConfig=function(e){return ot(n,o,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},r),e))},s}var rt=function(e){return ot(Qe,e)},st=rt;_.forEach(function(e){st[e]=rt(e)});var it=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=Ye(e),Ce.registerId(this.componentId+1)}return e.prototype.createStyles=function(e,t,n,o){var r=o(ne(Ge(this.rules,t,n,o)),""),s=this.componentId+e;n.insertRules(s,s,r)},e.prototype.removeStyles=function(e,t){t.clearRules(this.componentId+e)},e.prototype.renderStyles=function(e,t,n,o){e>2&&Ce.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,o)},e}();function at(n){for(var r=[],s=1;s<arguments.length;s++)r[s-1]=arguments[s];var i=nt.apply(void 0,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__spreadArray)([n],r,!1)),a="sc-global-".concat(x(JSON.stringify(i))),c=new it(i,a); true&&b(a);var l=function(e){var t=Ve(),n=react__WEBPACK_IMPORTED_MODULE_1___default().useContext(He),r=react__WEBPACK_IMPORTED_MODULE_1___default().useRef(t.styleSheet.allocateGSInstance(a)).current;return true&&react__WEBPACK_IMPORTED_MODULE_1___default().Children.count(e.children)&&console.warn("The global style component ".concat(a," was given child JSX. createGlobalStyle does not render children.")), true&&i.some(function(e){return"string"==typeof e&&-1!==e.indexOf("@import")})&&console.warn("Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical <link> meta tag to the stylesheet, or simply embedding it manually in your index.html <head> section for a simpler app."),t.styleSheet.server&&u(r,e,t.styleSheet,n,t.stylis),react__WEBPACK_IMPORTED_MODULE_1___default().useLayoutEffect(function(){if(!t.styleSheet.server)return u(r,e,t.styleSheet,n,t.stylis),function(){return c.removeStyles(r,t.styleSheet)}},[r,e,t.styleSheet,n,t.stylis]),null};function u(e,n,o,r,s){if(c.isStatic)c.renderStyles(e,g,o,s);else{var i=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},n),{theme:P(n,r,l.defaultProps)});c.renderStyles(e,i,o,s)}}return react__WEBPACK_IMPORTED_MODULE_1___default().memo(l)}function ct(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o]; true&&"undefined"!=typeof navigator&&"ReactNative"===navigator.product&&console.warn("`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.");var r=ne(nt.apply(void 0,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__spreadArray)([t],n,!1))),s=x(r);return new Fe(s,r)}function lt(e){var n=react__WEBPACK_IMPORTED_MODULE_1___default().forwardRef(function(n,r){var s=P(n,react__WEBPACK_IMPORTED_MODULE_1___default().useContext(He),e.defaultProps);return true&&void 0===s&&console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class "'.concat(V(e),'"')),react__WEBPACK_IMPORTED_MODULE_1___default().createElement(e,(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},n,{theme:s,ref:r}))});return true&&(n.displayName="WithTheme(".concat(V(e),")")),K(n,e)}var ut=function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString(),n=Se(),o=ne([n&&'nonce="'.concat(n,'"'),"".concat(f,'="true"'),"".concat("data-styled-version",'="').concat("6.0.7",'"')].filter(Boolean)," ");return"<style ".concat(o,">").concat(t,"</style>")},this.getStyleTags=function(){if(e.sealed)throw ce(2);return e._emitSheetCSS()},this.getStyleElement=function(){var n;if(e.sealed)throw ce(2);var r=((n={})[f]="",n["data-styled-version"]="6.0.7",n.dangerouslySetInnerHTML={__html:e.instance.toString()},n),s=Se();return s&&(r.nonce=s),[react__WEBPACK_IMPORTED_MODULE_1___default().createElement("style",(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},r,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new Ce({isServer:!0}),this.sealed=!1}return e.prototype.collectStyles=function(e){if(this.sealed)throw ce(2);return react__WEBPACK_IMPORTED_MODULE_1___default().createElement(Me,{sheet:this.instance},e)},e.prototype.interleaveWithNodeStream=function(e){throw ce(3)},e}(),pt={StyleSheet:Ce,mainSheet:Re}; true&&"undefined"!=typeof navigator&&"ReactNative"===navigator.product&&console.warn("It looks like you've imported 'styled-components' on React Native.\nPerhaps you're looking to import 'styled-components/native'?\nRead more about this at https://www.styled-components.com/docs/basics#react-native");var dt="__sc-".concat(f,"__"); true&&"undefined"!=typeof window&&(window[dt]||(window[dt]=0),1===window[dt]&&console.warn("It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\n\nSee https://s-c.sh/2BAXzed for more info."),window[dt]+=1);
- //# sourceMappingURL=styled-components.browser.esm.js.map
- /***/ }),
- /***/ "./src/DataTable/Cell.ts":
- /*!*******************************!*\
- !*** ./src/DataTable/Cell.ts ***!
- \*******************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.CellExtended = exports.CellBase = void 0;
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var media_1 = __webpack_require__(/*! ./media */ "./src/DataTable/media.ts");
- exports.CellBase = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tline-height: normal;\n\t", ";\n\t", ";\n"], ["\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tline-height: normal;\n\t", ";\n\t", ";\n"])), function (_a) {
- var theme = _a.theme, headCell = _a.headCell;
- return theme[headCell ? 'headCells' : 'cells'].style;
- }, function (_a) {
- var noPadding = _a.noPadding;
- return noPadding && 'padding: 0';
- });
- // Flex calculations
- exports.CellExtended = (0, styled_components_1.default)(exports.CellBase)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n\tflex-grow: ", ";\n\tflex-shrink: 0;\n\tflex-basis: 0;\n\tmax-width: ", ";\n\tmin-width: ", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\n\t/* handle hiding cells */\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n"], ["\n\tflex-grow: ", ";\n\tflex-shrink: 0;\n\tflex-basis: 0;\n\tmax-width: ", ";\n\tmin-width: ", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\n\t/* handle hiding cells */\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n"])), function (_a) {
- var button = _a.button, grow = _a.grow;
- return (grow === 0 || button ? 0 : grow || 1);
- }, function (_a) {
- var maxWidth = _a.maxWidth;
- return maxWidth || '100%';
- }, function (_a) {
- var minWidth = _a.minWidth;
- return minWidth || '100px';
- }, function (_a) {
- var width = _a.width;
- return width && (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t\t\tmin-width: ", ";\n\t\t\tmax-width: ", ";\n\t\t"], ["\n\t\t\tmin-width: ", ";\n\t\t\tmax-width: ", ";\n\t\t"])), width, width);
- }, function (_a) {
- var right = _a.right;
- return right && 'justify-content: flex-end';
- }, function (_a) {
- var button = _a.button, center = _a.center;
- return (center || button) && 'justify-content: center';
- }, function (_a) {
- var compact = _a.compact, button = _a.button;
- return (compact || button) && 'padding: 0';
- }, function (_a) {
- var hide = _a.hide;
- return hide &&
- hide === 'sm' && media_1.media.sm(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: none;\n "], ["\n display: none;\n "])));
- }, function (_a) {
- var hide = _a.hide;
- return hide &&
- hide === 'md' && media_1.media.md(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: none;\n "], ["\n display: none;\n "])));
- }, function (_a) {
- var hide = _a.hide;
- return hide &&
- hide === 'lg' && media_1.media.lg(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: none;\n "], ["\n display: none;\n "])));
- }, function (_a) {
- var hide = _a.hide;
- return hide &&
- Number.isInteger(hide) && media_1.media.custom(hide)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n display: none;\n "], ["\n display: none;\n "])));
- });
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
- /***/ }),
- /***/ "./src/DataTable/Checkbox.tsx":
- /*!************************************!*\
- !*** ./src/DataTable/Checkbox.tsx ***!
- \************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts");
- var defaultComponentName = 'input';
- var calculateBaseStyle = function (disabled) { return (__assign(__assign({ fontSize: '18px' }, (!disabled && { cursor: 'pointer' })), { padding: 0, marginTop: '1px', verticalAlign: 'middle', position: 'relative' })); };
- function Checkbox(_a) {
- var name = _a.name, _b = _a.component, component = _b === void 0 ? defaultComponentName : _b, _c = _a.componentOptions, componentOptions = _c === void 0 ? { style: {} } : _c, _d = _a.indeterminate, indeterminate = _d === void 0 ? false : _d, _e = _a.checked, checked = _e === void 0 ? false : _e, _f = _a.disabled, disabled = _f === void 0 ? false : _f, _g = _a.onClick, onClick = _g === void 0 ? util_1.noop : _g;
- var setCheckboxRef = function (checkbox) {
- if (checkbox) {
- // eslint-disable-next-line no-param-reassign
- checkbox.indeterminate = indeterminate;
- }
- };
- var TagName = component;
- var baseStyle = TagName !== defaultComponentName ? componentOptions.style : calculateBaseStyle(disabled);
- var resolvedComponentOptions = React.useMemo(function () { return (0, util_1.handleFunctionProps)(componentOptions, indeterminate); }, [componentOptions, indeterminate]);
- return (React.createElement(TagName
- // allow this component to fully control these options
- , __assign({
- // allow this component to fully control these options
- type: "checkbox", ref: setCheckboxRef, style: baseStyle, onClick: disabled ? util_1.noop : onClick, name: name, "aria-label": name, checked: checked, disabled: disabled }, resolvedComponentOptions, { onChange: util_1.noop })));
- }
- exports["default"] = React.memo(Checkbox);
- /***/ }),
- /***/ "./src/DataTable/ContextMenu.tsx":
- /*!***************************************!*\
- !*** ./src/DataTable/ContextMenu.tsx ***!
- \***************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var useRTL_1 = __webpack_require__(/*! ./hooks/useRTL */ "./src/DataTable/hooks/useRTL.ts");
- var Title = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: center;\n\tflex: 1 0 auto;\n\theight: 100%;\n\tcolor: ", ";\n\tfont-size: ", ";\n\tfont-weight: 400;\n"], ["\n\tdisplay: flex;\n\talign-items: center;\n\tflex: 1 0 auto;\n\theight: 100%;\n\tcolor: ", ";\n\tfont-size: ", ";\n\tfont-weight: 400;\n"])), function (_a) {
- var theme = _a.theme;
- return theme.contextMenu.fontColor;
- }, function (_a) {
- var theme = _a.theme;
- return theme.contextMenu.fontSize;
- });
- var ContextActions = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tflex-wrap: wrap;\n"], ["\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tflex-wrap: wrap;\n"])));
- var ContextMenuStyle = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: inherit;\n\tz-index: 1;\n\talign-items: center;\n\tjustify-content: space-between;\n\tdisplay: flex;\n\t", ";\n\t", ";\n\t", ";\n"], ["\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: inherit;\n\tz-index: 1;\n\talign-items: center;\n\tjustify-content: space-between;\n\tdisplay: flex;\n\t", ";\n\t", ";\n\t", ";\n"])), function (_a) {
- var rtl = _a.rtl;
- return rtl && 'direction: rtl';
- }, function (_a) {
- var theme = _a.theme;
- return theme.contextMenu.style;
- }, function (_a) {
- var theme = _a.theme, visible = _a.visible;
- return visible && theme.contextMenu.activeStyle;
- });
- var generateDefaultContextTitle = function (contextMessage, selectedCount, rtl) {
- if (selectedCount === 0) {
- return null;
- }
- var datumName = selectedCount === 1 ? contextMessage.singular : contextMessage.plural;
- // TODO: add mock document rtl tests
- if (rtl) {
- return "".concat(selectedCount, " ").concat(contextMessage.message || '', " ").concat(datumName);
- }
- return "".concat(selectedCount, " ").concat(datumName, " ").concat(contextMessage.message || '');
- };
- function ContextMenu(_a) {
- var contextMessage = _a.contextMessage, contextActions = _a.contextActions, contextComponent = _a.contextComponent, selectedCount = _a.selectedCount, direction = _a.direction;
- var isRTL = (0, useRTL_1.default)(direction);
- var visible = selectedCount > 0;
- if (contextComponent) {
- return (React.createElement(ContextMenuStyle, { visible: visible }, React.cloneElement(contextComponent, { selectedCount: selectedCount })));
- }
- return (React.createElement(ContextMenuStyle, { visible: visible, rtl: isRTL },
- React.createElement(Title, null, generateDefaultContextTitle(contextMessage, selectedCount, isRTL)),
- React.createElement(ContextActions, null, contextActions)));
- }
- exports["default"] = ContextMenu;
- var templateObject_1, templateObject_2, templateObject_3;
- /***/ }),
- /***/ "./src/DataTable/DataTable.tsx":
- /*!*************************************!*\
- !*** ./src/DataTable/DataTable.tsx ***!
- \*************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var tableReducer_1 = __webpack_require__(/*! ./tableReducer */ "./src/DataTable/tableReducer.ts");
- var Table_1 = __webpack_require__(/*! ./Table */ "./src/DataTable/Table.tsx");
- var TableHead_1 = __webpack_require__(/*! ./TableHead */ "./src/DataTable/TableHead.tsx");
- var TableHeadRow_1 = __webpack_require__(/*! ./TableHeadRow */ "./src/DataTable/TableHeadRow.tsx");
- var TableRow_1 = __webpack_require__(/*! ./TableRow */ "./src/DataTable/TableRow.tsx");
- var TableCol_1 = __webpack_require__(/*! ./TableCol */ "./src/DataTable/TableCol.tsx");
- var TableColCheckbox_1 = __webpack_require__(/*! ./TableColCheckbox */ "./src/DataTable/TableColCheckbox.tsx");
- var TableHeader_1 = __webpack_require__(/*! ./TableHeader */ "./src/DataTable/TableHeader.tsx");
- var TableSubheader_1 = __webpack_require__(/*! ./TableSubheader */ "./src/DataTable/TableSubheader.tsx");
- var TableBody_1 = __webpack_require__(/*! ./TableBody */ "./src/DataTable/TableBody.tsx");
- var ResponsiveWrapper_1 = __webpack_require__(/*! ./ResponsiveWrapper */ "./src/DataTable/ResponsiveWrapper.tsx");
- var ProgressWrapper_1 = __webpack_require__(/*! ./ProgressWrapper */ "./src/DataTable/ProgressWrapper.tsx");
- var TableWrapper_1 = __webpack_require__(/*! ./TableWrapper */ "./src/DataTable/TableWrapper.tsx");
- var TableColExpander_1 = __webpack_require__(/*! ./TableColExpander */ "./src/DataTable/TableColExpander.tsx");
- var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts");
- var NoDataWrapper_1 = __webpack_require__(/*! ./NoDataWrapper */ "./src/DataTable/NoDataWrapper.tsx");
- var Pagination_1 = __webpack_require__(/*! ./Pagination */ "./src/DataTable/Pagination.tsx");
- var useDidUpdateEffect_1 = __webpack_require__(/*! ./hooks/useDidUpdateEffect */ "./src/DataTable/hooks/useDidUpdateEffect.ts");
- var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts");
- var defaultProps_1 = __webpack_require__(/*! ./defaultProps */ "./src/DataTable/defaultProps.tsx");
- var styles_1 = __webpack_require__(/*! ./styles */ "./src/DataTable/styles.ts");
- var types_1 = __webpack_require__(/*! ./types */ "./src/DataTable/types.ts");
- var useColumns_1 = __webpack_require__(/*! ./hooks/useColumns */ "./src/DataTable/hooks/useColumns.ts");
- function DataTable(props) {
- var _a = props.data, data = _a === void 0 ? defaultProps_1.defaultProps.data : _a, _b = props.columns, columns = _b === void 0 ? defaultProps_1.defaultProps.columns : _b, _c = props.title, title = _c === void 0 ? defaultProps_1.defaultProps.title : _c, _d = props.actions, actions = _d === void 0 ? defaultProps_1.defaultProps.actions : _d, _e = props.keyField, keyField = _e === void 0 ? defaultProps_1.defaultProps.keyField : _e, _f = props.striped, striped = _f === void 0 ? defaultProps_1.defaultProps.striped : _f, _g = props.highlightOnHover, highlightOnHover = _g === void 0 ? defaultProps_1.defaultProps.highlightOnHover : _g, _h = props.pointerOnHover, pointerOnHover = _h === void 0 ? defaultProps_1.defaultProps.pointerOnHover : _h, _j = props.dense, dense = _j === void 0 ? defaultProps_1.defaultProps.dense : _j, _k = props.selectableRows, selectableRows = _k === void 0 ? defaultProps_1.defaultProps.selectableRows : _k, _l = props.selectableRowsSingle, selectableRowsSingle = _l === void 0 ? defaultProps_1.defaultProps.selectableRowsSingle : _l, _m = props.selectableRowsHighlight, selectableRowsHighlight = _m === void 0 ? defaultProps_1.defaultProps.selectableRowsHighlight : _m, _o = props.selectableRowsNoSelectAll, selectableRowsNoSelectAll = _o === void 0 ? defaultProps_1.defaultProps.selectableRowsNoSelectAll : _o, _p = props.selectableRowsVisibleOnly, selectableRowsVisibleOnly = _p === void 0 ? defaultProps_1.defaultProps.selectableRowsVisibleOnly : _p, _q = props.selectableRowSelected, selectableRowSelected = _q === void 0 ? defaultProps_1.defaultProps.selectableRowSelected : _q, _r = props.selectableRowDisabled, selectableRowDisabled = _r === void 0 ? defaultProps_1.defaultProps.selectableRowDisabled : _r, _s = props.selectableRowsComponent, selectableRowsComponent = _s === void 0 ? defaultProps_1.defaultProps.selectableRowsComponent : _s, _t = props.selectableRowsComponentProps, selectableRowsComponentProps = _t === void 0 ? defaultProps_1.defaultProps.selectableRowsComponentProps : _t, _u = props.onRowExpandToggled, onRowExpandToggled = _u === void 0 ? defaultProps_1.defaultProps.onRowExpandToggled : _u, _v = props.onSelectedRowsChange, onSelectedRowsChange = _v === void 0 ? defaultProps_1.defaultProps.onSelectedRowsChange : _v, _w = props.expandableIcon, expandableIcon = _w === void 0 ? defaultProps_1.defaultProps.expandableIcon : _w, _x = props.onChangeRowsPerPage, onChangeRowsPerPage = _x === void 0 ? defaultProps_1.defaultProps.onChangeRowsPerPage : _x, _y = props.onChangePage, onChangePage = _y === void 0 ? defaultProps_1.defaultProps.onChangePage : _y, _z = props.paginationServer, paginationServer = _z === void 0 ? defaultProps_1.defaultProps.paginationServer : _z, _0 = props.paginationServerOptions, paginationServerOptions = _0 === void 0 ? defaultProps_1.defaultProps.paginationServerOptions : _0, _1 = props.paginationTotalRows, paginationTotalRows = _1 === void 0 ? defaultProps_1.defaultProps.paginationTotalRows : _1, _2 = props.paginationDefaultPage, paginationDefaultPage = _2 === void 0 ? defaultProps_1.defaultProps.paginationDefaultPage : _2, _3 = props.paginationResetDefaultPage, paginationResetDefaultPage = _3 === void 0 ? defaultProps_1.defaultProps.paginationResetDefaultPage : _3, _4 = props.paginationPerPage, paginationPerPage = _4 === void 0 ? defaultProps_1.defaultProps.paginationPerPage : _4, _5 = props.paginationRowsPerPageOptions, paginationRowsPerPageOptions = _5 === void 0 ? defaultProps_1.defaultProps.paginationRowsPerPageOptions : _5, _6 = props.paginationIconLastPage, paginationIconLastPage = _6 === void 0 ? defaultProps_1.defaultProps.paginationIconLastPage : _6, _7 = props.paginationIconFirstPage, paginationIconFirstPage = _7 === void 0 ? defaultProps_1.defaultProps.paginationIconFirstPage : _7, _8 = props.paginationIconNext, paginationIconNext = _8 === void 0 ? defaultProps_1.defaultProps.paginationIconNext : _8, _9 = props.paginationIconPrevious, paginationIconPrevious = _9 === void 0 ? defaultProps_1.defaultProps.paginationIconPrevious : _9, _10 = props.paginationComponent, paginationComponent = _10 === void 0 ? defaultProps_1.defaultProps.paginationComponent : _10, _11 = props.paginationComponentOptions, paginationComponentOptions = _11 === void 0 ? defaultProps_1.defaultProps.paginationComponentOptions : _11, _12 = props.responsive, responsive = _12 === void 0 ? defaultProps_1.defaultProps.responsive : _12, _13 = props.progressPending, progressPending = _13 === void 0 ? defaultProps_1.defaultProps.progressPending : _13, _14 = props.progressComponent, progressComponent = _14 === void 0 ? defaultProps_1.defaultProps.progressComponent : _14, _15 = props.persistTableHead, persistTableHead = _15 === void 0 ? defaultProps_1.defaultProps.persistTableHead : _15, _16 = props.noDataComponent, noDataComponent = _16 === void 0 ? defaultProps_1.defaultProps.noDataComponent : _16, _17 = props.disabled, disabled = _17 === void 0 ? defaultProps_1.defaultProps.disabled : _17, _18 = props.noTableHead, noTableHead = _18 === void 0 ? defaultProps_1.defaultProps.noTableHead : _18, _19 = props.noHeader, noHeader = _19 === void 0 ? defaultProps_1.defaultProps.noHeader : _19, _20 = props.fixedHeader, fixedHeader = _20 === void 0 ? defaultProps_1.defaultProps.fixedHeader : _20, _21 = props.fixedHeaderScrollHeight, fixedHeaderScrollHeight = _21 === void 0 ? defaultProps_1.defaultProps.fixedHeaderScrollHeight : _21, _22 = props.pagination, pagination = _22 === void 0 ? defaultProps_1.defaultProps.pagination : _22, _23 = props.subHeader, subHeader = _23 === void 0 ? defaultProps_1.defaultProps.subHeader : _23, _24 = props.subHeaderAlign, subHeaderAlign = _24 === void 0 ? defaultProps_1.defaultProps.subHeaderAlign : _24, _25 = props.subHeaderWrap, subHeaderWrap = _25 === void 0 ? defaultProps_1.defaultProps.subHeaderWrap : _25, _26 = props.subHeaderComponent, subHeaderComponent = _26 === void 0 ? defaultProps_1.defaultProps.subHeaderComponent : _26, _27 = props.noContextMenu, noContextMenu = _27 === void 0 ? defaultProps_1.defaultProps.noContextMenu : _27, _28 = props.contextMessage, contextMessage = _28 === void 0 ? defaultProps_1.defaultProps.contextMessage : _28, _29 = props.contextActions, contextActions = _29 === void 0 ? defaultProps_1.defaultProps.contextActions : _29, _30 = props.contextComponent, contextComponent = _30 === void 0 ? defaultProps_1.defaultProps.contextComponent : _30, _31 = props.expandableRows, expandableRows = _31 === void 0 ? defaultProps_1.defaultProps.expandableRows : _31, _32 = props.onRowClicked, onRowClicked = _32 === void 0 ? defaultProps_1.defaultProps.onRowClicked : _32, _33 = props.onRowDoubleClicked, onRowDoubleClicked = _33 === void 0 ? defaultProps_1.defaultProps.onRowDoubleClicked : _33, _34 = props.onRowMouseEnter, onRowMouseEnter = _34 === void 0 ? defaultProps_1.defaultProps.onRowMouseEnter : _34, _35 = props.onRowMouseLeave, onRowMouseLeave = _35 === void 0 ? defaultProps_1.defaultProps.onRowMouseLeave : _35, _36 = props.sortIcon, sortIcon = _36 === void 0 ? defaultProps_1.defaultProps.sortIcon : _36, _37 = props.onSort, onSort = _37 === void 0 ? defaultProps_1.defaultProps.onSort : _37, _38 = props.sortFunction, sortFunction = _38 === void 0 ? defaultProps_1.defaultProps.sortFunction : _38, _39 = props.sortServer, sortServer = _39 === void 0 ? defaultProps_1.defaultProps.sortServer : _39, _40 = props.expandableRowsComponent, expandableRowsComponent = _40 === void 0 ? defaultProps_1.defaultProps.expandableRowsComponent : _40, _41 = props.expandableRowsComponentProps, expandableRowsComponentProps = _41 === void 0 ? defaultProps_1.defaultProps.expandableRowsComponentProps : _41, _42 = props.expandableRowDisabled, expandableRowDisabled = _42 === void 0 ? defaultProps_1.defaultProps.expandableRowDisabled : _42, _43 = props.expandableRowsHideExpander, expandableRowsHideExpander = _43 === void 0 ? defaultProps_1.defaultProps.expandableRowsHideExpander : _43, _44 = props.expandOnRowClicked, expandOnRowClicked = _44 === void 0 ? defaultProps_1.defaultProps.expandOnRowClicked : _44, _45 = props.expandOnRowDoubleClicked, expandOnRowDoubleClicked = _45 === void 0 ? defaultProps_1.defaultProps.expandOnRowDoubleClicked : _45, _46 = props.expandableRowExpanded, expandableRowExpanded = _46 === void 0 ? defaultProps_1.defaultProps.expandableRowExpanded : _46, _47 = props.expandableInheritConditionalStyles, expandableInheritConditionalStyles = _47 === void 0 ? defaultProps_1.defaultProps.expandableInheritConditionalStyles : _47, _48 = props.defaultSortFieldId, defaultSortFieldId = _48 === void 0 ? defaultProps_1.defaultProps.defaultSortFieldId : _48, _49 = props.defaultSortAsc, defaultSortAsc = _49 === void 0 ? defaultProps_1.defaultProps.defaultSortAsc : _49, _50 = props.clearSelectedRows, clearSelectedRows = _50 === void 0 ? defaultProps_1.defaultProps.clearSelectedRows : _50, _51 = props.conditionalRowStyles, conditionalRowStyles = _51 === void 0 ? defaultProps_1.defaultProps.conditionalRowStyles : _51, _52 = props.theme, theme = _52 === void 0 ? defaultProps_1.defaultProps.theme : _52, _53 = props.customStyles, customStyles = _53 === void 0 ? defaultProps_1.defaultProps.customStyles : _53, _54 = props.direction, direction = _54 === void 0 ? defaultProps_1.defaultProps.direction : _54, _55 = props.onColumnOrderChange, onColumnOrderChange = _55 === void 0 ? defaultProps_1.defaultProps.onColumnOrderChange : _55, className = props.className;
- var _56 = (0, useColumns_1.default)(columns, onColumnOrderChange, defaultSortFieldId, defaultSortAsc), tableColumns = _56.tableColumns, draggingColumnId = _56.draggingColumnId, handleDragStart = _56.handleDragStart, handleDragEnter = _56.handleDragEnter, handleDragOver = _56.handleDragOver, handleDragLeave = _56.handleDragLeave, handleDragEnd = _56.handleDragEnd, defaultSortDirection = _56.defaultSortDirection, defaultSortColumn = _56.defaultSortColumn;
- var _57 = React.useReducer(tableReducer_1.tableReducer, {
- allSelected: false,
- selectedCount: 0,
- selectedRows: [],
- selectedColumn: defaultSortColumn,
- toggleOnSelectedRowsChange: false,
- sortDirection: defaultSortDirection,
- currentPage: paginationDefaultPage,
- rowsPerPage: paginationPerPage,
- selectedRowsFlag: false,
- contextMessage: defaultProps_1.defaultProps.contextMessage,
- }), _58 = _57[0], rowsPerPage = _58.rowsPerPage, currentPage = _58.currentPage, selectedRows = _58.selectedRows, allSelected = _58.allSelected, selectedCount = _58.selectedCount, selectedColumn = _58.selectedColumn, sortDirection = _58.sortDirection, toggleOnSelectedRowsChange = _58.toggleOnSelectedRowsChange, dispatch = _57[1];
- var _59 = paginationServerOptions.persistSelectedOnSort, persistSelectedOnSort = _59 === void 0 ? false : _59, _60 = paginationServerOptions.persistSelectedOnPageChange, persistSelectedOnPageChange = _60 === void 0 ? false : _60;
- var mergeSelections = !!(paginationServer && (persistSelectedOnPageChange || persistSelectedOnSort));
- var enabledPagination = pagination && !progressPending && data.length > 0;
- var Pagination = paginationComponent || Pagination_1.default;
- var currentTheme = React.useMemo(function () { return (0, styles_1.createStyles)(customStyles, theme); }, [customStyles, theme]);
- var wrapperProps = React.useMemo(function () { return (__assign({}, (direction !== 'auto' && { dir: direction }))); }, [direction]);
- var sortedData = React.useMemo(function () {
- // server-side sorting bypasses internal sorting
- if (sortServer) {
- return data;
- }
- if ((selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.sortFunction) && typeof selectedColumn.sortFunction === 'function') {
- var sortFn_1 = selectedColumn.sortFunction;
- var customSortFunction = sortDirection === types_1.SortOrder.ASC ? sortFn_1 : function (a, b) { return sortFn_1(a, b) * -1; };
- return __spreadArray([], data, true).sort(customSortFunction);
- }
- return (0, util_1.sort)(data, selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.selector, sortDirection, sortFunction);
- }, [sortServer, selectedColumn, sortDirection, data, sortFunction]);
- var tableRows = React.useMemo(function () {
- if (pagination && !paginationServer) {
- // when using client-side pagination we can just slice the rows set
- var lastIndex = currentPage * rowsPerPage;
- var firstIndex = lastIndex - rowsPerPage;
- return sortedData.slice(firstIndex, lastIndex);
- }
- return sortedData;
- }, [currentPage, pagination, paginationServer, rowsPerPage, sortedData]);
- var handleSort = React.useCallback(function (action) {
- dispatch(action);
- }, []);
- var handleSelectAllRows = React.useCallback(function (action) {
- dispatch(action);
- }, []);
- var handleSelectedRow = React.useCallback(function (action) {
- dispatch(action);
- }, []);
- var handleRowClicked = React.useCallback(function (row, e) { return onRowClicked(row, e); }, [onRowClicked]);
- var handleRowDoubleClicked = React.useCallback(function (row, e) { return onRowDoubleClicked(row, e); }, [onRowDoubleClicked]);
- var handleRowMouseEnter = React.useCallback(function (row, e) { return onRowMouseEnter(row, e); }, [onRowMouseEnter]);
- var handleRowMouseLeave = React.useCallback(function (row, e) { return onRowMouseLeave(row, e); }, [onRowMouseLeave]);
- var handleChangePage = React.useCallback(function (page) {
- return dispatch({
- type: 'CHANGE_PAGE',
- page: page,
- paginationServer: paginationServer,
- visibleOnly: selectableRowsVisibleOnly,
- persistSelectedOnPageChange: persistSelectedOnPageChange,
- });
- }, [paginationServer, persistSelectedOnPageChange, selectableRowsVisibleOnly]);
- var handleChangeRowsPerPage = React.useCallback(function (newRowsPerPage) {
- var rowCount = paginationTotalRows || tableRows.length;
- var updatedPage = (0, util_1.getNumberOfPages)(rowCount, newRowsPerPage);
- var recalculatedPage = (0, util_1.recalculatePage)(currentPage, updatedPage);
- // update the currentPage for client-side pagination
- // server - side should be handled by onChangeRowsPerPage
- if (!paginationServer) {
- handleChangePage(recalculatedPage);
- }
- dispatch({ type: 'CHANGE_ROWS_PER_PAGE', page: recalculatedPage, rowsPerPage: newRowsPerPage });
- }, [currentPage, handleChangePage, paginationServer, paginationTotalRows, tableRows.length]);
- var showTableHead = function () {
- if (noTableHead) {
- return false;
- }
- if (persistTableHead) {
- return true;
- }
- return sortedData.length > 0 && !progressPending;
- };
- var showHeader = function () {
- if (noHeader) {
- return false;
- }
- if (title) {
- return true;
- }
- if (actions) {
- return true;
- }
- return false;
- };
- // recalculate the pagination and currentPage if the rows length changes
- if (pagination && !paginationServer && sortedData.length > 0 && tableRows.length === 0) {
- var updatedPage = (0, util_1.getNumberOfPages)(sortedData.length, rowsPerPage);
- var recalculatedPage = (0, util_1.recalculatePage)(currentPage, updatedPage);
- handleChangePage(recalculatedPage);
- }
- (0, useDidUpdateEffect_1.default)(function () {
- onSelectedRowsChange({ allSelected: allSelected, selectedCount: selectedCount, selectedRows: selectedRows.slice(0) });
- // onSelectedRowsChange trigger is controlled by toggleOnSelectedRowsChange state
- }, [toggleOnSelectedRowsChange]);
- (0, useDidUpdateEffect_1.default)(function () {
- onSort(selectedColumn, sortDirection, sortedData.slice(0));
- // do not update on sortedData
- }, [selectedColumn, sortDirection]);
- (0, useDidUpdateEffect_1.default)(function () {
- onChangePage(currentPage, paginationTotalRows || sortedData.length);
- }, [currentPage]);
- (0, useDidUpdateEffect_1.default)(function () {
- onChangeRowsPerPage(rowsPerPage, currentPage);
- }, [rowsPerPage]);
- (0, useDidUpdateEffect_1.default)(function () {
- handleChangePage(paginationDefaultPage);
- }, [paginationDefaultPage, paginationResetDefaultPage]);
- (0, useDidUpdateEffect_1.default)(function () {
- if (pagination && paginationServer && paginationTotalRows > 0) {
- var updatedPage = (0, util_1.getNumberOfPages)(paginationTotalRows, rowsPerPage);
- var recalculatedPage = (0, util_1.recalculatePage)(currentPage, updatedPage);
- if (currentPage !== recalculatedPage) {
- handleChangePage(recalculatedPage);
- }
- }
- }, [paginationTotalRows]);
- React.useEffect(function () {
- dispatch({ type: 'CLEAR_SELECTED_ROWS', selectedRowsFlag: clearSelectedRows });
- }, [selectableRowsSingle, clearSelectedRows]);
- React.useEffect(function () {
- if (!selectableRowSelected) {
- return;
- }
- var preSelectedRows = sortedData.filter(function (row) { return selectableRowSelected(row); });
- // if selectableRowsSingle mode then return the first match
- var selected = selectableRowsSingle ? preSelectedRows.slice(0, 1) : preSelectedRows;
- dispatch({
- type: 'SELECT_MULTIPLE_ROWS',
- keyField: keyField,
- selectedRows: selected,
- totalRows: sortedData.length,
- mergeSelections: mergeSelections,
- });
- // We only want to update the selectedRowState if data changes
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [data, selectableRowSelected]);
- var visibleRows = selectableRowsVisibleOnly ? tableRows : sortedData;
- var showSelectAll = persistSelectedOnPageChange || selectableRowsSingle || selectableRowsNoSelectAll;
- return (React.createElement(styled_components_1.ThemeProvider, { theme: currentTheme },
- showHeader() && (React.createElement(TableHeader_1.default, { title: title, actions: actions, showMenu: !noContextMenu, selectedCount: selectedCount, direction: direction, contextActions: contextActions, contextComponent: contextComponent, contextMessage: contextMessage })),
- subHeader && (React.createElement(TableSubheader_1.default, { align: subHeaderAlign, wrapContent: subHeaderWrap }, subHeaderComponent)),
- React.createElement(ResponsiveWrapper_1.default, __assign({ responsive: responsive, fixedHeader: fixedHeader, fixedHeaderScrollHeight: fixedHeaderScrollHeight, className: className }, wrapperProps),
- React.createElement(TableWrapper_1.default, null,
- progressPending && !persistTableHead && React.createElement(ProgressWrapper_1.default, null, progressComponent),
- React.createElement(Table_1.default, { disabled: disabled, className: "rdt_Table", role: "table" },
- showTableHead() && (React.createElement(TableHead_1.default, { className: "rdt_TableHead", role: "rowgroup", fixedHeader: fixedHeader },
- React.createElement(TableHeadRow_1.default, { className: "rdt_TableHeadRow", role: "row", dense: dense },
- selectableRows &&
- (showSelectAll ? (React.createElement(Cell_1.CellBase, { style: { flex: '0 0 48px' } })) : (React.createElement(TableColCheckbox_1.default, { allSelected: allSelected, selectedRows: selectedRows, selectableRowsComponent: selectableRowsComponent, selectableRowsComponentProps: selectableRowsComponentProps, selectableRowDisabled: selectableRowDisabled, rowData: visibleRows, keyField: keyField, mergeSelections: mergeSelections, onSelectAllRows: handleSelectAllRows }))),
- expandableRows && !expandableRowsHideExpander && React.createElement(TableColExpander_1.default, null),
- tableColumns.map(function (column) { return (React.createElement(TableCol_1.default, { key: column.id, column: column, selectedColumn: selectedColumn, disabled: progressPending || sortedData.length === 0, pagination: pagination, paginationServer: paginationServer, persistSelectedOnSort: persistSelectedOnSort, selectableRowsVisibleOnly: selectableRowsVisibleOnly, sortDirection: sortDirection, sortIcon: sortIcon, sortServer: sortServer, onSort: handleSort, onDragStart: handleDragStart, onDragOver: handleDragOver, onDragEnd: handleDragEnd, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, draggingColumnId: draggingColumnId })); })))),
- !sortedData.length && !progressPending && React.createElement(NoDataWrapper_1.default, null, noDataComponent),
- progressPending && persistTableHead && React.createElement(ProgressWrapper_1.default, null, progressComponent),
- !progressPending && sortedData.length > 0 && (React.createElement(TableBody_1.default, { className: "rdt_TableBody", role: "rowgroup" }, tableRows.map(function (row, i) {
- var key = (0, util_1.prop)(row, keyField);
- var id = (0, util_1.isEmpty)(key) ? i : key;
- var selected = (0, util_1.isRowSelected)(row, selectedRows, keyField);
- var expanderExpander = !!(expandableRows && expandableRowExpanded && expandableRowExpanded(row));
- var expanderDisabled = !!(expandableRows && expandableRowDisabled && expandableRowDisabled(row));
- return (React.createElement(TableRow_1.default, { id: id, key: id, keyField: keyField, "data-row-id": id, columns: tableColumns, row: row, rowCount: sortedData.length, rowIndex: i, selectableRows: selectableRows, expandableRows: expandableRows, expandableIcon: expandableIcon, highlightOnHover: highlightOnHover, pointerOnHover: pointerOnHover, dense: dense, expandOnRowClicked: expandOnRowClicked, expandOnRowDoubleClicked: expandOnRowDoubleClicked, expandableRowsComponent: expandableRowsComponent, expandableRowsComponentProps: expandableRowsComponentProps, expandableRowsHideExpander: expandableRowsHideExpander, defaultExpanderDisabled: expanderDisabled, defaultExpanded: expanderExpander, expandableInheritConditionalStyles: expandableInheritConditionalStyles, conditionalRowStyles: conditionalRowStyles, selected: selected, selectableRowsHighlight: selectableRowsHighlight, selectableRowsComponent: selectableRowsComponent, selectableRowsComponentProps: selectableRowsComponentProps, selectableRowDisabled: selectableRowDisabled, selectableRowsSingle: selectableRowsSingle, striped: striped, onRowExpandToggled: onRowExpandToggled, onRowClicked: handleRowClicked, onRowDoubleClicked: handleRowDoubleClicked, onRowMouseEnter: handleRowMouseEnter, onRowMouseLeave: handleRowMouseLeave, onSelectedRow: handleSelectedRow, draggingColumnId: draggingColumnId, onDragStart: handleDragStart, onDragOver: handleDragOver, onDragEnd: handleDragEnd, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave }));
- })))))),
- enabledPagination && (React.createElement("div", null,
- React.createElement(Pagination, { onChangePage: handleChangePage, onChangeRowsPerPage: handleChangeRowsPerPage, rowCount: paginationTotalRows || sortedData.length, currentPage: currentPage, rowsPerPage: rowsPerPage, direction: direction, paginationRowsPerPageOptions: paginationRowsPerPageOptions, paginationIconLastPage: paginationIconLastPage, paginationIconFirstPage: paginationIconFirstPage, paginationIconNext: paginationIconNext, paginationIconPrevious: paginationIconPrevious, paginationComponentOptions: paginationComponentOptions })))));
- }
- exports["default"] = React.memo(DataTable);
- /***/ }),
- /***/ "./src/DataTable/ExpanderButton.tsx":
- /*!******************************************!*\
- !*** ./src/DataTable/ExpanderButton.tsx ***!
- \******************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var ButtonStyle = styled_components_1.default.button(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n\tborder: none;\n\tbackground-color: transparent;\n\t", ";\n"], ["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n\tborder: none;\n\tbackground-color: transparent;\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.expanderButton.style;
- });
- function ExpanderButton(_a) {
- var _b = _a.disabled, disabled = _b === void 0 ? false : _b, _c = _a.expanded, expanded = _c === void 0 ? false : _c, expandableIcon = _a.expandableIcon, id = _a.id, row = _a.row, onToggled = _a.onToggled;
- var icon = expanded ? expandableIcon.expanded : expandableIcon.collapsed;
- var handleToggle = function () { return onToggled && onToggled(row); };
- return (React.createElement(ButtonStyle, { "aria-disabled": disabled, onClick: handleToggle, "data-testid": "expander-button-".concat(id), disabled: disabled, "aria-label": expanded ? 'Collapse Row' : 'Expand Row', role: "button", type: "button" }, icon));
- }
- exports["default"] = ExpanderButton;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/ExpanderRow.tsx":
- /*!***************************************!*\
- !*** ./src/DataTable/ExpanderRow.tsx ***!
- \***************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- // @ts-ignore
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var ExpanderRowStyle = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t", ";\n\t", ";\n"], ["\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t", ";\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.expanderRow.style;
- }, function (_a) {
- var extendedRowStyle = _a.extendedRowStyle;
- return extendedRowStyle;
- });
- function ExpanderRow(_a) {
- var data = _a.data, ExpanderComponent = _a.ExpanderComponent, expanderComponentProps = _a.expanderComponentProps, extendedRowStyle = _a.extendedRowStyle, extendedClassNames = _a.extendedClassNames;
- // we need to strip of rdt_TableRow from extendedClassNames
- var classNamesSplit = extendedClassNames.split(' ').filter(function (c) { return c !== 'rdt_TableRow'; });
- var classNames = __spreadArray(['rdt_ExpanderRow'], classNamesSplit, true).join(' ');
- return (React.createElement(ExpanderRowStyle, { className: classNames, extendedRowStyle: extendedRowStyle },
- React.createElement(ExpanderComponent, __assign({ data: data }, expanderComponentProps))));
- }
- exports["default"] = React.memo(ExpanderRow);
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/NoDataWrapper.tsx":
- /*!*****************************************!*\
- !*** ./src/DataTable/NoDataWrapper.tsx ***!
- \*****************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var NoDataWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\t", ";\n"], ["\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.noData.style;
- });
- exports["default"] = NoDataWrapper;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/Pagination.tsx":
- /*!**************************************!*\
- !*** ./src/DataTable/Pagination.tsx ***!
- \**************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Select_1 = __webpack_require__(/*! ./Select */ "./src/DataTable/Select.tsx");
- var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts");
- var useWindowSize_1 = __webpack_require__(/*! ./hooks/useWindowSize */ "./src/DataTable/hooks/useWindowSize.ts");
- var useRTL_1 = __webpack_require__(/*! ./hooks/useRTL */ "./src/DataTable/hooks/useRTL.ts");
- var media_1 = __webpack_require__(/*! ./media */ "./src/DataTable/media.ts");
- var defaultProps_1 = __webpack_require__(/*! ./defaultProps */ "./src/DataTable/defaultProps.tsx");
- var defaultComponentOptions = {
- rowsPerPageText: 'Rows per page:',
- rangeSeparatorText: 'of',
- noRowsPerPage: false,
- selectAllRowsItem: false,
- selectAllRowsItemText: 'All',
- };
- var PaginationWrapper = styled_components_1.default.nav(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tpadding-right: 8px;\n\tpadding-left: 8px;\n\twidth: 100%;\n\t", ";\n"], ["\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tpadding-right: 8px;\n\tpadding-left: 8px;\n\twidth: 100%;\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.pagination.style;
- });
- var Button = styled_components_1.default.button(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tposition: relative;\n\tdisplay: block;\n\tuser-select: none;\n\tborder: none;\n\t", ";\n\t", ";\n"], ["\n\tposition: relative;\n\tdisplay: block;\n\tuser-select: none;\n\tborder: none;\n\t", ";\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.pagination.pageButtonsStyle;
- }, function (_a) {
- var isRTL = _a.isRTL;
- return isRTL && 'transform: scale(-1, -1)';
- });
- var PageList = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: center;\n\tborder-radius: 4px;\n\twhite-space: nowrap;\n\t", ";\n"], ["\n\tdisplay: flex;\n\talign-items: center;\n\tborder-radius: 4px;\n\twhite-space: nowrap;\n\t", ";\n"])), media_1.media.sm(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n width: 100%;\n justify-content: space-around;\n "], ["\n width: 100%;\n justify-content: space-around;\n "]))));
- var Span = styled_components_1.default.span(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n\tflex-shrink: 1;\n\tuser-select: none;\n"], ["\n\tflex-shrink: 1;\n\tuser-select: none;\n"])));
- var Range = (0, styled_components_1.default)(Span)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n\tmargin: 0 24px;\n"], ["\n\tmargin: 0 24px;\n"])));
- var RowLabel = (0, styled_components_1.default)(Span)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n\tmargin: 0 4px;\n"], ["\n\tmargin: 0 4px;\n"])));
- function Pagination(_a) {
- var rowsPerPage = _a.rowsPerPage, rowCount = _a.rowCount, currentPage = _a.currentPage, _b = _a.direction, direction = _b === void 0 ? defaultProps_1.defaultProps.direction : _b, _c = _a.paginationRowsPerPageOptions, paginationRowsPerPageOptions = _c === void 0 ? defaultProps_1.defaultProps.paginationRowsPerPageOptions : _c, _d = _a.paginationIconLastPage, paginationIconLastPage = _d === void 0 ? defaultProps_1.defaultProps.paginationIconLastPage : _d, _e = _a.paginationIconFirstPage, paginationIconFirstPage = _e === void 0 ? defaultProps_1.defaultProps.paginationIconFirstPage : _e, _f = _a.paginationIconNext, paginationIconNext = _f === void 0 ? defaultProps_1.defaultProps.paginationIconNext : _f, _g = _a.paginationIconPrevious, paginationIconPrevious = _g === void 0 ? defaultProps_1.defaultProps.paginationIconPrevious : _g, _h = _a.paginationComponentOptions, paginationComponentOptions = _h === void 0 ? defaultProps_1.defaultProps.paginationComponentOptions : _h, _j = _a.onChangeRowsPerPage, onChangeRowsPerPage = _j === void 0 ? defaultProps_1.defaultProps.onChangeRowsPerPage : _j, _k = _a.onChangePage, onChangePage = _k === void 0 ? defaultProps_1.defaultProps.onChangePage : _k;
- var windowSize = (0, useWindowSize_1.default)();
- var isRTL = (0, useRTL_1.default)(direction);
- var shouldShow = windowSize.width && windowSize.width > media_1.SMALL;
- // const isRTL = detectRTL(direction);
- var numPages = (0, util_1.getNumberOfPages)(rowCount, rowsPerPage);
- var lastIndex = currentPage * rowsPerPage;
- var firstIndex = lastIndex - rowsPerPage + 1;
- var disabledLesser = currentPage === 1;
- var disabledGreater = currentPage === numPages;
- var options = __assign(__assign({}, defaultComponentOptions), paginationComponentOptions);
- var range = currentPage === numPages
- ? "".concat(firstIndex, "-").concat(rowCount, " ").concat(options.rangeSeparatorText, " ").concat(rowCount)
- : "".concat(firstIndex, "-").concat(lastIndex, " ").concat(options.rangeSeparatorText, " ").concat(rowCount);
- var handlePrevious = React.useCallback(function () { return onChangePage(currentPage - 1); }, [currentPage, onChangePage]);
- var handleNext = React.useCallback(function () { return onChangePage(currentPage + 1); }, [currentPage, onChangePage]);
- var handleFirst = React.useCallback(function () { return onChangePage(1); }, [onChangePage]);
- var handleLast = React.useCallback(function () { return onChangePage((0, util_1.getNumberOfPages)(rowCount, rowsPerPage)); }, [onChangePage, rowCount, rowsPerPage]);
- var handleRowsPerPage = React.useCallback(function (e) { return onChangeRowsPerPage(Number(e.target.value), currentPage); }, [currentPage, onChangeRowsPerPage]);
- var selectOptions = paginationRowsPerPageOptions.map(function (num) { return (React.createElement("option", { key: num, value: num }, num)); });
- if (options.selectAllRowsItem) {
- selectOptions.push(React.createElement("option", { key: -1, value: rowCount }, options.selectAllRowsItemText));
- }
- var select = (React.createElement(Select_1.default, { onChange: handleRowsPerPage, defaultValue: rowsPerPage, "aria-label": options.rowsPerPageText }, selectOptions));
- return (React.createElement(PaginationWrapper, { className: "rdt_Pagination" },
- !options.noRowsPerPage && shouldShow && (React.createElement(React.Fragment, null,
- React.createElement(RowLabel, null, options.rowsPerPageText),
- select)),
- shouldShow && React.createElement(Range, null, range),
- React.createElement(PageList, null,
- React.createElement(Button, { id: "pagination-first-page", type: "button", "aria-label": "First Page", "aria-disabled": disabledLesser, onClick: handleFirst, disabled: disabledLesser, isRTL: isRTL }, paginationIconFirstPage),
- React.createElement(Button, { id: "pagination-previous-page", type: "button", "aria-label": "Previous Page", "aria-disabled": disabledLesser, onClick: handlePrevious, disabled: disabledLesser, isRTL: isRTL }, paginationIconPrevious),
- !options.noRowsPerPage && !shouldShow && select,
- React.createElement(Button, { id: "pagination-next-page", type: "button", "aria-label": "Next Page", "aria-disabled": disabledGreater, onClick: handleNext, disabled: disabledGreater, isRTL: isRTL }, paginationIconNext),
- React.createElement(Button, { id: "pagination-last-page", type: "button", "aria-label": "Last Page", "aria-disabled": disabledGreater, onClick: handleLast, disabled: disabledGreater, isRTL: isRTL }, paginationIconLastPage))));
- }
- // export default React.memo(Pagination);
- exports["default"] = Pagination;
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
- /***/ }),
- /***/ "./src/DataTable/ProgressWrapper.tsx":
- /*!*******************************************!*\
- !*** ./src/DataTable/ProgressWrapper.tsx ***!
- \*******************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var ProgressWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\t", ";\n"], ["\n\tposition: relative;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\t", ";\n"])), function (props) { return props.theme.progress.style; });
- exports["default"] = ProgressWrapper;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/ResponsiveWrapper.tsx":
- /*!*********************************************!*\
- !*** ./src/DataTable/ResponsiveWrapper.tsx ***!
- \*********************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- /* Hack when using layovers/menus that get clipped by overflow-x
- when a table is responsive due to overflow-xy scroll spec stupidity.
- Note: The parent element height must be set to 100%!
- https://www.brunildo.org/test/Overflowxy2.html
- */
- var ResponsiveWrapper = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tposition: relative;\n\twidth: 100%;\n\tborder-radius: inherit;\n\t", ";\n\n\t", ";\n\n\t", ";\n"], ["\n\tposition: relative;\n\twidth: 100%;\n\tborder-radius: inherit;\n\t", ";\n\n\t", ";\n\n\t", ";\n"])), function (_a) {
- var responsive = _a.responsive, fixedHeader = _a.fixedHeader;
- return responsive && (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t\t\toverflow-x: auto;\n\n\t\t\t// hidden prevents vertical scrolling in firefox when fixedHeader is disabled\n\t\t\toverflow-y: ", ";\n\t\t\tmin-height: 0;\n\t\t"], ["\n\t\t\toverflow-x: auto;\n\n\t\t\t// hidden prevents vertical scrolling in firefox when fixedHeader is disabled\n\t\t\toverflow-y: ", ";\n\t\t\tmin-height: 0;\n\t\t"])), fixedHeader ? 'auto' : 'hidden');
- }, function (_a) {
- var _b = _a.fixedHeader, fixedHeader = _b === void 0 ? false : _b, _c = _a.fixedHeaderScrollHeight, fixedHeaderScrollHeight = _c === void 0 ? '100vh' : _c;
- return fixedHeader && (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t\t\tmax-height: ", ";\n\t\t\t-webkit-overflow-scrolling: touch;\n\t\t"], ["\n\t\t\tmax-height: ", ";\n\t\t\t-webkit-overflow-scrolling: touch;\n\t\t"])), fixedHeaderScrollHeight);
- }, function (_a) {
- var theme = _a.theme;
- return theme.responsiveWrapper.style;
- });
- exports["default"] = ResponsiveWrapper;
- var templateObject_1, templateObject_2, templateObject_3;
- /***/ }),
- /***/ "./src/DataTable/Select.tsx":
- /*!**********************************!*\
- !*** ./src/DataTable/Select.tsx ***!
- \**********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __rest = (this && this.__rest) || function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Dropdown_1 = __webpack_require__(/*! ./icons/Dropdown */ "./src/DataTable/icons/Dropdown.tsx");
- var SelectControl = styled_components_1.default.select(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tcursor: pointer;\n\theight: 24px;\n\tmax-width: 100%;\n\tuser-select: none;\n\tpadding-left: 8px;\n\tpadding-right: 24px;\n\tbox-sizing: content-box;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tborder: none;\n\tbackground-color: transparent;\n\tappearance: none;\n\tdirection: ltr;\n\tflex-shrink: 0;\n\n\t&::-ms-expand {\n\t\tdisplay: none;\n\t}\n\n\t&:disabled::-ms-expand {\n\t\tbackground: #f60;\n\t}\n\n\toption {\n\t\tcolor: initial;\n\t}\n"], ["\n\tcursor: pointer;\n\theight: 24px;\n\tmax-width: 100%;\n\tuser-select: none;\n\tpadding-left: 8px;\n\tpadding-right: 24px;\n\tbox-sizing: content-box;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tborder: none;\n\tbackground-color: transparent;\n\tappearance: none;\n\tdirection: ltr;\n\tflex-shrink: 0;\n\n\t&::-ms-expand {\n\t\tdisplay: none;\n\t}\n\n\t&:disabled::-ms-expand {\n\t\tbackground: #f60;\n\t}\n\n\toption {\n\t\tcolor: initial;\n\t}\n"])));
- var SelectWrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tposition: relative;\n\tflex-shrink: 0;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tmargin-top: 1px;\n\n\tsvg {\n\t\ttop: 0;\n\t\tright: 0;\n\t\tcolor: inherit;\n\t\tposition: absolute;\n\t\tfill: currentColor;\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tdisplay: inline-block;\n\t\tuser-select: none;\n\t\tpointer-events: none;\n\t}\n"], ["\n\tposition: relative;\n\tflex-shrink: 0;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tmargin-top: 1px;\n\n\tsvg {\n\t\ttop: 0;\n\t\tright: 0;\n\t\tcolor: inherit;\n\t\tposition: absolute;\n\t\tfill: currentColor;\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tdisplay: inline-block;\n\t\tuser-select: none;\n\t\tpointer-events: none;\n\t}\n"])));
- var Select = function (_a) {
- var defaultValue = _a.defaultValue, onChange = _a.onChange, rest = __rest(_a, ["defaultValue", "onChange"]);
- return (React.createElement(SelectWrapper, null,
- React.createElement(SelectControl, __assign({ onChange: onChange, defaultValue: defaultValue }, rest)),
- React.createElement(Dropdown_1.default, null)));
- };
- exports["default"] = Select;
- var templateObject_1, templateObject_2;
- /***/ }),
- /***/ "./src/DataTable/Table.tsx":
- /*!*********************************!*\
- !*** ./src/DataTable/Table.tsx ***!
- \*********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var disabledCSS = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tpointer-events: none;\n\topacity: 0.4;\n"], ["\n\tpointer-events: none;\n\topacity: 0.4;\n"])));
- var TableStyle = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tposition: relative;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\theight: 100%;\n\tmax-width: 100%;\n\t", ";\n\t", ";\n"], ["\n\tposition: relative;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\theight: 100%;\n\tmax-width: 100%;\n\t", ";\n\t", ";\n"])), function (_a) {
- var disabled = _a.disabled;
- return disabled && disabledCSS;
- }, function (_a) {
- var theme = _a.theme;
- return theme.table.style;
- });
- exports["default"] = TableStyle;
- var templateObject_1, templateObject_2;
- /***/ }),
- /***/ "./src/DataTable/TableBody.tsx":
- /*!*************************************!*\
- !*** ./src/DataTable/TableBody.tsx ***!
- \*************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Body = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\tflex-direction: column;\n"], ["\n\tdisplay: flex;\n\tflex-direction: column;\n"])));
- exports["default"] = Body;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/TableCell.tsx":
- /*!*************************************!*\
- !*** ./src/DataTable/TableCell.tsx ***!
- \*************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- // @ts-ignore
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts");
- var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts");
- var overflowCSS = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdiv:first-child {\n\t\twhite-space: ", ";\n\t\toverflow: ", ";\n\t\ttext-overflow: ellipsis;\n\t}\n"], ["\n\tdiv:first-child {\n\t\twhite-space: ", ";\n\t\toverflow: ", ";\n\t\ttext-overflow: ellipsis;\n\t}\n"])), function (_a) {
- var wrapCell = _a.wrapCell;
- return (wrapCell ? 'normal' : 'nowrap');
- }, function (_a) {
- var allowOverflow = _a.allowOverflow;
- return (allowOverflow ? 'visible' : 'hidden');
- });
- var CellStyle = (0, styled_components_1.default)(Cell_1.CellExtended).attrs(function (props) { return ({
- style: props.style,
- }); })(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t", ";\n\t", ";\n\t", ";\n"], ["\n\t", ";\n\t", ";\n\t", ";\n"])), function (_a) {
- var renderAsCell = _a.renderAsCell;
- return !renderAsCell && overflowCSS;
- }, function (_a) {
- var theme = _a.theme, isDragging = _a.isDragging;
- return isDragging && theme.cells.draggingStyle;
- }, function (_a) {
- var cellStyle = _a.cellStyle;
- return cellStyle;
- });
- function Cell(_a) {
- var id = _a.id, column = _a.column, row = _a.row, rowIndex = _a.rowIndex, dataTag = _a.dataTag, isDragging = _a.isDragging, onDragStart = _a.onDragStart, onDragOver = _a.onDragOver, onDragEnd = _a.onDragEnd, onDragEnter = _a.onDragEnter, onDragLeave = _a.onDragLeave;
- var _b = (0, util_1.getConditionalStyle)(row, column.conditionalCellStyles, ['rdt_TableCell']), style = _b.style, classNames = _b.classNames;
- return (React.createElement(CellStyle, { id: id, "data-column-id": column.id, role: "cell", className: classNames, "data-tag": dataTag, cellStyle: column.style, renderAsCell: !!column.cell, allowOverflow: column.allowOverflow, button: column.button, center: column.center, compact: column.compact, grow: column.grow, hide: column.hide, maxWidth: column.maxWidth, minWidth: column.minWidth, right: column.right, width: column.width, wrapCell: column.wrap, style: style, isDragging: isDragging, onDragStart: onDragStart, onDragOver: onDragOver, onDragEnd: onDragEnd, onDragEnter: onDragEnter, onDragLeave: onDragLeave },
- !column.cell && React.createElement("div", { "data-tag": dataTag }, (0, util_1.getProperty)(row, column.selector, column.format, rowIndex)),
- column.cell && column.cell(row, rowIndex, column, id)));
- }
- exports["default"] = React.memo(Cell);
- var templateObject_1, templateObject_2;
- /***/ }),
- /***/ "./src/DataTable/TableCellCheckbox.tsx":
- /*!*********************************************!*\
- !*** ./src/DataTable/TableCellCheckbox.tsx ***!
- \*********************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts");
- var Checkbox_1 = __webpack_require__(/*! ./Checkbox */ "./src/DataTable/Checkbox.tsx");
- var TableCellCheckboxStyle = (0, styled_components_1.default)(Cell_1.CellBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tflex: 0 0 48px;\n\tmin-width: 48px;\n\tjustify-content: center;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n"], ["\n\tflex: 0 0 48px;\n\tmin-width: 48px;\n\tjustify-content: center;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n"])));
- function TableCellCheckbox(_a) {
- var name = _a.name, keyField = _a.keyField, row = _a.row, rowCount = _a.rowCount, selected = _a.selected, selectableRowsComponent = _a.selectableRowsComponent, selectableRowsComponentProps = _a.selectableRowsComponentProps, selectableRowsSingle = _a.selectableRowsSingle, selectableRowDisabled = _a.selectableRowDisabled, onSelectedRow = _a.onSelectedRow;
- var disabled = !!(selectableRowDisabled && selectableRowDisabled(row));
- var handleOnRowSelected = function () {
- onSelectedRow({
- type: 'SELECT_SINGLE_ROW',
- row: row,
- isSelected: selected,
- keyField: keyField,
- rowCount: rowCount,
- singleSelect: selectableRowsSingle,
- });
- };
- return (React.createElement(TableCellCheckboxStyle, { onClick: function (e) { return e.stopPropagation(); }, className: "rdt_TableCell", noPadding: true },
- React.createElement(Checkbox_1.default, { name: name, component: selectableRowsComponent, componentOptions: selectableRowsComponentProps, checked: selected, "aria-checked": selected, onClick: handleOnRowSelected, disabled: disabled })));
- }
- exports["default"] = TableCellCheckbox;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/TableCellExpander.tsx":
- /*!*********************************************!*\
- !*** ./src/DataTable/TableCellExpander.tsx ***!
- \*********************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts");
- var ExpanderButton_1 = __webpack_require__(/*! ./ExpanderButton */ "./src/DataTable/ExpanderButton.tsx");
- var CellExpanderStyle = (0, styled_components_1.default)(Cell_1.CellBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\twhite-space: nowrap;\n\tfont-weight: 400;\n\tmin-width: 48px;\n\t", ";\n"], ["\n\twhite-space: nowrap;\n\tfont-weight: 400;\n\tmin-width: 48px;\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.expanderCell.style;
- });
- function CellExpander(_a) {
- var row = _a.row, _b = _a.expanded, expanded = _b === void 0 ? false : _b, expandableIcon = _a.expandableIcon, id = _a.id, onToggled = _a.onToggled, _c = _a.disabled, disabled = _c === void 0 ? false : _c;
- return (React.createElement(CellExpanderStyle, { onClick: function (e) { return e.stopPropagation(); }, noPadding: true },
- React.createElement(ExpanderButton_1.default, { id: id, row: row, expanded: expanded, expandableIcon: expandableIcon, disabled: disabled, onToggled: onToggled })));
- }
- exports["default"] = CellExpander;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/TableCol.tsx":
- /*!************************************!*\
- !*** ./src/DataTable/TableCol.tsx ***!
- \************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts");
- var NativeSortIcon_1 = __webpack_require__(/*! ./icons/NativeSortIcon */ "./src/DataTable/icons/NativeSortIcon.tsx");
- var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts");
- var types_1 = __webpack_require__(/*! ./types */ "./src/DataTable/types.ts");
- var ColumnStyled = (0, styled_components_1.default)(Cell_1.CellExtended)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t", ";\n\t", ";\n"], ["\n\t", ";\n\t", ";\n"])), function (_a) {
- var button = _a.button;
- return button && 'text-align: center';
- }, function (_a) {
- var theme = _a.theme, isDragging = _a.isDragging;
- return isDragging && theme.headCells.draggingStyle;
- });
- var sortableCSS = (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tcursor: pointer;\n\tspan.__rdt_custom_sort_icon__ {\n\t\ti,\n\t\tsvg {\n\t\t\ttransform: 'translate3d(0, 0, 0)';\n\t\t\t", ";\n\t\t\tcolor: inherit;\n\t\t\tfont-size: 18px;\n\t\t\theight: 18px;\n\t\t\twidth: 18px;\n\t\t\tbackface-visibility: hidden;\n\t\t\ttransform-style: preserve-3d;\n\t\t\ttransition-duration: 95ms;\n\t\t\ttransition-property: transform;\n\t\t}\n\n\t\t&.asc i,\n\t\t&.asc svg {\n\t\t\ttransform: rotate(180deg);\n\t\t}\n\t}\n\n\t", ";\n"], ["\n\tcursor: pointer;\n\tspan.__rdt_custom_sort_icon__ {\n\t\ti,\n\t\tsvg {\n\t\t\ttransform: 'translate3d(0, 0, 0)';\n\t\t\t", ";\n\t\t\tcolor: inherit;\n\t\t\tfont-size: 18px;\n\t\t\theight: 18px;\n\t\t\twidth: 18px;\n\t\t\tbackface-visibility: hidden;\n\t\t\ttransform-style: preserve-3d;\n\t\t\ttransition-duration: 95ms;\n\t\t\ttransition-property: transform;\n\t\t}\n\n\t\t&.asc i,\n\t\t&.asc svg {\n\t\t\ttransform: rotate(180deg);\n\t\t}\n\t}\n\n\t", ";\n"])), function (_a) {
- var sortActive = _a.sortActive;
- return (sortActive ? 'opacity: 1' : 'opacity: 0');
- }, function (_a) {
- var sortActive = _a.sortActive;
- return !sortActive && (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\topacity: 0.7;\n\n\t\t\t\tspan,\n\t\t\t\tspan.__rdt_custom_sort_icon__ * {\n\t\t\t\t\topacity: 0.7;\n\t\t\t\t}\n\t\t\t}\n\t\t"], ["\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\topacity: 0.7;\n\n\t\t\t\tspan,\n\t\t\t\tspan.__rdt_custom_sort_icon__ * {\n\t\t\t\t\topacity: 0.7;\n\t\t\t\t}\n\t\t\t}\n\t\t"])));
- });
- var ColumnSortable = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: inherit;\n\theight: 100%;\n\twidth: 100%;\n\toutline: none;\n\tuser-select: none;\n\toverflow: hidden;\n\t", ";\n"], ["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: inherit;\n\theight: 100%;\n\twidth: 100%;\n\toutline: none;\n\tuser-select: none;\n\toverflow: hidden;\n\t", ";\n"])), function (_a) {
- var disabled = _a.disabled;
- return !disabled && sortableCSS;
- });
- var ColumnText = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n"], ["\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n"])));
- function TableCol(_a) {
- var column = _a.column, disabled = _a.disabled, draggingColumnId = _a.draggingColumnId, _b = _a.selectedColumn, selectedColumn = _b === void 0 ? {} : _b, sortDirection = _a.sortDirection, sortIcon = _a.sortIcon, sortServer = _a.sortServer, pagination = _a.pagination, paginationServer = _a.paginationServer, persistSelectedOnSort = _a.persistSelectedOnSort, selectableRowsVisibleOnly = _a.selectableRowsVisibleOnly, onSort = _a.onSort, onDragStart = _a.onDragStart, onDragOver = _a.onDragOver, onDragEnd = _a.onDragEnd, onDragEnter = _a.onDragEnter, onDragLeave = _a.onDragLeave;
- React.useEffect(function () {
- if (typeof column.selector === 'string') {
- console.error("Warning: ".concat(column.selector, " is a string based column selector which has been deprecated as of v7 and will be removed in v8. Instead, use a selector function e.g. row => row[field]..."));
- }
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, []);
- var _c = React.useState(false), showTooltip = _c[0], setShowTooltip = _c[1];
- var columnRef = React.useRef(null);
- React.useEffect(function () {
- if (columnRef.current) {
- setShowTooltip(columnRef.current.scrollWidth > columnRef.current.clientWidth);
- }
- }, [showTooltip]);
- if (column.omit) {
- return null;
- }
- var handleSortChange = function () {
- if (!column.sortable && !column.selector) {
- return;
- }
- var direction = sortDirection;
- if ((0, util_1.equalizeId)(selectedColumn.id, column.id)) {
- direction = sortDirection === types_1.SortOrder.ASC ? types_1.SortOrder.DESC : types_1.SortOrder.ASC;
- }
- onSort({
- type: 'SORT_CHANGE',
- sortDirection: direction,
- selectedColumn: column,
- clearSelectedOnSort: (pagination && paginationServer && !persistSelectedOnSort) || sortServer || selectableRowsVisibleOnly,
- });
- };
- var handleKeyPress = function (event) {
- if (event.key === 'Enter') {
- handleSortChange();
- }
- };
- var renderNativeSortIcon = function (sortActive) { return (React.createElement(NativeSortIcon_1.default, { sortActive: sortActive, sortDirection: sortDirection })); };
- var renderCustomSortIcon = function () { return (React.createElement("span", { className: [sortDirection, '__rdt_custom_sort_icon__'].join(' ') }, sortIcon)); };
- var sortActive = !!(column.sortable && (0, util_1.equalizeId)(selectedColumn.id, column.id));
- var disableSort = !column.sortable || disabled;
- var nativeSortIconLeft = column.sortable && !sortIcon && !column.right;
- var nativeSortIconRight = column.sortable && !sortIcon && column.right;
- var customSortIconLeft = column.sortable && sortIcon && !column.right;
- var customSortIconRight = column.sortable && sortIcon && column.right;
- return (React.createElement(ColumnStyled, { "data-column-id": column.id, className: "rdt_TableCol", headCell: true, allowOverflow: column.allowOverflow, button: column.button, compact: column.compact, grow: column.grow, hide: column.hide, maxWidth: column.maxWidth, minWidth: column.minWidth, right: column.right, center: column.center, width: column.width, draggable: column.reorder, isDragging: (0, util_1.equalizeId)(column.id, draggingColumnId), onDragStart: onDragStart, onDragOver: onDragOver, onDragEnd: onDragEnd, onDragEnter: onDragEnter, onDragLeave: onDragLeave }, column.name && (React.createElement(ColumnSortable, { "data-column-id": column.id, "data-sort-id": column.id, role: "columnheader", tabIndex: 0, className: "rdt_TableCol_Sortable", onClick: !disableSort ? handleSortChange : undefined, onKeyPress: !disableSort ? handleKeyPress : undefined, sortActive: !disableSort && sortActive, disabled: disableSort },
- !disableSort && customSortIconRight && renderCustomSortIcon(),
- !disableSort && nativeSortIconRight && renderNativeSortIcon(sortActive),
- typeof column.name === 'string' ? (React.createElement(ColumnText, { title: showTooltip ? column.name : undefined, ref: columnRef, "data-column-id": column.id }, column.name)) : (column.name),
- !disableSort && customSortIconLeft && renderCustomSortIcon(),
- !disableSort && nativeSortIconLeft && renderNativeSortIcon(sortActive)))));
- }
- exports["default"] = React.memo(TableCol);
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
- /***/ }),
- /***/ "./src/DataTable/TableColCheckbox.tsx":
- /*!********************************************!*\
- !*** ./src/DataTable/TableColCheckbox.tsx ***!
- \********************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts");
- var Checkbox_1 = __webpack_require__(/*! ./Checkbox */ "./src/DataTable/Checkbox.tsx");
- var ColumnStyle = (0, styled_components_1.default)(Cell_1.CellBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tflex: 0 0 48px;\n\tjustify-content: center;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n\tfont-size: unset;\n"], ["\n\tflex: 0 0 48px;\n\tjustify-content: center;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n\tfont-size: unset;\n"])));
- function ColumnCheckbox(_a) {
- var _b = _a.headCell, headCell = _b === void 0 ? true : _b, rowData = _a.rowData, keyField = _a.keyField, allSelected = _a.allSelected, mergeSelections = _a.mergeSelections, selectedRows = _a.selectedRows, selectableRowsComponent = _a.selectableRowsComponent, selectableRowsComponentProps = _a.selectableRowsComponentProps, selectableRowDisabled = _a.selectableRowDisabled, onSelectAllRows = _a.onSelectAllRows;
- var indeterminate = selectedRows.length > 0 && !allSelected;
- var rows = selectableRowDisabled ? rowData.filter(function (row) { return !selectableRowDisabled(row); }) : rowData;
- var isDisabled = rows.length === 0;
- // The row count should subtract rows that are disabled
- var rowCount = Math.min(rowData.length, rows.length);
- var handleSelectAll = function () {
- onSelectAllRows({
- type: 'SELECT_ALL_ROWS',
- rows: rows,
- rowCount: rowCount,
- mergeSelections: mergeSelections,
- keyField: keyField,
- });
- };
- return (React.createElement(ColumnStyle, { className: "rdt_TableCol", headCell: headCell, noPadding: true },
- React.createElement(Checkbox_1.default, { name: "select-all-rows", component: selectableRowsComponent, componentOptions: selectableRowsComponentProps, onClick: handleSelectAll, checked: allSelected, indeterminate: indeterminate, disabled: isDisabled })));
- }
- exports["default"] = ColumnCheckbox;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/TableColExpander.tsx":
- /*!********************************************!*\
- !*** ./src/DataTable/TableColExpander.tsx ***!
- \********************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts");
- var ColumnExpander = (0, styled_components_1.default)(Cell_1.CellBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\twhite-space: nowrap;\n\t", ";\n"], ["\n\twhite-space: nowrap;\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.expanderCell.style;
- });
- exports["default"] = ColumnExpander;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/TableHead.tsx":
- /*!*************************************!*\
- !*** ./src/DataTable/TableHead.tsx ***!
- \*************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var fixedCSS = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: sticky;\n\tposition: -webkit-sticky; /* Safari */\n\ttop: 0;\n\tz-index: 1;\n"], ["\n\tposition: sticky;\n\tposition: -webkit-sticky; /* Safari */\n\ttop: 0;\n\tz-index: 1;\n"])));
- var Head = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tdisplay: flex;\n\twidth: 100%;\n\t", ";\n\t", ";\n"], ["\n\tdisplay: flex;\n\twidth: 100%;\n\t", ";\n\t", ";\n"])), function (_a) {
- var fixedHeader = _a.fixedHeader;
- return fixedHeader && fixedCSS;
- }, function (_a) {
- var theme = _a.theme;
- return theme.head.style;
- });
- exports["default"] = Head;
- var templateObject_1, templateObject_2;
- /***/ }),
- /***/ "./src/DataTable/TableHeadRow.tsx":
- /*!****************************************!*\
- !*** ./src/DataTable/TableHeadRow.tsx ***!
- \****************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var HeadRow = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: stretch;\n\twidth: 100%;\n\t", ";\n\t", ";\n"], ["\n\tdisplay: flex;\n\talign-items: stretch;\n\twidth: 100%;\n\t", ";\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.headRow.style;
- }, function (_a) {
- var dense = _a.dense, theme = _a.theme;
- return dense && theme.headRow.denseStyle;
- });
- exports["default"] = HeadRow;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/TableHeader.tsx":
- /*!***************************************!*\
- !*** ./src/DataTable/TableHeader.tsx ***!
- \***************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var ContextMenu_1 = __webpack_require__(/*! ./ContextMenu */ "./src/DataTable/ContextMenu.tsx");
- var HeaderStyle = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\talign-items: center;\n\tjustify-content: space-between;\n\twidth: 100%;\n\tflex-wrap: wrap;\n\t", "\n"], ["\n\tposition: relative;\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\talign-items: center;\n\tjustify-content: space-between;\n\twidth: 100%;\n\tflex-wrap: wrap;\n\t", "\n"])), function (_a) {
- var theme = _a.theme;
- return theme.header.style;
- });
- var Title = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tflex: 1 0 auto;\n\tcolor: ", ";\n\tfont-size: ", ";\n\tfont-weight: 400;\n"], ["\n\tflex: 1 0 auto;\n\tcolor: ", ";\n\tfont-size: ", ";\n\tfont-weight: 400;\n"])), function (_a) {
- var theme = _a.theme;
- return theme.header.fontColor;
- }, function (_a) {
- var theme = _a.theme;
- return theme.header.fontSize;
- });
- var Actions = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tflex: 1 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\n\t> * {\n\t\tmargin-left: 5px;\n\t}\n"], ["\n\tflex: 1 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\n\t> * {\n\t\tmargin-left: 5px;\n\t}\n"])));
- var Header = function (_a) {
- var title = _a.title, _b = _a.actions, actions = _b === void 0 ? null : _b, contextMessage = _a.contextMessage, contextActions = _a.contextActions, contextComponent = _a.contextComponent, selectedCount = _a.selectedCount, direction = _a.direction, _c = _a.showMenu, showMenu = _c === void 0 ? true : _c;
- return (React.createElement(HeaderStyle, { className: "rdt_TableHeader", role: "heading", "aria-level": 1 },
- React.createElement(Title, null, title),
- actions && React.createElement(Actions, null, actions),
- showMenu && (React.createElement(ContextMenu_1.default, { contextMessage: contextMessage, contextActions: contextActions, contextComponent: contextComponent, direction: direction, selectedCount: selectedCount }))));
- };
- exports["default"] = Header;
- var templateObject_1, templateObject_2, templateObject_3;
- /***/ }),
- /***/ "./src/DataTable/TableRow.tsx":
- /*!************************************!*\
- !*** ./src/DataTable/TableRow.tsx ***!
- \************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var TableCell_1 = __webpack_require__(/*! ./TableCell */ "./src/DataTable/TableCell.tsx");
- var TableCellCheckbox_1 = __webpack_require__(/*! ./TableCellCheckbox */ "./src/DataTable/TableCellCheckbox.tsx");
- var TableCellExpander_1 = __webpack_require__(/*! ./TableCellExpander */ "./src/DataTable/TableCellExpander.tsx");
- var ExpanderRow_1 = __webpack_require__(/*! ./ExpanderRow */ "./src/DataTable/ExpanderRow.tsx");
- var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts");
- var constants_1 = __webpack_require__(/*! ./constants */ "./src/DataTable/constants.ts");
- var highlightCSS = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t&:hover {\n\t\t", ";\n\t}\n"], ["\n\t&:hover {\n\t\t", ";\n\t}\n"])), function (_a) {
- var highlightOnHover = _a.highlightOnHover, theme = _a.theme;
- return highlightOnHover && theme.rows.highlightOnHoverStyle;
- });
- var pointerCSS = (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n"], ["\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n"])));
- var TableRowStyle = styled_components_1.default.div.attrs(function (props) { return ({
- style: props.style,
- }); })(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: stretch;\n\talign-content: stretch;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n"], ["\n\tdisplay: flex;\n\talign-items: stretch;\n\talign-content: stretch;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.rows.style;
- }, function (_a) {
- var dense = _a.dense, theme = _a.theme;
- return dense && theme.rows.denseStyle;
- }, function (_a) {
- var striped = _a.striped, theme = _a.theme;
- return striped && theme.rows.stripedStyle;
- }, function (_a) {
- var highlightOnHover = _a.highlightOnHover;
- return highlightOnHover && highlightCSS;
- }, function (_a) {
- var pointerOnHover = _a.pointerOnHover;
- return pointerOnHover && pointerCSS;
- }, function (_a) {
- var selected = _a.selected, theme = _a.theme;
- return selected && theme.rows.selectedHighlightStyle;
- });
- function Row(_a) {
- var _b = _a.columns, columns = _b === void 0 ? [] : _b, _c = _a.conditionalRowStyles, conditionalRowStyles = _c === void 0 ? [] : _c, _d = _a.defaultExpanded, defaultExpanded = _d === void 0 ? false : _d, _e = _a.defaultExpanderDisabled, defaultExpanderDisabled = _e === void 0 ? false : _e, _f = _a.dense, dense = _f === void 0 ? false : _f, expandableIcon = _a.expandableIcon, _g = _a.expandableRows, expandableRows = _g === void 0 ? false : _g, expandableRowsComponent = _a.expandableRowsComponent, expandableRowsComponentProps = _a.expandableRowsComponentProps, expandableRowsHideExpander = _a.expandableRowsHideExpander, _h = _a.expandOnRowClicked, expandOnRowClicked = _h === void 0 ? false : _h, _j = _a.expandOnRowDoubleClicked, expandOnRowDoubleClicked = _j === void 0 ? false : _j, _k = _a.highlightOnHover, highlightOnHover = _k === void 0 ? false : _k, id = _a.id, expandableInheritConditionalStyles = _a.expandableInheritConditionalStyles, keyField = _a.keyField, _l = _a.onRowClicked, onRowClicked = _l === void 0 ? util_1.noop : _l, _m = _a.onRowDoubleClicked, onRowDoubleClicked = _m === void 0 ? util_1.noop : _m, _o = _a.onRowMouseEnter, onRowMouseEnter = _o === void 0 ? util_1.noop : _o, _p = _a.onRowMouseLeave, onRowMouseLeave = _p === void 0 ? util_1.noop : _p, _q = _a.onRowExpandToggled, onRowExpandToggled = _q === void 0 ? util_1.noop : _q, _r = _a.onSelectedRow, onSelectedRow = _r === void 0 ? util_1.noop : _r, _s = _a.pointerOnHover, pointerOnHover = _s === void 0 ? false : _s, row = _a.row, rowCount = _a.rowCount, rowIndex = _a.rowIndex, _t = _a.selectableRowDisabled, selectableRowDisabled = _t === void 0 ? null : _t, _u = _a.selectableRows, selectableRows = _u === void 0 ? false : _u, selectableRowsComponent = _a.selectableRowsComponent, selectableRowsComponentProps = _a.selectableRowsComponentProps, _v = _a.selectableRowsHighlight, selectableRowsHighlight = _v === void 0 ? false : _v, _w = _a.selectableRowsSingle, selectableRowsSingle = _w === void 0 ? false : _w, selected = _a.selected, _x = _a.striped, striped = _x === void 0 ? false : _x, draggingColumnId = _a.draggingColumnId, onDragStart = _a.onDragStart, onDragOver = _a.onDragOver, onDragEnd = _a.onDragEnd, onDragEnter = _a.onDragEnter, onDragLeave = _a.onDragLeave;
- var _y = React.useState(defaultExpanded), expanded = _y[0], setExpanded = _y[1];
- React.useEffect(function () {
- setExpanded(defaultExpanded);
- }, [defaultExpanded]);
- var handleExpanded = React.useCallback(function () {
- setExpanded(!expanded);
- onRowExpandToggled(!expanded, row);
- }, [expanded, onRowExpandToggled, row]);
- var showPointer = pointerOnHover || (expandableRows && (expandOnRowClicked || expandOnRowDoubleClicked));
- var handleRowClick = React.useCallback(function (e) {
- // use event delegation allow events to propagate only when the element with data-tag STOP_PROP_TAG is present
- if (e.target && e.target.getAttribute('data-tag') === constants_1.STOP_PROP_TAG) {
- onRowClicked(row, e);
- if (!defaultExpanderDisabled && expandableRows && expandOnRowClicked) {
- handleExpanded();
- }
- }
- }, [defaultExpanderDisabled, expandOnRowClicked, expandableRows, handleExpanded, onRowClicked, row]);
- var handleRowDoubleClick = React.useCallback(function (e) {
- if (e.target && e.target.getAttribute('data-tag') === constants_1.STOP_PROP_TAG) {
- onRowDoubleClicked(row, e);
- if (!defaultExpanderDisabled && expandableRows && expandOnRowDoubleClicked) {
- handleExpanded();
- }
- }
- }, [defaultExpanderDisabled, expandOnRowDoubleClicked, expandableRows, handleExpanded, onRowDoubleClicked, row]);
- var handleRowMouseEnter = React.useCallback(function (e) {
- onRowMouseEnter(row, e);
- }, [onRowMouseEnter, row]);
- var handleRowMouseLeave = React.useCallback(function (e) {
- onRowMouseLeave(row, e);
- }, [onRowMouseLeave, row]);
- var rowKeyField = (0, util_1.prop)(row, keyField);
- var _z = (0, util_1.getConditionalStyle)(row, conditionalRowStyles, ['rdt_TableRow']), style = _z.style, classNames = _z.classNames;
- var highlightSelected = selectableRowsHighlight && selected;
- var inheritStyles = expandableInheritConditionalStyles ? style : {};
- var isStriped = striped && (0, util_1.isOdd)(rowIndex);
- return (React.createElement(React.Fragment, null,
- React.createElement(TableRowStyle, { id: "row-".concat(id), role: "row", striped: isStriped, highlightOnHover: highlightOnHover, pointerOnHover: !defaultExpanderDisabled && showPointer, dense: dense, onClick: handleRowClick, onDoubleClick: handleRowDoubleClick, onMouseEnter: handleRowMouseEnter, onMouseLeave: handleRowMouseLeave, className: classNames, selected: highlightSelected, style: style },
- selectableRows && (React.createElement(TableCellCheckbox_1.default, { name: "select-row-".concat(rowKeyField), keyField: keyField, row: row, rowCount: rowCount, selected: selected, selectableRowsComponent: selectableRowsComponent, selectableRowsComponentProps: selectableRowsComponentProps, selectableRowDisabled: selectableRowDisabled, selectableRowsSingle: selectableRowsSingle, onSelectedRow: onSelectedRow })),
- expandableRows && !expandableRowsHideExpander && (React.createElement(TableCellExpander_1.default, { id: rowKeyField, expandableIcon: expandableIcon, expanded: expanded, row: row, onToggled: handleExpanded, disabled: defaultExpanderDisabled })),
- columns.map(function (column) {
- if (column.omit) {
- return null;
- }
- return (React.createElement(TableCell_1.default, { id: "cell-".concat(column.id, "-").concat(rowKeyField), key: "cell-".concat(column.id, "-").concat(rowKeyField),
- // apply a tag that Row will use to stop event propagation when TableCell is clicked
- dataTag: column.ignoreRowClick || column.button ? null : constants_1.STOP_PROP_TAG, column: column, row: row, rowIndex: rowIndex, isDragging: (0, util_1.equalizeId)(draggingColumnId, column.id), onDragStart: onDragStart, onDragOver: onDragOver, onDragEnd: onDragEnd, onDragEnter: onDragEnter, onDragLeave: onDragLeave }));
- })),
- expandableRows && expanded && (React.createElement(ExpanderRow_1.default, { key: "expander-".concat(rowKeyField), data: row, extendedRowStyle: inheritStyles, extendedClassNames: classNames, ExpanderComponent: expandableRowsComponent, expanderComponentProps: expandableRowsComponentProps }))));
- }
- exports["default"] = Row;
- var templateObject_1, templateObject_2, templateObject_3;
- /***/ }),
- /***/ "./src/DataTable/TableSubheader.tsx":
- /*!******************************************!*\
- !*** ./src/DataTable/TableSubheader.tsx ***!
- \******************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __rest = (this && this.__rest) || function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var alignMap = {
- left: 'flex-start',
- right: 'flex-end',
- center: 'center',
- };
- var SubheaderWrapper = styled_components_1.default.header(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\talign-items: center;\n\tpadding: 4px 16px 4px 24px;\n\twidth: 100%;\n\tjustify-content: ", ";\n\tflex-wrap: ", ";\n\t", "\n"], ["\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\talign-items: center;\n\tpadding: 4px 16px 4px 24px;\n\twidth: 100%;\n\tjustify-content: ", ";\n\tflex-wrap: ", ";\n\t", "\n"])), function (_a) {
- var align = _a.align;
- return alignMap[align];
- }, function (_a) {
- var wrapContent = _a.wrapContent;
- return (wrapContent ? 'wrap' : 'nowrap');
- }, function (_a) {
- var theme = _a.theme;
- return theme.subHeader.style;
- });
- var Subheader = function (_a) {
- var _b = _a.align, align = _b === void 0 ? 'right' : _b, _c = _a.wrapContent, wrapContent = _c === void 0 ? true : _c, rest = __rest(_a, ["align", "wrapContent"]);
- return (React.createElement(SubheaderWrapper, __assign({ align: align, wrapContent: wrapContent }, rest)));
- };
- exports["default"] = Subheader;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/TableWrapper.tsx":
- /*!****************************************!*\
- !*** ./src/DataTable/TableWrapper.tsx ***!
- \****************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Wrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\twidth: 100%;\n\t", ";\n"], ["\n\tposition: relative;\n\twidth: 100%;\n\t", ";\n"])), function (_a) {
- var theme = _a.theme;
- return theme.tableWrapper.style;
- });
- exports["default"] = Wrapper;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/constants.ts":
- /*!************************************!*\
- !*** ./src/DataTable/constants.ts ***!
- \************************************/
- /***/ ((__unused_webpack_module, exports) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Media = exports.Alignment = exports.Direction = exports.STOP_PROP_TAG = void 0;
- exports.STOP_PROP_TAG = 'allowRowEvents';
- var Direction;
- (function (Direction) {
- Direction["LTR"] = "ltr";
- Direction["RTL"] = "rtl";
- Direction["AUTO"] = "auto";
- })(Direction = exports.Direction || (exports.Direction = {}));
- var Alignment;
- (function (Alignment) {
- Alignment["LEFT"] = "left";
- Alignment["RIGHT"] = "right";
- Alignment["CENTER"] = "center";
- })(Alignment = exports.Alignment || (exports.Alignment = {}));
- var Media;
- (function (Media) {
- Media["SM"] = "sm";
- Media["MD"] = "md";
- Media["LG"] = "lg";
- })(Media = exports.Media || (exports.Media = {}));
- /***/ }),
- /***/ "./src/DataTable/defaultProps.tsx":
- /*!****************************************!*\
- !*** ./src/DataTable/defaultProps.tsx ***!
- \****************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.defaultProps = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var FirstPage_1 = __webpack_require__(/*! ./icons/FirstPage */ "./src/DataTable/icons/FirstPage.tsx");
- var LastPage_1 = __webpack_require__(/*! ./icons/LastPage */ "./src/DataTable/icons/LastPage.tsx");
- var Left_1 = __webpack_require__(/*! ./icons/Left */ "./src/DataTable/icons/Left.tsx");
- var Right_1 = __webpack_require__(/*! ./icons/Right */ "./src/DataTable/icons/Right.tsx");
- var ExpanderCollapsedIcon_1 = __webpack_require__(/*! ./icons/ExpanderCollapsedIcon */ "./src/DataTable/icons/ExpanderCollapsedIcon.tsx");
- var ExpanderExpandedIcon_1 = __webpack_require__(/*! ./icons/ExpanderExpandedIcon */ "./src/DataTable/icons/ExpanderExpandedIcon.tsx");
- var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts");
- var constants_1 = __webpack_require__(/*! ./constants */ "./src/DataTable/constants.ts");
- exports.defaultProps = {
- columns: [],
- data: [],
- title: '',
- keyField: 'id',
- selectableRows: false,
- selectableRowsHighlight: false,
- selectableRowsNoSelectAll: false,
- selectableRowSelected: null,
- selectableRowDisabled: null,
- selectableRowsComponent: 'input',
- selectableRowsComponentProps: {},
- selectableRowsVisibleOnly: false,
- selectableRowsSingle: false,
- clearSelectedRows: false,
- expandableRows: false,
- expandableRowDisabled: null,
- expandableRowExpanded: null,
- expandOnRowClicked: false,
- expandableRowsHideExpander: false,
- expandOnRowDoubleClicked: false,
- expandableInheritConditionalStyles: false,
- expandableRowsComponent: function DefaultExpander() {
- return (React.createElement("div", null,
- "To add an expander pass in a component instance via ",
- React.createElement("strong", null, "expandableRowsComponent"),
- ". You can then access props.data from this component."));
- },
- expandableIcon: {
- collapsed: React.createElement(ExpanderCollapsedIcon_1.default, null),
- expanded: React.createElement(ExpanderExpandedIcon_1.default, null),
- },
- expandableRowsComponentProps: {},
- progressPending: false,
- progressComponent: React.createElement("div", { style: { fontSize: '24px', fontWeight: 700, padding: '24px' } }, "Loading..."),
- persistTableHead: false,
- sortIcon: null,
- sortFunction: null,
- sortServer: false,
- striped: false,
- highlightOnHover: false,
- pointerOnHover: false,
- noContextMenu: false,
- contextMessage: { singular: 'item', plural: 'items', message: 'selected' },
- actions: null,
- contextActions: null,
- contextComponent: null,
- defaultSortFieldId: null,
- defaultSortAsc: true,
- responsive: true,
- noDataComponent: React.createElement("div", { style: { padding: '24px' } }, "There are no records to display"),
- disabled: false,
- noTableHead: false,
- noHeader: false,
- subHeader: false,
- subHeaderAlign: constants_1.Alignment.RIGHT,
- subHeaderWrap: true,
- subHeaderComponent: null,
- fixedHeader: false,
- fixedHeaderScrollHeight: '100vh',
- pagination: false,
- paginationServer: false,
- paginationServerOptions: {
- persistSelectedOnSort: false,
- persistSelectedOnPageChange: false,
- },
- paginationDefaultPage: 1,
- paginationResetDefaultPage: false,
- paginationTotalRows: 0,
- paginationPerPage: 10,
- paginationRowsPerPageOptions: [10, 15, 20, 25, 30],
- paginationComponent: null,
- paginationComponentOptions: {},
- paginationIconFirstPage: React.createElement(FirstPage_1.default, null),
- paginationIconLastPage: React.createElement(LastPage_1.default, null),
- paginationIconNext: React.createElement(Right_1.default, null),
- paginationIconPrevious: React.createElement(Left_1.default, null),
- dense: false,
- conditionalRowStyles: [],
- theme: 'default',
- customStyles: {},
- direction: constants_1.Direction.AUTO,
- onChangePage: util_1.noop,
- onChangeRowsPerPage: util_1.noop,
- onRowClicked: util_1.noop,
- onRowDoubleClicked: util_1.noop,
- onRowMouseEnter: util_1.noop,
- onRowMouseLeave: util_1.noop,
- onRowExpandToggled: util_1.noop,
- onSelectedRowsChange: util_1.noop,
- onSort: util_1.noop,
- onColumnOrderChange: util_1.noop,
- };
- /***/ }),
- /***/ "./src/DataTable/hooks/useColumns.ts":
- /*!*******************************************!*\
- !*** ./src/DataTable/hooks/useColumns.ts ***!
- \*******************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var util_1 = __webpack_require__(/*! ../util */ "./src/DataTable/util.ts");
- var useDidUpdateEffect_1 = __webpack_require__(/*! ../hooks/useDidUpdateEffect */ "./src/DataTable/hooks/useDidUpdateEffect.ts");
- function useColumns(columns, onColumnOrderChange, defaultSortFieldId, defaultSortAsc) {
- var _a = React.useState(function () { return (0, util_1.decorateColumns)(columns); }), tableColumns = _a[0], setTableColumns = _a[1];
- var _b = React.useState(''), draggingColumnId = _b[0], setDraggingColumn = _b[1];
- var sourceColumnId = React.useRef('');
- (0, useDidUpdateEffect_1.default)(function () {
- setTableColumns((0, util_1.decorateColumns)(columns));
- }, [columns]);
- var handleDragStart = React.useCallback(function (e) {
- var _a, _b, _c;
- var attributes = e.target.attributes;
- var id = (_a = attributes.getNamedItem('data-column-id')) === null || _a === void 0 ? void 0 : _a.value;
- if (id) {
- sourceColumnId.current = ((_c = (_b = tableColumns[(0, util_1.findColumnIndexById)(tableColumns, id)]) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.toString()) || '';
- setDraggingColumn(sourceColumnId.current);
- }
- }, [tableColumns]);
- var handleDragEnter = React.useCallback(function (e) {
- var _a;
- var attributes = e.target.attributes;
- var id = (_a = attributes.getNamedItem('data-column-id')) === null || _a === void 0 ? void 0 : _a.value;
- if (id && sourceColumnId.current && id !== sourceColumnId.current) {
- var selectedColIndex = (0, util_1.findColumnIndexById)(tableColumns, sourceColumnId.current);
- var targetColIndex = (0, util_1.findColumnIndexById)(tableColumns, id);
- var reorderedCols = __spreadArray([], tableColumns, true);
- reorderedCols[selectedColIndex] = tableColumns[targetColIndex];
- reorderedCols[targetColIndex] = tableColumns[selectedColIndex];
- setTableColumns(reorderedCols);
- onColumnOrderChange(reorderedCols);
- }
- }, [onColumnOrderChange, tableColumns]);
- var handleDragOver = React.useCallback(function (e) {
- e.preventDefault();
- }, []);
- var handleDragLeave = React.useCallback(function (e) {
- e.preventDefault();
- }, []);
- var handleDragEnd = React.useCallback(function (e) {
- e.preventDefault();
- sourceColumnId.current = '';
- setDraggingColumn('');
- }, []);
- var defaultSortDirection = (0, util_1.getSortDirection)(defaultSortAsc);
- var defaultSortColumn = React.useMemo(function () { return tableColumns[(0, util_1.findColumnIndexById)(tableColumns, defaultSortFieldId === null || defaultSortFieldId === void 0 ? void 0 : defaultSortFieldId.toString())] || {}; }, [defaultSortFieldId, tableColumns]);
- return {
- tableColumns: tableColumns,
- draggingColumnId: draggingColumnId,
- handleDragStart: handleDragStart,
- handleDragEnter: handleDragEnter,
- handleDragOver: handleDragOver,
- handleDragLeave: handleDragLeave,
- handleDragEnd: handleDragEnd,
- defaultSortDirection: defaultSortDirection,
- defaultSortColumn: defaultSortColumn,
- };
- }
- exports["default"] = useColumns;
- /***/ }),
- /***/ "./src/DataTable/hooks/useDidUpdateEffect.ts":
- /*!***************************************************!*\
- !*** ./src/DataTable/hooks/useDidUpdateEffect.ts ***!
- \***************************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var useFirstUpdate = function (fn, inputs) {
- var firstUpdate = React.useRef(true);
- React.useEffect(function () {
- if (firstUpdate.current) {
- firstUpdate.current = false;
- return;
- }
- fn();
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, inputs);
- };
- exports["default"] = useFirstUpdate;
- /***/ }),
- /***/ "./src/DataTable/hooks/useRTL.ts":
- /*!***************************************!*\
- !*** ./src/DataTable/hooks/useRTL.ts ***!
- \***************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var constants_1 = __webpack_require__(/*! ../constants */ "./src/DataTable/constants.ts");
- function useRTL(direction) {
- if (direction === void 0) { direction = constants_1.Direction.AUTO; }
- var isClient = typeof window === 'object';
- var _a = React.useState(false), isRTL = _a[0], setIsRTL = _a[1];
- React.useEffect(function () {
- if (!isClient) {
- return;
- }
- if (direction === 'auto') {
- var canUse = false;
- if (window && window.document) {
- canUse = true;
- }
- // const canUse = !!( window?.document?.createElement );
- var bodyRTL = document.getElementsByTagName('BODY')[0];
- var htmlTRL = document.getElementsByTagName('HTML')[0];
- var hasRTL = bodyRTL.dir === 'rtl' || htmlTRL.dir === 'rtl';
- setIsRTL(canUse && hasRTL);
- return;
- }
- setIsRTL(direction === 'rtl');
- }, [direction, isClient]);
- return isRTL;
- }
- exports["default"] = useRTL;
- /***/ }),
- /***/ "./src/DataTable/hooks/useWindowSize.ts":
- /*!**********************************************!*\
- !*** ./src/DataTable/hooks/useWindowSize.ts ***!
- \**********************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- // Credit: https://usehooks.com/useWindowSize/
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var useWindowSize = function () {
- var isClient = typeof window === 'object';
- function getSize() {
- return {
- width: isClient ? window.innerWidth : undefined,
- height: isClient ? window.innerHeight : undefined,
- };
- }
- var _a = React.useState(getSize), windowSize = _a[0], setWindowSize = _a[1];
- React.useEffect(function () {
- if (!isClient) {
- return function () { return null; };
- }
- function handleResize() {
- setWindowSize(getSize());
- }
- window.addEventListener('resize', handleResize);
- return function () { return window.removeEventListener('resize', handleResize); };
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, []);
- return windowSize;
- };
- exports["default"] = useWindowSize;
- /***/ }),
- /***/ "./src/DataTable/icons/Dropdown.tsx":
- /*!******************************************!*\
- !*** ./src/DataTable/icons/Dropdown.tsx ***!
- \******************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var DropdownIcon = function () { return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24" },
- React.createElement("path", { d: "M7 10l5 5 5-5z" }),
- React.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }))); };
- exports["default"] = DropdownIcon;
- /***/ }),
- /***/ "./src/DataTable/icons/ExpanderCollapsedIcon.tsx":
- /*!*******************************************************!*\
- !*** ./src/DataTable/icons/ExpanderCollapsedIcon.tsx ***!
- \*******************************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var ExpanderCollapsedIcon = function () { return (React.createElement("svg", { fill: "currentColor", height: "24", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
- React.createElement("path", { d: "M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z" }),
- React.createElement("path", { d: "M0-.25h24v24H0z", fill: "none" }))); };
- exports["default"] = ExpanderCollapsedIcon;
- /***/ }),
- /***/ "./src/DataTable/icons/ExpanderExpandedIcon.tsx":
- /*!******************************************************!*\
- !*** ./src/DataTable/icons/ExpanderExpandedIcon.tsx ***!
- \******************************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var ExpanderExpandedIcon = function () { return (React.createElement("svg", { fill: "currentColor", height: "24", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
- React.createElement("path", { d: "M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z" }),
- React.createElement("path", { d: "M0-.75h24v24H0z", fill: "none" }))); };
- exports["default"] = ExpanderExpandedIcon;
- /***/ }),
- /***/ "./src/DataTable/icons/FirstPage.tsx":
- /*!*******************************************!*\
- !*** ./src/DataTable/icons/FirstPage.tsx ***!
- \*******************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var FirstPage = function () { return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-hidden": "true", role: "presentation" },
- React.createElement("path", { d: "M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z" }),
- React.createElement("path", { fill: "none", d: "M24 24H0V0h24v24z" }))); };
- exports["default"] = FirstPage;
- /***/ }),
- /***/ "./src/DataTable/icons/LastPage.tsx":
- /*!******************************************!*\
- !*** ./src/DataTable/icons/LastPage.tsx ***!
- \******************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var LastPage = function () { return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-hidden": "true", role: "presentation" },
- React.createElement("path", { d: "M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z" }),
- React.createElement("path", { fill: "none", d: "M0 0h24v24H0V0z" }))); };
- exports["default"] = LastPage;
- /***/ }),
- /***/ "./src/DataTable/icons/Left.tsx":
- /*!**************************************!*\
- !*** ./src/DataTable/icons/Left.tsx ***!
- \**************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Left = function () { return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-hidden": "true", role: "presentation" },
- React.createElement("path", { d: "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" }),
- React.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }))); };
- exports["default"] = Left;
- /***/ }),
- /***/ "./src/DataTable/icons/NativeSortIcon.tsx":
- /*!************************************************!*\
- !*** ./src/DataTable/icons/NativeSortIcon.tsx ***!
- \************************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- var Icon = styled_components_1.default.span(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tpadding: 2px;\n\tcolor: inherit;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\t", ";\n\t", ";\n"], ["\n\tpadding: 2px;\n\tcolor: inherit;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\t", ";\n\t", ";\n"])), function (_a) {
- var sortActive = _a.sortActive;
- return (sortActive ? 'opacity: 1' : 'opacity: 0');
- }, function (_a) {
- var sortDirection = _a.sortDirection;
- return sortDirection === 'desc' && 'transform: rotate(180deg)';
- });
- var NativeSortIcon = function (_a) {
- var sortActive = _a.sortActive, sortDirection = _a.sortDirection;
- return (React.createElement(Icon, { sortActive: sortActive, sortDirection: sortDirection }, "\u25B2"));
- };
- exports["default"] = NativeSortIcon;
- var templateObject_1;
- /***/ }),
- /***/ "./src/DataTable/icons/Right.tsx":
- /*!***************************************!*\
- !*** ./src/DataTable/icons/Right.tsx ***!
- \***************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Right = function () { return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-hidden": "true", role: "presentation" },
- React.createElement("path", { d: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }),
- React.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }))); };
- exports["default"] = Right;
- /***/ }),
- /***/ "./src/DataTable/media.ts":
- /*!********************************!*\
- !*** ./src/DataTable/media.ts ***!
- \********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.media = exports.LARGE = exports.MEDIUM = exports.SMALL = void 0;
- // @ts-ignore
- var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
- exports.SMALL = 599;
- exports.MEDIUM = 959;
- exports.LARGE = 1280;
- exports.media = {
- sm: function (literals) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"], ["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"])), exports.SMALL, styled_components_1.css.apply(void 0, __spreadArray([literals], args, false)));
- },
- md: function (literals) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"], ["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"])), exports.MEDIUM, styled_components_1.css.apply(void 0, __spreadArray([literals], args, false)));
- },
- lg: function (literals) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"], ["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"])), exports.LARGE, styled_components_1.css.apply(void 0, __spreadArray([literals], args, false)));
- },
- custom: function (value) {
- return function (literals) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return (0, styled_components_1.css)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n\t\t\t\t@media screen and (max-width: ", "px) {\n\t\t\t\t\t", "\n\t\t\t\t}\n\t\t\t"], ["\n\t\t\t\t@media screen and (max-width: ", "px) {\n\t\t\t\t\t", "\n\t\t\t\t}\n\t\t\t"])), value, styled_components_1.css.apply(void 0, __spreadArray([literals], args, false)));
- };
- },
- };
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
- /***/ }),
- /***/ "./src/DataTable/styles.ts":
- /*!*********************************!*\
- !*** ./src/DataTable/styles.ts ***!
- \*********************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.createStyles = exports.defaultStyles = void 0;
- var deepmerge_1 = __webpack_require__(/*! deepmerge */ "./node_modules/deepmerge/dist/cjs.js");
- var themes_1 = __webpack_require__(/*! ./themes */ "./src/DataTable/themes.ts");
- var defaultStyles = function (theme) { return ({
- table: {
- style: {
- color: theme.text.primary,
- backgroundColor: theme.background.default,
- },
- },
- tableWrapper: {
- style: {
- display: 'table',
- },
- },
- responsiveWrapper: {
- style: {},
- },
- header: {
- style: {
- fontSize: '22px',
- color: theme.text.primary,
- backgroundColor: theme.background.default,
- minHeight: '56px',
- paddingLeft: '16px',
- paddingRight: '8px',
- },
- },
- subHeader: {
- style: {
- backgroundColor: theme.background.default,
- minHeight: '52px',
- },
- },
- head: {
- style: {
- color: theme.text.primary,
- fontSize: '12px',
- fontWeight: 500,
- },
- },
- headRow: {
- style: {
- backgroundColor: theme.background.default,
- minHeight: '52px',
- borderBottomWidth: '1px',
- borderBottomColor: theme.divider.default,
- borderBottomStyle: 'solid',
- },
- denseStyle: {
- minHeight: '32px',
- },
- },
- headCells: {
- style: {
- paddingLeft: '16px',
- paddingRight: '16px',
- },
- draggingStyle: {
- cursor: 'move',
- },
- },
- contextMenu: {
- style: {
- backgroundColor: theme.context.background,
- fontSize: '18px',
- fontWeight: 400,
- color: theme.context.text,
- paddingLeft: '16px',
- paddingRight: '8px',
- transform: 'translate3d(0, -100%, 0)',
- transitionDuration: '125ms',
- transitionTimingFunction: 'cubic-bezier(0, 0, 0.2, 1)',
- willChange: 'transform',
- },
- activeStyle: {
- transform: 'translate3d(0, 0, 0)',
- },
- },
- cells: {
- style: {
- paddingLeft: '16px',
- paddingRight: '16px',
- wordBreak: 'break-word',
- },
- draggingStyle: {},
- },
- rows: {
- style: {
- fontSize: '13px',
- fontWeight: 400,
- color: theme.text.primary,
- backgroundColor: theme.background.default,
- minHeight: '48px',
- '&:not(:last-of-type)': {
- borderBottomStyle: 'solid',
- borderBottomWidth: '1px',
- borderBottomColor: theme.divider.default,
- },
- },
- denseStyle: {
- minHeight: '32px',
- },
- selectedHighlightStyle: {
- // use nth-of-type(n) to override other nth selectors
- '&:nth-of-type(n)': {
- color: theme.selected.text,
- backgroundColor: theme.selected.default,
- borderBottomColor: theme.background.default,
- },
- },
- highlightOnHoverStyle: {
- color: theme.highlightOnHover.text,
- backgroundColor: theme.highlightOnHover.default,
- transitionDuration: '0.15s',
- transitionProperty: 'background-color',
- borderBottomColor: theme.background.default,
- outlineStyle: 'solid',
- outlineWidth: '1px',
- outlineColor: theme.background.default,
- },
- stripedStyle: {
- color: theme.striped.text,
- backgroundColor: theme.striped.default,
- },
- },
- expanderRow: {
- style: {
- color: theme.text.primary,
- backgroundColor: theme.background.default,
- },
- },
- expanderCell: {
- style: {
- flex: '0 0 48px',
- },
- },
- expanderButton: {
- style: {
- color: theme.button.default,
- fill: theme.button.default,
- backgroundColor: 'transparent',
- borderRadius: '2px',
- transition: '0.25s',
- height: '100%',
- width: '100%',
- '&:hover:enabled': {
- cursor: 'pointer',
- },
- '&:disabled': {
- color: theme.button.disabled,
- },
- '&:hover:not(:disabled)': {
- cursor: 'pointer',
- backgroundColor: theme.button.hover,
- },
- '&:focus': {
- outline: 'none',
- backgroundColor: theme.button.focus,
- },
- svg: {
- margin: 'auto',
- },
- },
- },
- pagination: {
- style: {
- color: theme.text.secondary,
- fontSize: '13px',
- minHeight: '56px',
- backgroundColor: theme.background.default,
- borderTopStyle: 'solid',
- borderTopWidth: '1px',
- borderTopColor: theme.divider.default,
- },
- pageButtonsStyle: {
- borderRadius: '50%',
- height: '40px',
- width: '40px',
- padding: '8px',
- margin: 'px',
- cursor: 'pointer',
- transition: '0.4s',
- color: theme.button.default,
- fill: theme.button.default,
- backgroundColor: 'transparent',
- '&:disabled': {
- cursor: 'unset',
- color: theme.button.disabled,
- fill: theme.button.disabled,
- },
- '&:hover:not(:disabled)': {
- backgroundColor: theme.button.hover,
- },
- '&:focus': {
- outline: 'none',
- backgroundColor: theme.button.focus,
- },
- },
- },
- noData: {
- style: {
- display: 'flex',
- alignItems: 'center',
- justifyContent: 'center',
- color: theme.text.primary,
- backgroundColor: theme.background.default,
- },
- },
- progress: {
- style: {
- display: 'flex',
- alignItems: 'center',
- justifyContent: 'center',
- color: theme.text.primary,
- backgroundColor: theme.background.default,
- },
- },
- }); };
- exports.defaultStyles = defaultStyles;
- var createStyles = function (customStyles, themeName, inherit) {
- if (customStyles === void 0) { customStyles = {}; }
- if (themeName === void 0) { themeName = 'default'; }
- if (inherit === void 0) { inherit = 'default'; }
- var themeType = themes_1.defaultThemes[themeName] ? themeName : inherit;
- return (0, deepmerge_1.default)((0, exports.defaultStyles)(themes_1.defaultThemes[themeType]), customStyles);
- };
- exports.createStyles = createStyles;
- /***/ }),
- /***/ "./src/DataTable/tableReducer.ts":
- /*!***************************************!*\
- !*** ./src/DataTable/tableReducer.ts ***!
- \***************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.tableReducer = void 0;
- var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts");
- function tableReducer(state, action) {
- var toggleOnSelectedRowsChange = !state.toggleOnSelectedRowsChange;
- switch (action.type) {
- case 'SELECT_ALL_ROWS': {
- var keyField_1 = action.keyField, rows_1 = action.rows, rowCount = action.rowCount, mergeSelections = action.mergeSelections;
- var allChecked = !state.allSelected;
- var toggleOnSelectedRowsChange_1 = !state.toggleOnSelectedRowsChange;
- if (mergeSelections) {
- var selections = allChecked
- ? __spreadArray(__spreadArray([], state.selectedRows, true), rows_1.filter(function (row) { return !(0, util_1.isRowSelected)(row, state.selectedRows, keyField_1); }), true) : state.selectedRows.filter(function (row) { return !(0, util_1.isRowSelected)(row, rows_1, keyField_1); });
- return __assign(__assign({}, state), { allSelected: allChecked, selectedCount: selections.length, selectedRows: selections, toggleOnSelectedRowsChange: toggleOnSelectedRowsChange_1 });
- }
- return __assign(__assign({}, state), { allSelected: allChecked, selectedCount: allChecked ? rowCount : 0, selectedRows: allChecked ? rows_1 : [], toggleOnSelectedRowsChange: toggleOnSelectedRowsChange_1 });
- }
- case 'SELECT_SINGLE_ROW': {
- var keyField = action.keyField, row = action.row, isSelected = action.isSelected, rowCount = action.rowCount, singleSelect = action.singleSelect;
- // handle single select mode
- if (singleSelect) {
- if (isSelected) {
- return __assign(__assign({}, state), { selectedCount: 0, allSelected: false, selectedRows: [], toggleOnSelectedRowsChange: toggleOnSelectedRowsChange });
- }
- return __assign(__assign({}, state), { selectedCount: 1, allSelected: false, selectedRows: [row], toggleOnSelectedRowsChange: toggleOnSelectedRowsChange });
- }
- // handle multi select mode
- if (isSelected) {
- return __assign(__assign({}, state), { selectedCount: state.selectedRows.length > 0 ? state.selectedRows.length - 1 : 0, allSelected: false, selectedRows: (0, util_1.removeItem)(state.selectedRows, row, keyField), toggleOnSelectedRowsChange: toggleOnSelectedRowsChange });
- }
- return __assign(__assign({}, state), { selectedCount: state.selectedRows.length + 1, allSelected: state.selectedRows.length + 1 === rowCount, selectedRows: (0, util_1.insertItem)(state.selectedRows, row), toggleOnSelectedRowsChange: toggleOnSelectedRowsChange });
- }
- case 'SELECT_MULTIPLE_ROWS': {
- var keyField_2 = action.keyField, selectedRows = action.selectedRows, totalRows = action.totalRows, mergeSelections = action.mergeSelections;
- if (mergeSelections) {
- var selections = __spreadArray(__spreadArray([], state.selectedRows, true), selectedRows.filter(function (row) { return !(0, util_1.isRowSelected)(row, state.selectedRows, keyField_2); }), true);
- return __assign(__assign({}, state), { selectedCount: selections.length, allSelected: false, selectedRows: selections, toggleOnSelectedRowsChange: toggleOnSelectedRowsChange });
- }
- return __assign(__assign({}, state), { selectedCount: selectedRows.length, allSelected: selectedRows.length === totalRows, selectedRows: selectedRows, toggleOnSelectedRowsChange: toggleOnSelectedRowsChange });
- }
- case 'CLEAR_SELECTED_ROWS': {
- var selectedRowsFlag = action.selectedRowsFlag;
- return __assign(__assign({}, state), { allSelected: false, selectedCount: 0, selectedRows: [], selectedRowsFlag: selectedRowsFlag });
- }
- case 'SORT_CHANGE': {
- var sortDirection = action.sortDirection, selectedColumn = action.selectedColumn, clearSelectedOnSort = action.clearSelectedOnSort;
- return __assign(__assign(__assign({}, state), { selectedColumn: selectedColumn, sortDirection: sortDirection, currentPage: 1 }), (clearSelectedOnSort && {
- allSelected: false,
- selectedCount: 0,
- selectedRows: [],
- toggleOnSelectedRowsChange: toggleOnSelectedRowsChange,
- }));
- }
- case 'CHANGE_PAGE': {
- var page = action.page, paginationServer = action.paginationServer, visibleOnly = action.visibleOnly, persistSelectedOnPageChange = action.persistSelectedOnPageChange;
- var mergeSelections = paginationServer && persistSelectedOnPageChange;
- var clearSelectedOnPage = (paginationServer && !persistSelectedOnPageChange) || visibleOnly;
- return __assign(__assign(__assign(__assign({}, state), { currentPage: page }), (mergeSelections && {
- allSelected: false,
- })), (clearSelectedOnPage && {
- allSelected: false,
- selectedCount: 0,
- selectedRows: [],
- toggleOnSelectedRowsChange: toggleOnSelectedRowsChange,
- }));
- }
- case 'CHANGE_ROWS_PER_PAGE': {
- var rowsPerPage = action.rowsPerPage, page = action.page;
- return __assign(__assign({}, state), { currentPage: page, rowsPerPage: rowsPerPage });
- }
- }
- }
- exports.tableReducer = tableReducer;
- /***/ }),
- /***/ "./src/DataTable/themes.ts":
- /*!*********************************!*\
- !*** ./src/DataTable/themes.ts ***!
- \*********************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.createTheme = exports.defaultThemes = void 0;
- var deepmerge_1 = __webpack_require__(/*! deepmerge */ "./node_modules/deepmerge/dist/cjs.js");
- var defaultTheme = {
- text: {
- primary: 'rgba(0, 0, 0, 0.87)',
- secondary: 'rgba(0, 0, 0, 0.54)',
- disabled: 'rgba(0, 0, 0, 0.38)',
- },
- background: {
- default: '#FFFFFF',
- },
- context: {
- background: '#e3f2fd',
- text: 'rgba(0, 0, 0, 0.87)',
- },
- divider: {
- default: 'rgba(0,0,0,.12)',
- },
- button: {
- default: 'rgba(0,0,0,.54)',
- focus: 'rgba(0,0,0,.12)',
- hover: 'rgba(0,0,0,.12)',
- disabled: 'rgba(0, 0, 0, .18)',
- },
- selected: {
- default: '#e3f2fd',
- text: 'rgba(0, 0, 0, 0.87)',
- },
- highlightOnHover: {
- default: '#EEEEEE',
- text: 'rgba(0, 0, 0, 0.87)',
- },
- striped: {
- default: '#FAFAFA',
- text: 'rgba(0, 0, 0, 0.87)',
- },
- };
- exports.defaultThemes = {
- default: defaultTheme,
- light: defaultTheme,
- dark: {
- text: {
- primary: '#FFFFFF',
- secondary: 'rgba(255, 255, 255, 0.7)',
- disabled: 'rgba(0,0,0,.12)',
- },
- background: {
- default: '#424242',
- },
- context: {
- background: '#E91E63',
- text: '#FFFFFF',
- },
- divider: {
- default: 'rgba(81, 81, 81, 1)',
- },
- button: {
- default: '#FFFFFF',
- focus: 'rgba(255, 255, 255, .54)',
- hover: 'rgba(255, 255, 255, .12)',
- disabled: 'rgba(255, 255, 255, .18)',
- },
- selected: {
- default: 'rgba(0, 0, 0, .7)',
- text: '#FFFFFF',
- },
- highlightOnHover: {
- default: 'rgba(0, 0, 0, .7)',
- text: '#FFFFFF',
- },
- striped: {
- default: 'rgba(0, 0, 0, .87)',
- text: '#FFFFFF',
- },
- },
- };
- function createTheme(name, customTheme, inherit) {
- if (name === void 0) { name = 'default'; }
- if (inherit === void 0) { inherit = 'default'; }
- if (!exports.defaultThemes[name]) {
- exports.defaultThemes[name] = (0, deepmerge_1.default)(exports.defaultThemes[inherit], customTheme || {});
- }
- // allow tweaking default or light themes if the theme passed in matches
- exports.defaultThemes[name] = (0, deepmerge_1.default)(exports.defaultThemes[name], customTheme || {});
- return exports.defaultThemes[name];
- }
- exports.createTheme = createTheme;
- /***/ }),
- /***/ "./src/DataTable/types.ts":
- /*!********************************!*\
- !*** ./src/DataTable/types.ts ***!
- \********************************/
- /***/ ((__unused_webpack_module, exports) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.SortOrder = void 0;
- var SortOrder;
- (function (SortOrder) {
- SortOrder["ASC"] = "asc";
- SortOrder["DESC"] = "desc";
- })(SortOrder = exports.SortOrder || (exports.SortOrder = {}));
- /***/ }),
- /***/ "./src/DataTable/util.ts":
- /*!*******************************!*\
- !*** ./src/DataTable/util.ts ***!
- \*******************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.equalizeId = exports.findColumnIndexById = exports.isOdd = exports.isRowSelected = exports.getConditionalStyle = exports.noop = exports.recalculatePage = exports.getNumberOfPages = exports.handleFunctionProps = exports.getSortDirection = exports.decorateColumns = exports.removeItem = exports.insertItem = exports.getProperty = exports.parseSelector = exports.sort = exports.isEmpty = exports.prop = void 0;
- var types_1 = __webpack_require__(/*! ./types */ "./src/DataTable/types.ts");
- function prop(obj, key) {
- return obj[key];
- }
- exports.prop = prop;
- function isEmpty(field) {
- if (field === void 0) { field = ''; }
- if (typeof field === 'number') {
- return false;
- }
- return !field || field.length === 0;
- }
- exports.isEmpty = isEmpty;
- function sort(rows,
- // TODO: remove string in V8
- selector, direction, sortFn) {
- if (!selector) {
- return rows;
- }
- if (sortFn && typeof sortFn === 'function') {
- // we must create a new rows reference
- return sortFn(rows.slice(0), selector, direction);
- }
- return rows.slice(0).sort(function (a, b) {
- var aValue;
- var bValue;
- if (typeof selector === 'string') {
- // @ts-ignore
- aValue = parseSelector(a, selector);
- // @ts-ignore
- bValue = parseSelector(b, selector);
- }
- else {
- aValue = selector(a);
- bValue = selector(b);
- }
- if (direction === 'asc') {
- if (aValue < bValue) {
- return -1;
- }
- if (aValue > bValue) {
- return 1;
- }
- }
- if (direction === 'desc') {
- if (aValue > bValue) {
- return -1;
- }
- if (aValue < bValue) {
- return 1;
- }
- }
- return 0;
- });
- }
- exports.sort = sort;
- // TODO: string based selectors will be removed in v8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- function parseSelector(row, selector) {
- return selector.split('.').reduce(function (acc, part) {
- // O(n2) when querying for an array (e.g. items[0].name)
- // Likely, the object depth will be reasonable enough that performance is not a concern
- var arr = part.match(/[^\]\\[.]+/g);
- if (arr && arr.length > 1) {
- for (var i = 0; i < arr.length; i++) {
- return acc[arr[i]][arr[i + 1]];
- }
- }
- return acc[part];
- }, row);
- }
- exports.parseSelector = parseSelector;
- function getProperty(row,
- // TODO: remove string type in V8
- selector, // unknown allows us to throw an error for JS code
- format, rowIndex) {
- if (!selector) {
- return null;
- }
- // TODO: remove string check in V8
- if (typeof selector !== 'string' && typeof selector !== 'function') {
- throw new Error('selector must be a . delimited string eg (my.property) or function (e.g. row => row.field');
- }
- // format will override how the selector is displayed but the original dataset is used for sorting
- if (format && typeof format === 'function') {
- return format(row, rowIndex);
- }
- if (selector && typeof selector === 'function') {
- return selector(row, rowIndex);
- }
- // TODO: Remove in V8
- // @ts-ignore
- return parseSelector(row, selector);
- }
- exports.getProperty = getProperty;
- function insertItem(array, item, index) {
- if (array === void 0) { array = []; }
- if (index === void 0) { index = 0; }
- return __spreadArray(__spreadArray(__spreadArray([], array.slice(0, index), true), [item], false), array.slice(index), true);
- }
- exports.insertItem = insertItem;
- function removeItem(array, item, keyField) {
- if (array === void 0) { array = []; }
- if (keyField === void 0) { keyField = 'id'; }
- var newArray = array.slice();
- var outerField = prop(item, keyField);
- if (outerField) {
- newArray.splice(newArray.findIndex(function (a) {
- var innerField = prop(a, keyField);
- return innerField === outerField;
- }), 1);
- }
- else {
- newArray.splice(newArray.findIndex(function (a) { return a === item; }), 1);
- }
- return newArray;
- }
- exports.removeItem = removeItem;
- // Make sure columns have unique id's
- function decorateColumns(columns) {
- return columns.map(function (column, index) {
- var decoratedColumn = __assign(__assign({}, column), { sortable: column.sortable || !!column.sortFunction || undefined });
- if (!column.id) {
- decoratedColumn.id = index + 1;
- return decoratedColumn;
- }
- return decoratedColumn;
- });
- }
- exports.decorateColumns = decorateColumns;
- function getSortDirection(ascDirection) {
- if (ascDirection === void 0) { ascDirection = false; }
- return ascDirection ? types_1.SortOrder.ASC : types_1.SortOrder.DESC;
- }
- exports.getSortDirection = getSortDirection;
- function handleFunctionProps(object) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- var newObject;
- Object.keys(object)
- .map(function (o) { return object[o]; })
- .forEach(function (value, index) {
- var _a;
- var oldObject = object;
- if (typeof value === 'function') {
- newObject = __assign(__assign({}, oldObject), (_a = {}, _a[Object.keys(object)[index]] = value.apply(void 0, args), _a));
- // delete oldObject[value];
- }
- });
- return newObject || object;
- }
- exports.handleFunctionProps = handleFunctionProps;
- function getNumberOfPages(rowCount, rowsPerPage) {
- return Math.ceil(rowCount / rowsPerPage);
- }
- exports.getNumberOfPages = getNumberOfPages;
- function recalculatePage(prevPage, nextPage) {
- return Math.min(prevPage, nextPage);
- }
- exports.recalculatePage = recalculatePage;
- var noop = function () { return null; };
- exports.noop = noop;
- function getConditionalStyle(row, conditionalRowStyles, baseClassNames) {
- if (conditionalRowStyles === void 0) { conditionalRowStyles = []; }
- if (baseClassNames === void 0) { baseClassNames = []; }
- var rowStyle = {};
- var classNames = __spreadArray([], baseClassNames, true);
- if (conditionalRowStyles.length) {
- conditionalRowStyles.forEach(function (crs) {
- if (!crs.when || typeof crs.when !== 'function') {
- throw new Error('"when" must be defined in the conditional style object and must be function');
- }
- // evaluate the field and if true return a the style to be applied
- if (crs.when(row)) {
- rowStyle = crs.style || {};
- if (crs.classNames) {
- classNames = __spreadArray(__spreadArray([], classNames, true), crs.classNames, true);
- }
- if (typeof crs.style === 'function') {
- rowStyle = crs.style(row) || {};
- }
- }
- });
- }
- return { style: rowStyle, classNames: classNames.join(' ') };
- }
- exports.getConditionalStyle = getConditionalStyle;
- function isRowSelected(row, selectedRows, keyField) {
- if (selectedRows === void 0) { selectedRows = []; }
- if (keyField === void 0) { keyField = 'id'; }
- // cast row as TableRow because the property is unknown in advance therefore, typescript will throw an error
- var outerField = prop(row, keyField);
- if (outerField) {
- return selectedRows.some(function (r) {
- var innerField = prop(r, keyField);
- return innerField === outerField;
- });
- }
- return selectedRows.some(function (r) { return r === row; });
- }
- exports.isRowSelected = isRowSelected;
- function isOdd(num) {
- return num % 2 === 0;
- }
- exports.isOdd = isOdd;
- function findColumnIndexById(columns, id) {
- if (!id) {
- return -1;
- }
- return columns.findIndex(function (c) {
- return equalizeId(c.id, id);
- });
- }
- exports.findColumnIndexById = findColumnIndexById;
- function equalizeId(a, b) {
- return a == b;
- }
- exports.equalizeId = equalizeId;
- /***/ }),
- /***/ "./src/cmps/badge/Badge.tsx":
- /*!**********************************!*\
- !*** ./src/cmps/badge/Badge.tsx ***!
- \**********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Badge = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Badge = /** @class */ (function (_super) {
- __extends(Badge, _super);
- function Badge() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Badge.prototype.render = function () {
- return React.createElement("span", __assign({}, this.props, { className: 'badge ' + this.props.className }));
- };
- return Badge;
- }(React.Component));
- exports.Badge = Badge;
- /***/ }),
- /***/ "./src/cmps/button/Button.tsx":
- /*!************************************!*\
- !*** ./src/cmps/button/Button.tsx ***!
- \************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Button = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Button = /** @class */ (function (_super) {
- __extends(Button, _super);
- function Button() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.defaultProps = {
- duration: 950
- };
- return _this;
- }
- // constructor(props: ButtonProps) {
- // super(props);
- // }
- /**
- * Initialisation of the wave effect after the component did mount
- */
- Button.prototype.componentDidMount = function () {
- var _this = this;
- if (this.el) {
- //new Waves(this.el, { duration: 950 });
- if ('ontouchstart' in window) {
- this.el.addEventListener('touchstart', function (e) {
- _this.triggerEffect.bind(_this)(e);
- }, false);
- }
- this.el.addEventListener('mousedown', function (e) {
- _this.triggerEffect.bind(_this)(e);
- }, false);
- }
- };
- Button.prototype.triggerEffect = function (e) {
- var _this = this;
- if (this.el) {
- this.showEffect(e);
- if ('ontouchstart' in window) {
- this.el.addEventListener('touchend', function (e) {
- _this.hideEffect.bind(_this)(e);
- }, false);
- this.el.addEventListener('touchcancel', function (e) {
- _this.hideEffect.bind(_this)(e);
- }, false);
- }
- this.el.addEventListener('mouseup', function (e) {
- _this.hideEffect.bind(_this)(e);
- }, false);
- this.el.addEventListener('mouseleave', function (e) {
- _this.hideEffect.bind(_this)(e);
- }, false);
- this.el.addEventListener('dragend', function (e) {
- _this.hideEffect.bind(_this)(e);
- }, false);
- }
- };
- Button.prototype.isWindow = function (obj) {
- return obj !== null && obj === obj.window;
- };
- Button.prototype.getWindow = function (elem) {
- return this.isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
- };
- Button.prototype.offset = function () {
- var _a, _b;
- var docElem, win, box = { top: 0, left: 0 }, doc = this.el && this.el.ownerDocument;
- docElem = doc === null || doc === void 0 ? void 0 : doc.documentElement;
- if (typeof ((_a = this.el) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect) !== typeof undefined) {
- box = ((_b = this.el) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect()) || { top: 0, left: 0 };
- }
- win = this.getWindow(doc);
- return {
- top: box.top + win.pageYOffset - ((docElem === null || docElem === void 0 ? void 0 : docElem.clientTop) || 0),
- left: box.left + win.pageXOffset - ((docElem === null || docElem === void 0 ? void 0 : docElem.clientLeft) || 0)
- };
- };
- Button.prototype.showEffect = function (e) {
- if (this.el && document) {
- // Disable right click
- if (e.button === 2) {
- return false;
- }
- // Create ripple
- var ripple = document.createElement('div');
- ripple.className = 'waves-ripple';
- this.el.appendChild(ripple);
- this.ripple = ripple;
- // Get click coordinate and element witdh
- var pos = this.offset();
- var relativeY = (e.pageY - pos.top);
- var relativeX = (e.pageX - pos.left);
- var scale = 'scale(' + ((this.el.clientWidth / 100) * 10) + ')';
- // Support for touch devices
- if ('touches' in e) {
- relativeY = (e.touches[0].pageY - pos.top);
- relativeX = (e.touches[0].pageX - pos.left);
- }
- // Attach data to element
- this.ripple.setAttribute('data-hold', Date.now().toString());
- this.ripple.setAttribute('data-scale', scale);
- this.ripple.setAttribute('data-x', relativeX.toString());
- this.ripple.setAttribute('data-y', relativeY.toString());
- // Set ripple position
- var rippleStyle = {
- 'top': relativeY + 'px',
- 'left': relativeX + 'px'
- };
- //this.ripple.className = this.ripple.className + ' waves-notransition';
- this.ripple.setAttribute('style', this.convertStyle(rippleStyle));
- this.ripple.className = this.ripple.className.replace('waves-notransition', '');
- // Scale the ripple
- rippleStyle['-webkit-transform'] = scale;
- rippleStyle['-moz-transform'] = scale;
- rippleStyle['-ms-transform'] = scale;
- rippleStyle['-o-transform'] = scale;
- rippleStyle['transform'] = scale;
- rippleStyle['opacity'] = '1';
- rippleStyle['-webkit-transition-duration'] = 2 * this.props.duration / 3 + 'ms';
- rippleStyle['-moz-transition-duration'] = 2 * this.props.duration / 3 + 'ms';
- rippleStyle['-o-transition-duration'] = 2 * this.props.duration / 3 + 'ms';
- rippleStyle['transition-duration'] = 2 * this.props.duration / 3 + 'ms';
- rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
- rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
- rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
- rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
- this.ripple.setAttribute('style', this.convertStyle(rippleStyle));
- }
- };
- Button.prototype.convertStyle = function (obj) {
- var style = '';
- for (var a in obj) {
- if (obj.hasOwnProperty(a)) {
- style += (a + ':' + obj[a] + ';');
- }
- }
- return style;
- };
- Button.prototype.hideEffect = function () {
- if (this.el) {
- //Effect.hide
- var ripple_1 = this.el.lastElementChild;
- if (ripple_1 && ripple_1.classList.contains("waves-ripple")) {
- var relativeX_1 = ripple_1.getAttribute('data-x');
- var relativeY_1 = ripple_1.getAttribute('data-y');
- var scale_1 = ripple_1.getAttribute('data-scale');
- // Get delay beetween mousedown and mouse leave
- var diff = Date.now() - Number(ripple_1.getAttribute('data-hold'));
- var delay = this.props.duration / 2 - diff;
- if (delay < 0) {
- delay = 0;
- }
- var me_1 = this;
- // Fade out ripple after delay
- setTimeout(function () {
- var style = {
- 'top': relativeY_1 + 'px',
- 'left': relativeX_1 + 'px',
- 'opacity': '0',
- // Duration
- '-webkit-transition-duration': me_1.props.duration / 3 + 'ms',
- '-moz-transition-duration': me_1.props.duration / 3 + 'ms',
- '-o-transition-duration': me_1.props.duration / 3 + 'ms',
- 'transition-duration': me_1.props.duration / 3 + 'ms',
- '-webkit-transform': scale_1,
- '-moz-transform': scale_1,
- '-ms-transform': scale_1,
- '-o-transform': scale_1,
- 'transform': scale_1,
- };
- ripple_1 === null || ripple_1 === void 0 ? void 0 : ripple_1.setAttribute('style', me_1.convertStyle(style));
- setTimeout(function () {
- var _a;
- try {
- ripple_1 && ((_a = me_1.el) === null || _a === void 0 ? void 0 : _a.removeChild(ripple_1));
- }
- catch (e) {
- return false;
- }
- }, me_1.props.duration);
- }, delay);
- }
- }
- };
- Button.prototype.render = function () {
- var _this = this;
- var className = "btn waves-effect ";
- // if (this.props.model == "circle") {
- // className += "btn-floating ";
- // }
- // if (this.props.size == "large") {
- // className += "btn-large ";
- // }
- // if (this.props.size == "small") {
- // className += "btn-small ";
- // }
- return (React.createElement("a", __assign({ href: "#section" }, this.props, { ref: function (el) {
- _this.el = el;
- }, className: className + this.props.className })));
- };
- return Button;
- }(React.Component));
- exports.Button = Button;
- /***/ }),
- /***/ "./src/cmps/card/Card.tsx":
- /*!********************************!*\
- !*** ./src/cmps/card/Card.tsx ***!
- \********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.CardAction = exports.CardTitle = exports.CardImage = exports.CardContent = exports.Card = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Card = /** @class */ (function (_super) {
- __extends(Card, _super);
- function Card() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Card.prototype.render = function () {
- return React.createElement("div", __assign({}, this.props, { className: "card " + this.props.className }));
- };
- return Card;
- }(React.Component));
- exports.Card = Card;
- var CardContent = /** @class */ (function (_super) {
- __extends(CardContent, _super);
- function CardContent() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- CardContent.prototype.render = function () {
- return (React.createElement("div", __assign({}, this.props, { className: "card-content " + this.props.className })));
- };
- return CardContent;
- }(React.Component));
- exports.CardContent = CardContent;
- var CardImage = /** @class */ (function (_super) {
- __extends(CardImage, _super);
- function CardImage() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- CardImage.prototype.render = function () {
- return (React.createElement("div", __assign({}, this.props, { className: "card-image " + this.props.className }),
- React.createElement("img", { src: this.props.src }),
- this.props.imageTitle && React.createElement("span", { className: "card-title" }, this.props.imageTitle),
- this.props.children));
- };
- return CardImage;
- }(React.Component));
- exports.CardImage = CardImage;
- var CardTitle = /** @class */ (function (_super) {
- __extends(CardTitle, _super);
- function CardTitle() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- CardTitle.prototype.render = function () {
- return (React.createElement("span", __assign({}, this.props, { className: "card-title " + this.props.className })));
- };
- return CardTitle;
- }(React.Component));
- exports.CardTitle = CardTitle;
- var CardAction = /** @class */ (function (_super) {
- __extends(CardAction, _super);
- function CardAction() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- CardAction.prototype.render = function () {
- return (React.createElement("div", __assign({}, this.props, { className: "card-action " + this.props.className })));
- };
- return CardAction;
- }(React.Component));
- exports.CardAction = CardAction;
- /***/ }),
- /***/ "./src/cmps/chip/Chip.tsx":
- /*!********************************!*\
- !*** ./src/cmps/chip/Chip.tsx ***!
- \********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Chip = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Chip = /** @class */ (function (_super) {
- __extends(Chip, _super);
- function Chip() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Chip.prototype.render = function () { return React.createElement("div", __assign({}, this.props, { className: 'chip ' + this.props.className })); };
- return Chip;
- }(React.Component));
- exports.Chip = Chip;
- exports["default"] = Chip;
- /***/ }),
- /***/ "./src/cmps/collapsible/Collapsible.tsx":
- /*!**********************************************!*\
- !*** ./src/cmps/collapsible/Collapsible.tsx ***!
- \**********************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.CollapsTrigger = exports.CollapsBody = exports.Collapsible = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Icon_1 = __webpack_require__(/*! ../icons/Icon */ "./src/cmps/icons/Icon.tsx");
- var Collapsible = /** @class */ (function (_super) {
- __extends(Collapsible, _super);
- function Collapsible() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Collapsible.prototype.render = function () {
- return (React.createElement("ul", __assign({}, this.props, { className: "collapsible " + this.props.className })));
- };
- return Collapsible;
- }(React.Component));
- exports.Collapsible = Collapsible;
- var CollapsBody = /** @class */ (function (_super) {
- __extends(CollapsBody, _super);
- function CollapsBody() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.el = null;
- return _this;
- }
- CollapsBody.prototype.render = function () {
- var _this = this;
- return (React.createElement("div", __assign({}, this.props, { ref: function (ref) {
- _this.el = ref;
- }, className: "collapsible-body " + this.props.className })));
- };
- return CollapsBody;
- }(React.Component));
- exports.CollapsBody = CollapsBody;
- var CollapsTrigger = /** @class */ (function (_super) {
- __extends(CollapsTrigger, _super);
- function CollapsTrigger() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.state = {
- isOpen: false
- };
- _this.el = null;
- return _this;
- }
- CollapsTrigger.prototype.componentDidMount = function () {
- // new Waves(this.el, { duration: 1050 });
- };
- CollapsTrigger.prototype.showHideBody = function (e) {
- if (this.isOpen()) {
- this.collapse(e);
- }
- else {
- this.expand(e);
- }
- };
- CollapsTrigger.prototype.collapse = function (e) {
- e.stopPropagation();
- var collapsible = this.findCollapsible.bind(this)();
- if (collapsible) {
- var bodyEl = collapsible.querySelector(".collapsible-body");
- if (bodyEl) {
- bodyEl.style.display = 'none';
- this.setState({
- isOpen: false
- });
- }
- }
- };
- CollapsTrigger.prototype.findCollapsible = function () {
- var parentEl = this.el && this.el.parentElement;
- if (parentEl && !parentEl.classList.contains("collapsible")) {
- parentEl = parentEl && parentEl.parentElement;
- }
- return parentEl;
- };
- CollapsTrigger.prototype.expand = function (e) {
- e.stopPropagation();
- var collapsible = this.findCollapsible.bind(this)();
- if (collapsible) {
- var bodyEl = collapsible.querySelector(".collapsible-body");
- if (bodyEl) {
- bodyEl.style.display = 'block';
- this.setState({
- isOpen: true
- });
- }
- }
- };
- CollapsTrigger.prototype.isOpen = function () {
- return this.state.isOpen;
- };
- CollapsTrigger.prototype.render = function () {
- var _this = this;
- var icon = (this.state.isOpen == true) ? React.createElement(Icon_1.Icon, { style: { float: "right" } }, "chevron_down") :
- React.createElement(Icon_1.Icon, { style: { float: "right" } }, "chevron_right");
- return (React.createElement("div", __assign({}, this.props, { ref: function (ref) {
- _this.el = ref;
- }, className: "collapsible-header " + this.props.className, onClick: function (e) { return _this.showHideBody.bind(_this)(e); } }),
- icon,
- this.props.children));
- };
- return CollapsTrigger;
- }(React.Component));
- exports.CollapsTrigger = CollapsTrigger;
- /***/ }),
- /***/ "./src/cmps/collections/Collection.tsx":
- /*!*********************************************!*\
- !*** ./src/cmps/collections/Collection.tsx ***!
- \*********************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.CollectionItem = exports.Collection = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Collection = /** @class */ (function (_super) {
- __extends(Collection, _super);
- function Collection() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Collection.prototype.render = function () {
- var _this = this;
- var className = this.props.className;
- return React.createElement("ul", __assign({}, this.props, { ref: function (r) { return _this.el = r; }, className: "collection " + (className || "") }));
- };
- return Collection;
- }(React.Component));
- exports.Collection = Collection;
- var CollectionItem = /** @class */ (function (_super) {
- __extends(CollectionItem, _super);
- function CollectionItem() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- CollectionItem.prototype.render = function () {
- var _this = this;
- var className = this.props.className;
- return React.createElement("li", __assign({}, this.props, { ref: function (r) { return _this.el = r; }, className: "collection-item " + (className || "") }));
- };
- return CollectionItem;
- }(React.Component));
- exports.CollectionItem = CollectionItem;
- /***/ }),
- /***/ "./src/cmps/forms/Field.tsx":
- /*!**********************************!*\
- !*** ./src/cmps/forms/Field.tsx ***!
- \**********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Field = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- // @ts-ignore
- var V = __webpack_require__(/*! ./rex */ "./src/cmps/forms/rex.tsx");
- var Field = /** @class */ (function (_super) {
- __extends(Field, _super);
- function Field(props) {
- var _this = _super.call(this, props) || this;
- _this.state = {
- labelClassName: '',
- focusCount: 0,
- errmsg: ""
- };
- _this.id = _this.uuidv4();
- return _this;
- }
- Field.prototype.getDefaults = function () {
- return {
- placeholder: '',
- id: Date.now(),
- className: 'validate',
- label: 'Text',
- type: 'text',
- icon: 'account_circle'
- };
- };
- Field.prototype.getValue = function () {
- return this.el && this.el.value;
- };
- Field.prototype.setValue = function (val) {
- if (this.el) {
- this.el.value = val;
- if (val !== "") {
- this.label && this.label.classList.add('active');
- }
- }
- };
- Field.prototype.isValid = function () {
- return this.validate(true);
- };
- Field.prototype.onBlur = function (e) {
- e.stopPropagation();
- e.preventDefault();
- if (this.label && ((this.props.placeholder !== '') || (this.el && this.el.value !== ""))) {
- if (!this.label.classList.contains("active")) {
- this.label.classList.add('active');
- }
- }
- else {
- this.label && this.label.classList.remove('active');
- }
- if (this.props.onBlur && typeof this.props.onBlur === "function") {
- this.props.onBlur(e);
- }
- this.validate(true);
- this.setState({ focusCount: this.state.focusCount + 1 });
- };
- Field.prototype.onFocus = function (e) {
- if (this.label && !this.label.classList.contains("active")) {
- this.label.classList.add('active');
- }
- if (this.props.onFocus && typeof this.props.onFocus === "function") {
- this.props.onFocus(e);
- }
- };
- Field.prototype.validate = function (blure) {
- if (blure === void 0) { blure = false; }
- if (blure) {
- this.setState({ focusCount: this.state.focusCount + 1 });
- }
- if (this.state.focusCount > 0 || blure) {
- var _a = this.props, min = _a.min, max = _a.max, required = _a.required, vtype = _a.vtype, vtypeMsg = _a.vtypeMsg;
- if (this.el && this.el.value && this.el.value !== '') {
- var length_1 = this.el.value.length;
- if (min && max && (length_1 < min || length_1 > max)) {
- this.setState({ errmsg: min != max ? "doit avoir une longeur comprise entre ".concat(min, " et ").concat(max, ".") : "doit avoir une longeur de ".concat(min, " caract\u00E8res") });
- this.el.classList.remove('valid');
- this.el.classList.add('invalid');
- this.makeInValid();
- return false;
- }
- else if (!min && max && length_1 > max) {
- this.setState({ errmsg: "doit avoir une longeur maximal de ".concat(max, ".") });
- this.el.classList.remove('valid');
- this.el.classList.add('invalid');
- this.makeInValid();
- return false;
- }
- else if (min && !max && length_1 < min) {
- this.setState({ errmsg: "doit avoir une longeur minimal de ".concat(min, ".") });
- this.el.classList.remove('valid');
- this.el.classList.add('invalid');
- this.makeInValid();
- return false;
- }
- else if (vtype && !V[vtype].test(this.el.value)) {
- this.setState({ errmsg: vtypeMsg || "Doit \u00EAtre un ".concat(vtype, " valide.") });
- this.el.classList.remove('valid');
- this.el.classList.add('invalid');
- this.makeInValid();
- return false;
- }
- else {
- this.setState({ errmsg: "" });
- this.el.classList.remove('invalid');
- this.el.classList.add('valid');
- return true;
- }
- }
- else {
- if (required) {
- this.setState({ errmsg: "Ne peu pas etre vide." });
- this.makeInValid();
- return false;
- }
- else {
- this.setState({ errmsg: "" });
- this.makeValid();
- //this.el.classList.add('valid');
- return true;
- }
- }
- }
- return false;
- };
- Field.prototype.makeInValid = function () {
- if (this.el) {
- this.el.classList.remove('valid');
- this.el.classList.add('invalid');
- }
- };
- Field.prototype.makeValid = function () {
- if (this.el) {
- this.el.classList.add('valid');
- this.el.classList.remove('invalid');
- }
- };
- Field.prototype.componentDidMount = function () {
- if (this.label && ((this.props.placeholder !== '') || (this.el && this.el.value !== ""))) {
- this.label.classList.add('active');
- this.setState({
- labelClassName: 'active'
- });
- }
- };
- Field.prototype.onKeyUp = function (e) {
- if (e && "Enter" === e.key && this.props.onEnterKey) {
- e.preventDefault();
- e.stopPropagation();
- this.props.onEnterKey(e, this);
- }
- this.validate();
- };
- Field.prototype.uuidv4 = function () {
- // @ts-ignore
- return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
- return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);
- });
- };
- Field.prototype.getErrorView = function () {
- if (this.state.errmsg != null && this.state.errmsg !== "") {
- return React.createElement("div", { className: "helper-text" }, this.state.errmsg);
- }
- };
- Field.prototype.render = function () {
- var _this = this;
- var props = __assign({}, this.props);
- // @ts-ignore
- delete props.vtypeMsg;
- // @ts-ignore
- delete props.onEnterKey;
- return React.createElement("div", { className: "input-field" },
- React.createElement("label", { ref: function (ref) { return (_this.label = ref); }, htmlFor: this.id, className: this.state.labelClassName }, this.props.label + (this.props.required === true ? ' *' : '')),
- React.createElement("input", __assign({}, props, { ref: function (ref) {
- _this.el = ref;
- }, value: this.props.value || '', onChange: this.props.onChange || (function () {
- }), onFocus: function (e) { return _this.onFocus.bind(_this)(e); }, type: this.props.type || "text", onBlur: function (e) { return _this.onBlur.bind(_this)(e); }, onKeyUp: function (e) { return _this.onKeyUp.bind(_this)(e); }, id: this.id, className: "validate " + this.props.className })),
- this.getErrorView());
- };
- return Field;
- }(React.Component));
- exports.Field = Field;
- /***/ }),
- /***/ "./src/cmps/forms/Textarea.tsx":
- /*!*************************************!*\
- !*** ./src/cmps/forms/Textarea.tsx ***!
- \*************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __rest = (this && this.__rest) || function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Textarea = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var PropTypes = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
- var autosize = __webpack_require__(/*! autosize */ "./node_modules/autosize/dist/autosize.js");
- var line_height_1 = __webpack_require__(/*! ./line-height */ "./src/cmps/forms/line-height.tsx");
- var getLineHeight = line_height_1.default;
- var Textarea = /** @class */ (function (_super) {
- __extends(Textarea, _super);
- function Textarea() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.textarea = null;
- _this.state = {
- lineHeight: null
- };
- _this.onResize = function (e) {
- if (_this.props.onResize) {
- _this.props.onResize(e);
- }
- };
- _this.onChange = function (e) {
- var onChange = _this.props.onChange;
- _this.currentValue = e.currentTarget.value;
- onChange && onChange(e);
- };
- _this.updateLineHeight = function () {
- if (_this.textarea) {
- _this.setState({
- lineHeight: getLineHeight(_this.textarea)
- });
- }
- };
- return _this;
- }
- Textarea.prototype.componentDidUpdate = function () {
- this.textarea && autosize.update(this.textarea);
- };
- Textarea.prototype.componentDidMount = function () {
- var _this = this;
- var _a = this.props, maxRows = _a.maxRows, async = _a.async;
- if (typeof maxRows === "number") {
- this.updateLineHeight();
- }
- if (typeof maxRows === "number" || async) {
- /*
- the defer is needed to:
- - force "autosize" to activate the scrollbar when this.props.maxRows is passed
- - support StyledComponents (see #71)
- */
- setTimeout(
- // @ts-ignore
- function () { return _this.textarea && autosize(_this.textarea); });
- }
- else {
- // @ts-ignore
- this.textarea && autosize(this.textarea);
- }
- if (this.textarea) {
- this.textarea.addEventListener("autosize:resized", this.onResize);
- }
- };
- Textarea.prototype.componentWillUnmount = function () {
- if (this.textarea) {
- this.textarea.removeEventListener("autosize:resized", this.onResize);
- autosize.destroy(this.textarea);
- }
- };
- Textarea.prototype.render = function () {
- var _this = this;
- var _a = this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, children = _b.children, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "children"]), lineHeight = _a.state.lineHeight;
- var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;
- return (React.createElement("textarea", __assign({}, props, { onChange: this.onChange, className: "textarea " + (this.props.className || ""), style: maxHeight ? __assign(__assign({}, style), { maxHeight: maxHeight }) : style, ref: function (element) {
- _this.textarea = element;
- } }), children));
- };
- Textarea.defaultProps = {
- rows: 1,
- async: false
- };
- Textarea.propTypes = {
- rows: PropTypes.number,
- maxRows: PropTypes.number,
- onResize: PropTypes.func,
- async: PropTypes.bool
- };
- return Textarea;
- }(React.Component));
- exports.Textarea = Textarea;
- /***/ }),
- /***/ "./src/cmps/forms/line-height.tsx":
- /*!****************************************!*\
- !*** ./src/cmps/forms/line-height.tsx ***!
- \****************************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- // Load in dependencies
- var computedStyle = __webpack_require__(/*! computed-style */ "./node_modules/computed-style/dist/computedStyle.commonjs.js");
- /**
- * Calculate the `line-height` of a given node
- * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.
- * @returns {Number} `line-height` of the element in pixels
- */
- function lineHeight(node) {
- // Grab the line-height via style
- var lnHeightStr = computedStyle(node, 'line-height');
- var lnHeight = parseFloat(lnHeightStr);
- // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')
- if (lnHeightStr === lnHeight + '') {
- // Save the old lineHeight style and update the em unit to the element
- var _lnHeightStyle = node.style.lineHeight;
- node.style.lineHeight = lnHeightStr + 'em';
- // Calculate the em based height
- lnHeightStr = computedStyle(node, 'line-height');
- lnHeight = parseFloat(lnHeightStr);
- // Revert the lineHeight style
- if (_lnHeightStyle) {
- node.style.lineHeight = _lnHeightStyle;
- }
- else {
- //delete node.style.lineHeight;
- }
- }
- // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)
- // DEV: `em` units are converted to `pt` in IE6
- // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length
- if (lnHeightStr.indexOf('pt') !== -1) {
- lnHeight *= 4;
- lnHeight /= 3;
- // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)
- }
- else if (lnHeightStr.indexOf('mm') !== -1) {
- lnHeight *= 96;
- lnHeight /= 25.4;
- // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)
- }
- else if (lnHeightStr.indexOf('cm') !== -1) {
- lnHeight *= 96;
- lnHeight /= 2.54;
- // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)
- }
- else if (lnHeightStr.indexOf('in') !== -1) {
- lnHeight *= 96;
- // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)
- }
- else if (lnHeightStr.indexOf('pc') !== -1) {
- lnHeight *= 16;
- }
- // Continue our computation
- lnHeight = Math.round(lnHeight);
- // If the line-height is "normal", calculate by font-size
- if (lnHeightStr === 'normal') {
- // Create a temporary node
- var nodeName = node.nodeName;
- var _node = document && document.createElement(nodeName);
- _node.innerHTML = ' ';
- // If we have a text area, reset it to only 1 row
- // https://github.com/twolfson/line-height/issues/4
- if (nodeName.toUpperCase() === 'TEXTAREA') {
- _node.setAttribute('rows', '1');
- }
- // Set the font-size of the element
- var fontSizeStr = computedStyle(node, 'font-size');
- _node.style.fontSize = fontSizeStr;
- // Remove default padding/border which can affect offset height
- // https://github.com/twolfson/line-height/issues/4
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight
- _node.style.padding = '0px';
- _node.style.border = '0px';
- // Append it to the body
- var body = document.body;
- body.appendChild(_node);
- // Assume the line height of the element is the height
- var height = _node.offsetHeight;
- lnHeight = height;
- // Remove our child from the DOM
- body.removeChild(_node);
- }
- // Return the calculated height
- return lnHeight;
- }
- exports["default"] = lineHeight;
- /***/ }),
- /***/ "./src/cmps/forms/rex.tsx":
- /*!********************************!*\
- !*** ./src/cmps/forms/rex.tsx ***!
- \********************************/
- /***/ ((module) => {
- "use strict";
- module.exports = {
- "num": /^[0-9]+$/,
- "numeric": /^[0-9]+$/,
- "alpha": /^[a-zA-Z_]+$/,
- "alphabetic": /^[a-zA-Z_]+$/,
- "alphanum": /^[a-zA-Z0-9_]+$/,
- "alphanumeric": /^[a-zA-Z0-9_]+$/,
- "email": /^(")?(?:[^\."\s])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,
- "url": /(((^https?)|(^ftp)):\/\/((([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)|(localhost|LOCALHOST))\/?)/i,
- "ipAddress": /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,
- "phone": /^(?:(?:\+|00)33|0)\s*[1-9](?:\d{2}){4}$/,
- "codePost": /^(((?!(96|97|98|99|00)))[0-9]{5})$|(2A|2B|2a|2b)[0-9]{3}$|(971|972|973|974|975|976)[0-9]{2}$/,
- "codePostal": /^(((?!(96|97|98|99|00)))[0-9]{5})$|(2A|2B|2a|2b)[0-9]{3}$|(971|972|973|974|975|976)[0-9]{2}$/,
- "time": /^([1-9]|1[0-9]):([0-5][0-9])(\s[a|p]m)$/,
- "price": /^\d+(\.\d{2})?$/,
- "prix": /^\d+(\.\d{2})?$/,
- "date": /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/,
- "tva": /^(5\.5|10|20)$/,
- "password": /(?=^.{8,}$)(?=.*\d)(?=.*[!@#$%^&*]+)(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,
- "motDePasse": /(?=^.{8,}$)(?=.*\d)(?=.*[!@#$%^&*]+)(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,
- "matricule": /(^\d{1,4}[A-Za-z]{1,4}\d{1,2}$)|(^[A-Za-z]{1,2}\s*\d{1,3}\s*[A-Za-z]{1,2})$/,
- "tvaIntercom": /^(FR)([0-9]{11}$)/,
- "iban": /^FR\d{12}[A-Z0-9]{11}\d{2}$/,
- "timeMask": /[\d\s:amp]/i,
- 'numMask': /[0-9]/i,
- 'alphaMask': /[a-z_]/i,
- 'alphanumMask': /[a-z0-9_]/i,
- 'emailMask': /[\w.\-@'"!#$%&'*+/=?^_`{|}~]/i,
- 'urlMask': /[a-z0-9_]/i,
- 'ipAddressMask': /[\d\.]/i,
- "phoneMask": /[0-9\+]/i,
- "codePostMask": /[0-9ABab]/i,
- 'passwordMask': /[\w.\-@'"!#$%&'*+/=?^_`{|}~]/i,
- };
- /***/ }),
- /***/ "./src/cmps/icons/Icon.tsx":
- /*!*********************************!*\
- !*** ./src/cmps/icons/Icon.tsx ***!
- \*********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Icon = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Icon = /** @class */ (function (_super) {
- __extends(Icon, _super);
- function Icon() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Icon.prototype.render = function () {
- return React.createElement("span", __assign({}, this.props, { className: "s-icon " + this.props.className }));
- };
- return Icon;
- }(React.Component));
- exports.Icon = Icon;
- /***/ }),
- /***/ "./src/cmps/layouts/Layouts.tsx":
- /*!**************************************!*\
- !*** ./src/cmps/layouts/Layouts.tsx ***!
- \**************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Overlay = exports.Divider = exports.Parallax = exports.Row = exports.Col = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Col = /** @class */ (function (_super) {
- __extends(Col, _super);
- function Col() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.el = null;
- return _this;
- }
- Col.prototype.render = function () {
- var _this = this;
- return (React.createElement("div", __assign({}, this.props, { ref: function (ref) { return _this.el = ref; }, className: "col " + this.props.className })));
- };
- return Col;
- }(React.Component));
- exports.Col = Col;
- var Row = /** @class */ (function (_super) {
- __extends(Row, _super);
- function Row() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.el = null;
- return _this;
- }
- Row.prototype.render = function () {
- var _this = this;
- return (React.createElement("div", __assign({}, this.props, { ref: function (ref) { return _this.el = ref; }, className: "row " + this.props.className })));
- };
- return Row;
- }(React.Component));
- exports.Row = Row;
- var Parallax = /** @class */ (function (_super) {
- __extends(Parallax, _super);
- function Parallax() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Parallax.prototype.render = function () {
- var st = __assign({}, this.props.style);
- st.backgroundImage = "url(" + this.props.src + ")";
- return React.createElement("div", { className: "parallax", style: st }, this.props.children);
- };
- return Parallax;
- }(React.Component));
- exports.Parallax = Parallax;
- var Divider = /** @class */ (function (_super) {
- __extends(Divider, _super);
- function Divider() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Divider.prototype.render = function () {
- return (React.createElement("div", { className: "divider" }));
- };
- return Divider;
- }(React.Component));
- exports.Divider = Divider;
- var Overlay = /** @class */ (function (_super) {
- __extends(Overlay, _super);
- function Overlay() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.state = {
- visible: false
- };
- _this.el = null;
- return _this;
- }
- Overlay.prototype.show = function () {
- this.setState({
- visible: true
- });
- };
- Overlay.prototype.open = function () {
- return this.show();
- };
- Overlay.prototype.isVisible = function () {
- return this.state.visible;
- };
- Overlay.prototype.hide = function () {
- this.setState({
- visible: false
- });
- };
- Overlay.prototype.close = function () {
- return this.hide();
- };
- Overlay.prototype.render = function () {
- var _this = this;
- if (this.state.visible) {
- return (React.createElement("div", __assign({ ref: function (ref) {
- _this.el = ref;
- } }, this.props, { className: "modal-overlay " + this.props.className })));
- }
- return null;
- };
- return Overlay;
- }(React.Component));
- exports.Overlay = Overlay;
- /***/ }),
- /***/ "./src/cmps/modal/Modal.tsx":
- /*!**********************************!*\
- !*** ./src/cmps/modal/Modal.tsx ***!
- \**********************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.ModalHeader = exports.ModalFooter = exports.ModalContent = exports.Modal = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Modal = /** @class */ (function (_super) {
- __extends(Modal, _super);
- function Modal() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.state = {
- isOpen: false
- };
- return _this;
- }
- Modal.prototype.open = function () {
- this.setState({
- isOpen: true
- });
- };
- Modal.prototype.close = function () {
- this.setState({
- isOpen: false
- });
- };
- Modal.prototype.show = function () {
- return this.open();
- };
- Modal.prototype.hide = function () {
- return this.close();
- };
- Modal.prototype.render = function () {
- if (this.state.isOpen) {
- return (React.createElement("div", { className: "modal-overlay" },
- React.createElement("div", __assign({}, this.props, { className: "modal " + (this.props.className || "") }))));
- }
- return null;
- };
- return Modal;
- }(React.Component));
- exports.Modal = Modal;
- var ModalContent = /** @class */ (function (_super) {
- __extends(ModalContent, _super);
- function ModalContent() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- ModalContent.prototype.render = function () {
- return (React.createElement("div", __assign({}, this.props, { className: "modal-content " + (this.props.className || "") })));
- };
- return ModalContent;
- }(React.Component));
- exports.ModalContent = ModalContent;
- var ModalFooter = /** @class */ (function (_super) {
- __extends(ModalFooter, _super);
- function ModalFooter() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- ModalFooter.prototype.render = function () {
- return (React.createElement("div", __assign({}, this.props, { className: "modal-footer " + (this.props.className || "") })));
- };
- return ModalFooter;
- }(React.Component));
- exports.ModalFooter = ModalFooter;
- var ModalHeader = /** @class */ (function (_super) {
- __extends(ModalHeader, _super);
- function ModalHeader() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- ModalHeader.prototype.render = function () {
- return (React.createElement("div", __assign({}, this.props, { className: "modal-header " + (this.props.className || "") })));
- };
- return ModalHeader;
- }(React.Component));
- exports.ModalHeader = ModalHeader;
- /***/ }),
- /***/ "./src/cmps/navigation/NavBar.tsx":
- /*!****************************************!*\
- !*** ./src/cmps/navigation/NavBar.tsx ***!
- \****************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.NavBarBrand = exports.NavBarItem = exports.NavBarGroup = exports.NavBar = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var NavBar = /** @class */ (function (_super) {
- __extends(NavBar, _super);
- function NavBar() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- NavBar.prototype.render = function () {
- return React.createElement("nav", null,
- React.createElement("div", __assign({}, this.props, { className: "nav-wrapper" })));
- };
- return NavBar;
- }(React.Component));
- exports.NavBar = NavBar;
- var NavBarGroup = /** @class */ (function (_super) {
- __extends(NavBarGroup, _super);
- function NavBarGroup() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- NavBarGroup.prototype.render = function () {
- return React.createElement("ul", __assign({}, this.props, { className: "right hide-on-med-and-down ·" + (this.props.className || "") }));
- };
- return NavBarGroup;
- }(React.Component));
- exports.NavBarGroup = NavBarGroup;
- var NavBarItem = /** @class */ (function (_super) {
- __extends(NavBarItem, _super);
- function NavBarItem() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- NavBarItem.prototype.render = function () {
- return React.createElement("li", __assign({}, this.props));
- };
- return NavBarItem;
- }(React.Component));
- exports.NavBarItem = NavBarItem;
- var NavBarBrand = /** @class */ (function (_super) {
- __extends(NavBarBrand, _super);
- function NavBarBrand() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- NavBarBrand.prototype.render = function () {
- var Fragment = this.props.fragment;
- return Fragment && React.createElement(Fragment, __assign({}, this.props, { className: "brand-logo" })) || React.createElement("a", __assign({}, this.props, { className: "brand-logo" }));
- };
- return NavBarBrand;
- }(React.Component));
- exports.NavBarBrand = NavBarBrand;
- /***/ }),
- /***/ "./src/cmps/navigation/Navigation.tsx":
- /*!********************************************!*\
- !*** ./src/cmps/navigation/Navigation.tsx ***!
- \********************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Navigation = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var NavBar_1 = __webpack_require__(/*! ./NavBar */ "./src/cmps/navigation/NavBar.tsx");
- var SideNav_1 = __webpack_require__(/*! ./SideNav */ "./src/cmps/navigation/SideNav.tsx");
- var Navigation = /** @class */ (function (_super) {
- __extends(Navigation, _super);
- function Navigation(props) {
- return _super.call(this, props) || this;
- }
- Navigation.prototype.componentDidMount = function () {
- // console.log(this.navbar);
- // console.log(this.sidenav);
- };
- Navigation.prototype.render = function () {
- var _this = this;
- return React.createElement(React.Fragment, null,
- React.createElement(NavBar_1.NavBar, { ref: function (ref) {
- _this.navbar = ref;
- } },
- React.createElement("a", { className: "sidenav-trigger", onClick: function (e) {
- e.stopPropagation();
- _this.sidenav && _this.sidenav.toggle();
- } },
- React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", style: { width: "20px" }, fill: "white", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: "2" },
- React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4 6h16M4 12h16M4 18h16" }))),
- React.createElement(NavBar_1.NavBarBrand, null,
- React.createElement("img", { src: this.props.logo || "https://statics.d3v4pp.fr/logo.png", className: "circle", alt: "Brand" })),
- React.createElement(NavBar_1.NavBarGroup, null, this.props.routes && this.props.routes.map(function (route, i) {
- return React.createElement(NavBar_1.NavBarItem, { key: i }, route.element);
- }))),
- React.createElement(SideNav_1.SideNav, { ref: function (ref) {
- _this.sidenav = ref;
- } },
- React.createElement(SideNav_1.SideNavUser, { username: 'ayoub hassani', email: 'ayoub@d3v4pp.fr', src: "https://statics.d3v4pp.fr/logo.png", bg_src: "https://imgs.search.brave.com/yX0vgamsYEbsOU9XlyPGUM8DdmqxXpAKyzBM4s3wolA/rs:fit:1200:1030:1/g:ce/aHR0cHM6Ly93d3cu/YXZpYXNpbS5jb20v/d3AtY29udGVudC91/cGxvYWRzL2F2aWFz/aW0taW1hZ2UtbnVh/Z2VzLmpwZw" }),
- this.props.routes && this.props.routes.map(function (route, i) {
- return React.createElement(SideNav_1.SideNavEl, { onClick: function () { return _this.sidenav && _this.sidenav.hide(); }, key: i }, route.element);
- })));
- };
- return Navigation;
- }(React.Component));
- exports.Navigation = Navigation;
- /***/ }),
- /***/ "./src/cmps/navigation/SideNav.tsx":
- /*!*****************************************!*\
- !*** ./src/cmps/navigation/SideNav.tsx ***!
- \*****************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.SideNavEl = exports.SideNavUser = exports.SideNav = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var SideNav = /** @class */ (function (_super) {
- __extends(SideNav, _super);
- function SideNav() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.state = {
- open: false,
- };
- return _this;
- }
- SideNav.prototype.open = function () {
- this.setState({ open: true });
- };
- SideNav.prototype.toggle = function () {
- this.setState({ open: !this.state.open });
- };
- SideNav.prototype.hide = function () {
- this.setState({ open: false });
- };
- SideNav.prototype.render = function () {
- return React.createElement("ul", __assign({}, this.props, { className: "sidenav " + (this.props.className || ""), style: { transform: this.state.open ? "translateX(0)" : "translateX(-105%)" } }));
- };
- return SideNav;
- }(React.Component));
- exports.SideNav = SideNav;
- var SideNavUser = /** @class */ (function (_super) {
- __extends(SideNavUser, _super);
- function SideNavUser() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- SideNavUser.prototype.render = function () {
- return React.createElement("li", __assign({}, this.props),
- React.createElement("div", { className: "user-view" },
- React.createElement("div", { className: "background" },
- React.createElement("img", { src: this.props.bg_src })),
- React.createElement("a", null,
- React.createElement("img", { className: "circle", src: this.props.src })),
- React.createElement("a", null,
- React.createElement("span", { className: "black-text name" }, this.props.username)),
- React.createElement("a", null,
- React.createElement("span", { className: "black-text email" }, this.props.email))));
- };
- return SideNavUser;
- }(React.Component));
- exports.SideNavUser = SideNavUser;
- var SideNavEl = /** @class */ (function (_super) {
- __extends(SideNavEl, _super);
- function SideNavEl() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- SideNavEl.prototype.render = function () {
- return React.createElement("li", __assign({}, this.props));
- };
- return SideNavEl;
- }(React.Component));
- exports.SideNavEl = SideNavEl;
- /***/ }),
- /***/ "./src/cmps/progress/Progress.tsx":
- /*!****************************************!*\
- !*** ./src/cmps/progress/Progress.tsx ***!
- \****************************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Preloader = exports.Progress = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Progress = /** @class */ (function (_super) {
- __extends(Progress, _super);
- function Progress() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Progress.prototype.render = function () {
- return React.createElement("div", __assign({}, this.props, { className: (this.props.className || "") + " progress" }),
- React.createElement("div", { className: this.props.value ? "determinate" : "indeterminate", style: { width: this.props.value + "%" } }));
- };
- return Progress;
- }(React.Component));
- exports.Progress = Progress;
- var Preloader = /** @class */ (function (_super) {
- __extends(Preloader, _super);
- function Preloader() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- Preloader.prototype.render = function () {
- var s = this.props.size == "big" ? "big" : this.props.size == "small" ? "small" : "";
- var ca = this.props.color ? this.props.color.split(",") : ['blue'];
- if (ca.length === 1) {
- return React.createElement("div", { className: "preloader-wrapper " + s + " active" },
- React.createElement("div", { className: "spinner-layer spinner-" + ca[0] + "-only" },
- React.createElement("div", { className: "circle-clipper right" },
- React.createElement("div", { className: "circle" })),
- React.createElement("div", { className: "gap-patch" },
- React.createElement("div", { className: "circle" })),
- React.createElement("div", { className: "circle-clipper left" },
- React.createElement("div", { className: "circle" }))));
- }
- else {
- return React.createElement("div", { className: "preloader-wrapper " + s + " active" }, ca.map(function (scolor) {
- return React.createElement("div", { className: "spinner-layer spinner-" + scolor },
- React.createElement("div", { className: "circle-clipper left" },
- React.createElement("div", { className: "circle" })),
- React.createElement("div", { className: "gap-patch" },
- React.createElement("div", { className: "circle" })),
- React.createElement("div", { className: "circle-clipper right" },
- React.createElement("div", { className: "circle" })));
- }));
- }
- };
- return Preloader;
- }(React.Component));
- exports.Preloader = Preloader;
- /***/ }),
- /***/ "./src/index.ts":
- /*!**********************!*\
- !*** ./src/index.ts ***!
- \**********************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
- }) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
- }));
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
- };
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.createTheme = exports.defaultThemes = exports.Login = exports.ModalHeader = exports.ModalFooter = exports.ModalContent = exports.Modal = exports.Preloader = exports.Progress = exports.SideNavUser = exports.SideNavEl = exports.SideNav = exports.Navigation = exports.NavBarBrand = exports.NavBarItem = exports.NavBarGroup = exports.NavBar = exports.CardAction = exports.CardTitle = exports.CardContent = exports.Card = exports.CollapsBody = exports.Collapsible = exports.CollapsTrigger = exports.Parallax = exports.Divider = exports.Overlay = exports.Col = exports.Row = exports.Icon = exports.Chip = exports.Badge = exports.Button = exports.CollectionItem = exports.Collection = exports.Field = exports.Textarea = void 0;
- __webpack_require__(/*! ./sass/d3v4pp.scss */ "./src/sass/d3v4pp.scss");
- var Textarea_1 = __webpack_require__(/*! ./cmps/forms/Textarea */ "./src/cmps/forms/Textarea.tsx");
- Object.defineProperty(exports, "Textarea", ({ enumerable: true, get: function () { return Textarea_1.Textarea; } }));
- var Field_1 = __webpack_require__(/*! ./cmps/forms/Field */ "./src/cmps/forms/Field.tsx");
- Object.defineProperty(exports, "Field", ({ enumerable: true, get: function () { return Field_1.Field; } }));
- var Collection_1 = __webpack_require__(/*! ./cmps/collections/Collection */ "./src/cmps/collections/Collection.tsx");
- Object.defineProperty(exports, "Collection", ({ enumerable: true, get: function () { return Collection_1.Collection; } }));
- Object.defineProperty(exports, "CollectionItem", ({ enumerable: true, get: function () { return Collection_1.CollectionItem; } }));
- var Button_1 = __webpack_require__(/*! ./cmps/button/Button */ "./src/cmps/button/Button.tsx");
- Object.defineProperty(exports, "Button", ({ enumerable: true, get: function () { return Button_1.Button; } }));
- var Badge_1 = __webpack_require__(/*! ./cmps/badge/Badge */ "./src/cmps/badge/Badge.tsx");
- Object.defineProperty(exports, "Badge", ({ enumerable: true, get: function () { return Badge_1.Badge; } }));
- var Chip_1 = __webpack_require__(/*! ./cmps/chip/Chip */ "./src/cmps/chip/Chip.tsx");
- Object.defineProperty(exports, "Chip", ({ enumerable: true, get: function () { return Chip_1.Chip; } }));
- var Icon_1 = __webpack_require__(/*! ./cmps/icons/Icon */ "./src/cmps/icons/Icon.tsx");
- Object.defineProperty(exports, "Icon", ({ enumerable: true, get: function () { return Icon_1.Icon; } }));
- var Layouts_1 = __webpack_require__(/*! ./cmps/layouts/Layouts */ "./src/cmps/layouts/Layouts.tsx");
- Object.defineProperty(exports, "Row", ({ enumerable: true, get: function () { return Layouts_1.Row; } }));
- Object.defineProperty(exports, "Col", ({ enumerable: true, get: function () { return Layouts_1.Col; } }));
- Object.defineProperty(exports, "Overlay", ({ enumerable: true, get: function () { return Layouts_1.Overlay; } }));
- Object.defineProperty(exports, "Divider", ({ enumerable: true, get: function () { return Layouts_1.Divider; } }));
- Object.defineProperty(exports, "Parallax", ({ enumerable: true, get: function () { return Layouts_1.Parallax; } }));
- var Collapsible_1 = __webpack_require__(/*! ./cmps/collapsible/Collapsible */ "./src/cmps/collapsible/Collapsible.tsx");
- Object.defineProperty(exports, "CollapsTrigger", ({ enumerable: true, get: function () { return Collapsible_1.CollapsTrigger; } }));
- Object.defineProperty(exports, "Collapsible", ({ enumerable: true, get: function () { return Collapsible_1.Collapsible; } }));
- Object.defineProperty(exports, "CollapsBody", ({ enumerable: true, get: function () { return Collapsible_1.CollapsBody; } }));
- var Card_1 = __webpack_require__(/*! ./cmps/card/Card */ "./src/cmps/card/Card.tsx");
- Object.defineProperty(exports, "Card", ({ enumerable: true, get: function () { return Card_1.Card; } }));
- Object.defineProperty(exports, "CardContent", ({ enumerable: true, get: function () { return Card_1.CardContent; } }));
- Object.defineProperty(exports, "CardTitle", ({ enumerable: true, get: function () { return Card_1.CardTitle; } }));
- Object.defineProperty(exports, "CardAction", ({ enumerable: true, get: function () { return Card_1.CardAction; } }));
- var NavBar_1 = __webpack_require__(/*! ./cmps/navigation/NavBar */ "./src/cmps/navigation/NavBar.tsx");
- Object.defineProperty(exports, "NavBar", ({ enumerable: true, get: function () { return NavBar_1.NavBar; } }));
- Object.defineProperty(exports, "NavBarGroup", ({ enumerable: true, get: function () { return NavBar_1.NavBarGroup; } }));
- Object.defineProperty(exports, "NavBarItem", ({ enumerable: true, get: function () { return NavBar_1.NavBarItem; } }));
- Object.defineProperty(exports, "NavBarBrand", ({ enumerable: true, get: function () { return NavBar_1.NavBarBrand; } }));
- var Navigation_1 = __webpack_require__(/*! ./cmps/navigation/Navigation */ "./src/cmps/navigation/Navigation.tsx");
- Object.defineProperty(exports, "Navigation", ({ enumerable: true, get: function () { return Navigation_1.Navigation; } }));
- var SideNav_1 = __webpack_require__(/*! ./cmps/navigation/SideNav */ "./src/cmps/navigation/SideNav.tsx");
- Object.defineProperty(exports, "SideNav", ({ enumerable: true, get: function () { return SideNav_1.SideNav; } }));
- Object.defineProperty(exports, "SideNavEl", ({ enumerable: true, get: function () { return SideNav_1.SideNavEl; } }));
- Object.defineProperty(exports, "SideNavUser", ({ enumerable: true, get: function () { return SideNav_1.SideNavUser; } }));
- var Progress_1 = __webpack_require__(/*! ./cmps/progress/Progress */ "./src/cmps/progress/Progress.tsx");
- Object.defineProperty(exports, "Progress", ({ enumerable: true, get: function () { return Progress_1.Progress; } }));
- Object.defineProperty(exports, "Preloader", ({ enumerable: true, get: function () { return Progress_1.Preloader; } }));
- var Modal_1 = __webpack_require__(/*! ./cmps/modal/Modal */ "./src/cmps/modal/Modal.tsx");
- Object.defineProperty(exports, "Modal", ({ enumerable: true, get: function () { return Modal_1.Modal; } }));
- Object.defineProperty(exports, "ModalContent", ({ enumerable: true, get: function () { return Modal_1.ModalContent; } }));
- Object.defineProperty(exports, "ModalFooter", ({ enumerable: true, get: function () { return Modal_1.ModalFooter; } }));
- Object.defineProperty(exports, "ModalHeader", ({ enumerable: true, get: function () { return Modal_1.ModalHeader; } }));
- ////////ux
- var ux_1 = __webpack_require__(/*! ./ux */ "./src/ux/index.ts");
- Object.defineProperty(exports, "Login", ({ enumerable: true, get: function () { return ux_1.Login; } }));
- // ///DataTable
- var DataTable_1 = __webpack_require__(/*! ./DataTable/DataTable */ "./src/DataTable/DataTable.tsx");
- var themes_1 = __webpack_require__(/*! ./DataTable/themes */ "./src/DataTable/themes.ts");
- Object.defineProperty(exports, "defaultThemes", ({ enumerable: true, get: function () { return themes_1.defaultThemes; } }));
- Object.defineProperty(exports, "createTheme", ({ enumerable: true, get: function () { return themes_1.createTheme; } }));
- __exportStar(__webpack_require__(/*! ./DataTable/constants */ "./src/DataTable/constants.ts"), exports);
- exports["default"] = DataTable_1.default;
- /***/ }),
- /***/ "./src/ux/auth/Login.tsx":
- /*!*******************************!*\
- !*** ./src/ux/auth/Login.tsx ***!
- \*******************************/
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Login = void 0;
- var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
- var Field_1 = __webpack_require__(/*! ../../cmps/forms/Field */ "./src/cmps/forms/Field.tsx");
- //
- // export function Login ({onLogin, onLoginError, className, checkUrl}: LoginProps) {
- // let emailF: { isValid: () => any; }, passF: { isValid: () => any; };
- // let [emailOk, setEmailOk] = useState(false)
- // let [user, setUser] = useState({
- // password: "",
- // email: ""
- // });
- // let next = () => {
- // if (emailF && emailF.isValid()) {
- // if (checkUrl) {
- // fetch(checkUrl, {
- // method: "POST",
- // headers: {
- // 'Accept': 'application/json',
- // 'Content-Type': 'application/json'
- // },
- // body: JSON.stringify(user)
- // }).then(r => r.json()).then(json => {
- // if (json.success) {
- // setEmailOk(true);
- // } else {
- // onLoginError && onLoginError(json);
- // }
- // }).catch(error => {
- // onLoginError && onLoginError(error);
- // })
- // } else {
- // setEmailOk(true);
- // }
- // }
- // }
- // let login = () => {
- // if (emailF && emailF.isValid() && passF && passF.isValid()) {
- // onLogin && onLogin(user)
- //
- // }
- // }
- // let getPasswordView = () => {
- // if (emailOk) {
- // return <><Field
- // ref={(r: FieldRef | null | any) => {
- // passF = r;
- // }}
- // value={user.password}
- // onChange={(e) => {
- // let u = {...user};
- // // @ts-ignore
- // u.password = e.target.value;
- // setUser(u);
- // }}
- // autoFocus={true}
- // required={true}
- // label={"Password"}
- // type={"password"}
- // vtype={"password"}
- // vtypeMsg={'Need to be a valid Password'}
- // onEnterKey={login}/>
- // </>;
- // } else {
- // return null;
- // }
- // }
- //
- // let getLoginView = () => {
- // if (!emailOk) {
- // return <><Field
- // autoFocus={true}
- // required={true}
- // ref={(r: FieldRef | null | any) => {
- // emailF = r;
- // }}
- // value={user.email}
- // onChange={(e) => {
- // let u = {...user};
- // // @ts-ignore
- // u.email = e.target.value;
- // setUser(u);
- // }}
- // label={"Email"}
- // type={"email"}
- // vtype={"email"}
- // vtypeMsg={'Need to be a valid email'}
- // onEnterKey={next}/>
- // </>;
- // } else {
- // return null;
- // }
- //
- // }
- // return <div
- // ref={el => {
- // el = el;
- // }}
- // className={(className || "") + " login"}
- // >
- // {getLoginView()}
- // {getPasswordView()}
- // </div>
- // }
- var Login = /** @class */ (function (_super) {
- __extends(Login, _super);
- function Login(props) {
- var _this = _super.call(this, props) || this;
- _this.state = {
- emailOk: false,
- email: "",
- password: "",
- passOK: false
- };
- return _this;
- }
- Login.prototype.next = function () {
- var _this = this;
- if (this.emailF && this.emailF.isValid()) {
- if (this.props.checkUrl) {
- fetch(this.props.checkUrl, {
- method: "POST",
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({ email: this.state.email, })
- }).then(function (r) { return r.json(); }).then(function (json) {
- if (json.success) {
- _this.setState({ emailOk: true });
- }
- else {
- _this.props.onLoginError && _this.props.onLoginError(json);
- }
- }).catch(function (error) {
- _this.props.onLoginError && _this.props.onLoginError(error);
- });
- }
- else {
- this.setState({ emailOk: true });
- }
- }
- };
- Login.prototype.login = function () {
- if (this.state.emailOk && this.passwordF && this.passwordF.isValid()) {
- this.props.onLogin && this.props.onLogin({
- email: this.state.email,
- password: this.state.password
- });
- }
- };
- Login.prototype.getLoginView = function () {
- var _this = this;
- if (!this.state.emailOk) {
- return React.createElement(React.Fragment, null,
- React.createElement(Field_1.Field, { autoFocus: true, required: true, ref: function (r) {
- _this.emailF = r;
- }, value: this.state.email, onChange: function (e) {
- // @ts-ignore
- _this.setState({ email: e.target.value });
- }, label: "Email", type: "email", vtype: "email", vtypeMsg: 'Need to be a valid email', onEnterKey: this.next.bind(this) }));
- }
- else {
- return null;
- }
- };
- Login.prototype.getPasswordView = function () {
- var _this = this;
- if (this.state.emailOk) {
- return React.createElement(React.Fragment, null,
- React.createElement(Field_1.Field, { ref: function (r) {
- _this.passwordF = r;
- }, value: this.state.password, onChange: function (e) {
- // @ts-ignore
- _this.setState({ password: e.target.value });
- }, autoFocus: true, required: true, label: "Password", type: "password", vtype: "password", vtypeMsg: 'Need to be a valid Password', onEnterKey: this.login.bind(this) }));
- }
- else {
- return null;
- }
- };
- Login.prototype.render = function () {
- var _this = this;
- return (React.createElement("div", { ref: function (el) {
- _this.el = el;
- }, className: (this.props.className || "") + " login" },
- this.getLoginView(),
- this.getPasswordView()));
- };
- return Login;
- }(React.Component));
- exports.Login = Login;
- /***/ }),
- /***/ "./src/ux/index.ts":
- /*!*************************!*\
- !*** ./src/ux/index.ts ***!
- \*************************/
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
- "use strict";
- Object.defineProperty(exports, "__esModule", ({ value: true }));
- exports.Login = void 0;
- var Login_1 = __webpack_require__(/*! ./auth/Login */ "./src/ux/auth/Login.tsx");
- Object.defineProperty(exports, "Login", ({ enumerable: true, get: function () { return Login_1.Login; } }));
- /***/ }),
- /***/ "./node_modules/styled-components/node_modules/stylis/src/Enum.js":
- /*!************************************************************************!*\
- !*** ./node_modules/styled-components/node_modules/stylis/src/Enum.js ***!
- \************************************************************************/
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ CHARSET: () => (/* binding */ CHARSET),
- /* harmony export */ COMMENT: () => (/* binding */ COMMENT),
- /* harmony export */ COUNTER_STYLE: () => (/* binding */ COUNTER_STYLE),
- /* harmony export */ DECLARATION: () => (/* binding */ DECLARATION),
- /* harmony export */ DOCUMENT: () => (/* binding */ DOCUMENT),
- /* harmony export */ FONT_FACE: () => (/* binding */ FONT_FACE),
- /* harmony export */ FONT_FEATURE_VALUES: () => (/* binding */ FONT_FEATURE_VALUES),
- /* harmony export */ IMPORT: () => (/* binding */ IMPORT),
- /* harmony export */ KEYFRAMES: () => (/* binding */ KEYFRAMES),
- /* harmony export */ LAYER: () => (/* binding */ LAYER),
- /* harmony export */ MEDIA: () => (/* binding */ MEDIA),
- /* harmony export */ MOZ: () => (/* binding */ MOZ),
- /* harmony export */ MS: () => (/* binding */ MS),
- /* harmony export */ NAMESPACE: () => (/* binding */ NAMESPACE),
- /* harmony export */ PAGE: () => (/* binding */ PAGE),
- /* harmony export */ RULESET: () => (/* binding */ RULESET),
- /* harmony export */ SUPPORTS: () => (/* binding */ SUPPORTS),
- /* harmony export */ VIEWPORT: () => (/* binding */ VIEWPORT),
- /* harmony export */ WEBKIT: () => (/* binding */ WEBKIT)
- /* harmony export */ });
- var MS = '-ms-'
- var MOZ = '-moz-'
- var WEBKIT = '-webkit-'
- var COMMENT = 'comm'
- var RULESET = 'rule'
- var DECLARATION = 'decl'
- var PAGE = '@page'
- var MEDIA = '@media'
- var IMPORT = '@import'
- var CHARSET = '@charset'
- var VIEWPORT = '@viewport'
- var SUPPORTS = '@supports'
- var DOCUMENT = '@document'
- var NAMESPACE = '@namespace'
- var KEYFRAMES = '@keyframes'
- var FONT_FACE = '@font-face'
- var COUNTER_STYLE = '@counter-style'
- var FONT_FEATURE_VALUES = '@font-feature-values'
- var LAYER = '@layer'
- /***/ }),
- /***/ "./node_modules/styled-components/node_modules/stylis/src/Middleware.js":
- /*!******************************************************************************!*\
- !*** ./node_modules/styled-components/node_modules/stylis/src/Middleware.js ***!
- \******************************************************************************/
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ middleware: () => (/* binding */ middleware),
- /* harmony export */ namespace: () => (/* binding */ namespace),
- /* harmony export */ prefixer: () => (/* binding */ prefixer),
- /* harmony export */ rulesheet: () => (/* binding */ rulesheet)
- /* harmony export */ });
- /* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enum.js */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js");
- /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js");
- /* harmony import */ var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Tokenizer.js */ "./node_modules/styled-components/node_modules/stylis/src/Tokenizer.js");
- /* harmony import */ var _Serializer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Serializer.js */ "./node_modules/styled-components/node_modules/stylis/src/Serializer.js");
- /* harmony import */ var _Prefixer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Prefixer.js */ "./node_modules/styled-components/node_modules/stylis/src/Prefixer.js");
- /**
- * @param {function[]} collection
- * @return {function}
- */
- function middleware (collection) {
- var length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(collection)
- return function (element, index, children, callback) {
- var output = ''
- for (var i = 0; i < length; i++)
- output += collection[i](element, index, children, callback) || ''
- return output
- }
- }
- /**
- * @param {function} callback
- * @return {function}
- */
- function rulesheet (callback) {
- return function (element) {
- if (!element.root)
- if (element = element.return)
- callback(element)
- }
- }
- /**
- * @param {object} element
- * @param {number} index
- * @param {object[]} children
- * @param {function} callback
- */
- function prefixer (element, index, children, callback) {
- if (element.length > -1)
- if (!element.return)
- switch (element.type) {
- case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.DECLARATION: element.return = (0,_Prefixer_js__WEBPACK_IMPORTED_MODULE_2__.prefix)(element.value, element.length, children)
- return
- case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.KEYFRAMES:
- return (0,_Serializer_js__WEBPACK_IMPORTED_MODULE_3__.serialize)([(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {value: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(element.value, '@', '@' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT)})], callback)
- case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.RULESET:
- if (element.length)
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.combine)(children = element.props, function (value) {
- switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, callback = /(::plac\w+|:read-\w+)/)) {
- // :read-(only|write)
- case ':read-only': case ':read-write':
- (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(read-\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + '$1')]}))
- ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [value]}))
- ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(element, {props: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.filter)(children, callback)})
- break
- // :placeholder
- case '::placeholder':
- ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'input-$1')]}))
- ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + '$1')]}))
- ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\w+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'input-$1')]}))
- ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [value]}))
- ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(element, {props: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.filter)(children, callback)})
- break
- }
- return ''
- })
- }
- }
- /**
- * @param {object} element
- * @param {number} index
- * @param {object[]} children
- */
- function namespace (element) {
- switch (element.type) {
- case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.RULESET:
- element.props = element.props.map(function (value) {
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.combine)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.tokenize)(value), function (value, index, children) {
- switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 0)) {
- // \f
- case 12:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(value, 1, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(value))
- // \0 ( + > ~
- case 0: case 40: case 43: case 62: case 126:
- return value
- // :
- case 58:
- if (children[++index] === 'global')
- children[index] = '', children[++index] = '\f' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(children[index], index = 1, -1)
- // \s
- case 32:
- return index === 1 ? '' : value
- default:
- switch (index) {
- case 0: element = value
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(children) > 1 ? '' : value
- case index = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(children) - 1: case 2:
- return index === 2 ? value + element + element : value + element
- default:
- return value
- }
- }
- })
- })
- }
- }
- /***/ }),
- /***/ "./node_modules/styled-components/node_modules/stylis/src/Parser.js":
- /*!**************************************************************************!*\
- !*** ./node_modules/styled-components/node_modules/stylis/src/Parser.js ***!
- \**************************************************************************/
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ comment: () => (/* binding */ comment),
- /* harmony export */ compile: () => (/* binding */ compile),
- /* harmony export */ declaration: () => (/* binding */ declaration),
- /* harmony export */ parse: () => (/* binding */ parse),
- /* harmony export */ ruleset: () => (/* binding */ ruleset)
- /* harmony export */ });
- /* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Enum.js */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js");
- /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js");
- /* harmony import */ var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Tokenizer.js */ "./node_modules/styled-components/node_modules/stylis/src/Tokenizer.js");
- /**
- * @param {string} value
- * @return {object[]}
- */
- function compile (value) {
- return (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.dealloc)(parse('', null, null, null, [''], value = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.alloc)(value), 0, [0], value))
- }
- /**
- * @param {string} value
- * @param {object} root
- * @param {object?} parent
- * @param {string[]} rule
- * @param {string[]} rules
- * @param {string[]} rulesets
- * @param {number[]} pseudo
- * @param {number[]} points
- * @param {string[]} declarations
- * @return {object}
- */
- function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {
- var index = 0
- var offset = 0
- var length = pseudo
- var atrule = 0
- var property = 0
- var previous = 0
- var variable = 1
- var scanning = 1
- var ampersand = 1
- var character = 0
- var type = ''
- var props = rules
- var children = rulesets
- var reference = rule
- var characters = type
- while (scanning)
- switch (previous = character, character = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)()) {
- // (
- case 40:
- if (previous != 108 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, length - 1) == 58) {
- if ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.indexof)(characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character), '&', '&\f'), '&\f') != -1)
- ampersand = -1
- break
- }
- // " ' [
- case 34: case 39: case 91:
- characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character)
- break
- // \t \n \r \s
- case 9: case 10: case 13: case 32:
- characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.whitespace)(previous)
- break
- // \
- case 92:
- characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.escaping)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)() - 1, 7)
- continue
- // /
- case 47:
- switch ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)()) {
- case 42: case 47:
- ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(comment((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.commenter)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)(), (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)()), root, parent, declarations), declarations)
- break
- default:
- characters += '/'
- }
- break
- // {
- case 123 * variable:
- points[index++] = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) * ampersand
- // } ; \0
- case 125 * variable: case 59: case 0:
- switch (character) {
- // \0 }
- case 0: case 125: scanning = 0
- // ;
- case 59 + offset: if (ampersand == -1) characters = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, /\f/g, '')
- if (property > 0 && ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - length))
- (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)
- break
- // @ ;
- case 59: characters += ';'
- // { rule/at-rule
- default:
- ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)
- if (character === 123)
- if (offset === 0)
- parse(characters, root, reference, reference, props, rulesets, length, points, children)
- else
- switch (atrule === 99 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, 3) === 110 ? 100 : atrule) {
- // d l m s
- case 100: case 108: case 109: case 115:
- parse(value, reference, reference, rule && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)
- break
- default:
- parse(characters, reference, reference, reference, [''], children, 0, points, children)
- }
- }
- index = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo
- break
- // :
- case 58:
- length = 1 + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters), property = previous
- default:
- if (variable < 1)
- if (character == 123)
- --variable
- else if (character == 125 && variable++ == 0 && (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.prev)() == 125)
- continue
- switch (characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)(character), character * variable) {
- // &
- case 38:
- ampersand = offset > 0 ? 1 : (characters += '\f', -1)
- break
- // ,
- case 44:
- points[index++] = ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - 1) * ampersand, ampersand = 1
- break
- // @
- case 64:
- // -
- if ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)() === 45)
- characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)())
- atrule = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)(), offset = length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(type = characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.identifier)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)())), character++
- break
- // -
- case 45:
- if (previous === 45 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) == 2)
- variable = 0
- }
- }
- return rulesets
- }
- /**
- * @param {string} value
- * @param {object} root
- * @param {object?} parent
- * @param {number} index
- * @param {number} offset
- * @param {string[]} rules
- * @param {number[]} points
- * @param {string} type
- * @param {string[]} props
- * @param {string[]} children
- * @param {number} length
- * @param {object[]} siblings
- * @return {object}
- */
- function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {
- var post = offset - 1
- var rule = offset === 0 ? rules : ['']
- var size = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.sizeof)(rule)
- for (var i = 0, j = 0, k = 0; i < index; ++i)
- for (var x = 0, y = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, post + 1, post = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.abs)(j = points[i])), z = value; x < size; ++x)
- if (z = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.trim)(j > 0 ? rule[x] + ' ' + y : (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(y, /&\f/g, rule[x])))
- props[k++] = z
- return (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, offset === 0 ? _Enum_js__WEBPACK_IMPORTED_MODULE_2__.RULESET : type, props, children, length, siblings)
- }
- /**
- * @param {number} value
- * @param {object} root
- * @param {object?} parent
- * @param {object[]} siblings
- * @return {object}
- */
- function comment (value, root, parent, siblings) {
- return (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.COMMENT, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.char)()), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 2, -2), 0, siblings)
- }
- /**
- * @param {string} value
- * @param {object} root
- * @param {object?} parent
- * @param {number} length
- * @param {object[]} siblings
- * @return {object}
- */
- function declaration (value, root, parent, length, siblings) {
- return (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.DECLARATION, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 0, length), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, length + 1, -1), length, siblings)
- }
- /***/ }),
- /***/ "./node_modules/styled-components/node_modules/stylis/src/Prefixer.js":
- /*!****************************************************************************!*\
- !*** ./node_modules/styled-components/node_modules/stylis/src/Prefixer.js ***!
- \****************************************************************************/
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ prefix: () => (/* binding */ prefix)
- /* harmony export */ });
- /* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enum.js */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js");
- /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js");
- /**
- * @param {string} value
- * @param {number} length
- * @param {object[]} children
- * @return {string}
- */
- function prefix (value, length, children) {
- switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.hash)(value, length)) {
- // color-adjust
- case 5103:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'print-' + value + value
- // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)
- case 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:
- // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break
- case 5572: case 6356: case 5844: case 3191: case 6645: case 3005:
- // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,
- case 6391: case 5879: case 5623: case 6135: case 4599: case 4855:
- // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)
- case 4215: case 6389: case 5109: case 5365: case 5621: case 3829:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + value
- // tab-size
- case 4789:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + value + value
- // appearance, user-select, transform, hyphens, text-size-adjust
- case 5349: case 4246: case 4810: case 6968: case 2756:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + value + value
- // writing-mode
- case 5936:
- switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 11)) {
- // vertical-l(r)
- case 114:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\w+-[tblr]{2}/, 'tb') + value
- // vertical-r(l)
- case 108:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\w+-[tblr]{2}/, 'tb-rl') + value
- // horizontal(-)tb
- case 45:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\w+-[tblr]{2}/, 'lr') + value
- // default: fallthrough to below
- }
- // flex, flex-direction, scroll-snap-type, writing-mode
- case 6828: case 4268: case 2903:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + value + value
- // order
- case 6165:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-' + value + value
- // align-items
- case 5187:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(\w+).+(:[^]+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-$1$2' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-$1$2') + value
- // align-self
- case 5443:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-item-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /flex-|-self/g, '') + (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /flex-|baseline/) ? _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-row-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /flex-|-self/g, '') : '') + value
- // align-content
- case 4675:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-line-pack' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /align-content|flex-|-self/g, '') + value
- // flex-shrink
- case 5548:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'shrink', 'negative') + value
- // flex-basis
- case 5292:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'basis', 'preferred-size') + value
- // flex-grow
- case 6060:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-grow', '') + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'grow', 'positive') + value
- // transition
- case 4554:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /([^-])(transform)/g, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2') + value
- // cursor
- case 6187:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(zoom-|grab)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1'), /(image-set)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1'), value, '') + value
- // background, background-image
- case 5495: case 3959:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(image-set\([^]*)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1' + '$`$1')
- // justify-content
- case 4968:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)(flex-)?(.*)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-pack:$3' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + value
- // justify-self
- case 4200:
- if (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /flex-|baseline/)) return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-column-align' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(value, length) + value
- break
- // grid-template-(columns|rows)
- case 2592: case 3360:
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'template-', '') + value
- // grid-(row|column)-start
- case 4384: case 3616:
- if (children && children.some(function (element, index) { return length = index, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(element.props, /grid-\w+-end/) })) {
- return ~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(value + (children = children[length].value), 'span') ? value : (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-start', '') + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-row-span:' + (~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(children, 'span') ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(children, /\d+/) : +(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(children, /\d+/) - +(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /\d+/)) + ';')
- }
- return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-start', '') + value
- // grid-(row|column)-end
- case 4896: case 4128:
- return (children && children.some(function (element) { return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(element.props, /grid-\w+-start/) })) ? value : _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-end', '-span'), 'span ', '') + value
- // (margin|padding)-inline-(start|end)
- case 4095: case 3583: case 4068: case 2532:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+)-inline(.+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1$2') + value
- // (min|max)?(width|height|inline-size|block-size)
- case 8116: case 7059: case 5753: case 5535:
- case 5445: case 5701: case 4933: case 4677:
- case 5533: case 5789: case 5021: case 4765:
- // stretch, max-content, min-content, fill-available
- if ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(value) - 1 - length > 6)
- switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 1)) {
- // (m)ax-content, (m)in-content
- case 109:
- // -
- if ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 4) !== 45)
- break
- // (f)ill-available, (f)it-content
- case 102:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)(.+)-([^]+)/, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2-$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 3) == 108 ? '$3' : '$2-$3')) + value
- // (s)tretch
- case 115:
- return ~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(value, 'stretch') ? prefix((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'stretch', 'fill-available'), length, children) + value : value
- }
- break
- // grid-(column|row)
- case 5152: case 5920:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + a + ':' + b + f) + (c ? (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })
- // position: sticky
- case 4949:
- // stick(y)?
- if ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 6) === 121)
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, ':', ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT) + value
- break
- // display: (flex|inline-flex|grid|inline-grid)
- case 6444:
- switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 14) === 45 ? 18 : 11)) {
- // (inline-)?fle(x)
- case 120:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)([^;\s!]+)(;|(\s+)?!.+)?/, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + '$2box$3') + value
- // (inline-)?gri(d)
- case 100:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, ':', ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS) + value
- }
- break
- // scroll-margin, scroll-margin-(top|right|bottom|left)
- case 5719: case 2647: case 2135: case 3927: case 2391:
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'scroll-', 'scroll-snap-') + value
- }
- return value
- }
- /***/ }),
- /***/ "./node_modules/styled-components/node_modules/stylis/src/Serializer.js":
- /*!******************************************************************************!*\
- !*** ./node_modules/styled-components/node_modules/stylis/src/Serializer.js ***!
- \******************************************************************************/
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ serialize: () => (/* binding */ serialize),
- /* harmony export */ stringify: () => (/* binding */ stringify)
- /* harmony export */ });
- /* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Enum.js */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js");
- /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js");
- /**
- * @param {object[]} children
- * @param {function} callback
- * @return {string}
- */
- function serialize (children, callback) {
- var output = ''
- for (var i = 0; i < children.length; i++)
- output += callback(children[i], i, children, callback) || ''
- return output
- }
- /**
- * @param {object} element
- * @param {number} index
- * @param {object[]} children
- * @param {function} callback
- * @return {string}
- */
- function stringify (element, index, children, callback) {
- switch (element.type) {
- case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.LAYER: if (element.children.length) break
- case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.IMPORT: case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.DECLARATION: return element.return = element.return || element.value
- case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.COMMENT: return ''
- case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'
- case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.RULESET: if (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(element.value = element.props.join(','))) return ''
- }
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''
- }
- /***/ }),
- /***/ "./node_modules/styled-components/node_modules/stylis/src/Tokenizer.js":
- /*!*****************************************************************************!*\
- !*** ./node_modules/styled-components/node_modules/stylis/src/Tokenizer.js ***!
- \*****************************************************************************/
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ alloc: () => (/* binding */ alloc),
- /* harmony export */ caret: () => (/* binding */ caret),
- /* harmony export */ char: () => (/* binding */ char),
- /* harmony export */ character: () => (/* binding */ character),
- /* harmony export */ characters: () => (/* binding */ characters),
- /* harmony export */ column: () => (/* binding */ column),
- /* harmony export */ commenter: () => (/* binding */ commenter),
- /* harmony export */ copy: () => (/* binding */ copy),
- /* harmony export */ dealloc: () => (/* binding */ dealloc),
- /* harmony export */ delimit: () => (/* binding */ delimit),
- /* harmony export */ delimiter: () => (/* binding */ delimiter),
- /* harmony export */ escaping: () => (/* binding */ escaping),
- /* harmony export */ identifier: () => (/* binding */ identifier),
- /* harmony export */ length: () => (/* binding */ length),
- /* harmony export */ lift: () => (/* binding */ lift),
- /* harmony export */ line: () => (/* binding */ line),
- /* harmony export */ next: () => (/* binding */ next),
- /* harmony export */ node: () => (/* binding */ node),
- /* harmony export */ peek: () => (/* binding */ peek),
- /* harmony export */ position: () => (/* binding */ position),
- /* harmony export */ prev: () => (/* binding */ prev),
- /* harmony export */ slice: () => (/* binding */ slice),
- /* harmony export */ token: () => (/* binding */ token),
- /* harmony export */ tokenize: () => (/* binding */ tokenize),
- /* harmony export */ tokenizer: () => (/* binding */ tokenizer),
- /* harmony export */ whitespace: () => (/* binding */ whitespace)
- /* harmony export */ });
- /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js");
- var line = 1
- var column = 1
- var length = 0
- var position = 0
- var character = 0
- var characters = ''
- /**
- * @param {string} value
- * @param {object | null} root
- * @param {object | null} parent
- * @param {string} type
- * @param {string[] | string} props
- * @param {object[] | string} children
- * @param {object[]} siblings
- * @param {number} length
- */
- function node (value, root, parent, type, props, children, length, siblings) {
- return {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}
- }
- /**
- * @param {object} root
- * @param {object} props
- * @return {object}
- */
- function copy (root, props) {
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)
- }
- /**
- * @param {object} root
- */
- function lift (root) {
- while (root.root)
- root = copy(root.root, {children: [root]})
- ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(root, root.siblings)
- }
- /**
- * @return {number}
- */
- function char () {
- return character
- }
- /**
- * @return {number}
- */
- function prev () {
- character = position > 0 ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, --position) : 0
- if (column--, character === 10)
- column = 1, line--
- return character
- }
- /**
- * @return {number}
- */
- function next () {
- character = position < length ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position++) : 0
- if (column++, character === 10)
- column = 1, line++
- return character
- }
- /**
- * @return {number}
- */
- function peek () {
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position)
- }
- /**
- * @return {number}
- */
- function caret () {
- return position
- }
- /**
- * @param {number} begin
- * @param {number} end
- * @return {string}
- */
- function slice (begin, end) {
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(characters, begin, end)
- }
- /**
- * @param {number} type
- * @return {number}
- */
- function token (type) {
- switch (type) {
- // \0 \t \n \r \s whitespace token
- case 0: case 9: case 10: case 13: case 32:
- return 5
- // ! + , / > @ ~ isolate token
- case 33: case 43: case 44: case 47: case 62: case 64: case 126:
- // ; { } breakpoint token
- case 59: case 123: case 125:
- return 4
- // : accompanied token
- case 58:
- return 3
- // " ' ( [ opening delimit token
- case 34: case 39: case 40: case 91:
- return 2
- // ) ] closing delimit token
- case 41: case 93:
- return 1
- }
- return 0
- }
- /**
- * @param {string} value
- * @return {any[]}
- */
- function alloc (value) {
- return line = column = 1, length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(characters = value), position = 0, []
- }
- /**
- * @param {any} value
- * @return {any}
- */
- function dealloc (value) {
- return characters = '', value
- }
- /**
- * @param {number} type
- * @return {string}
- */
- function delimit (type) {
- return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.trim)(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))
- }
- /**
- * @param {string} value
- * @return {string[]}
- */
- function tokenize (value) {
- return dealloc(tokenizer(alloc(value)))
- }
- /**
- * @param {number} type
- * @return {string}
- */
- function whitespace (type) {
- while (character = peek())
- if (character < 33)
- next()
- else
- break
- return token(type) > 2 || token(character) > 3 ? '' : ' '
- }
- /**
- * @param {string[]} children
- * @return {string[]}
- */
- function tokenizer (children) {
- while (next())
- switch (token(character)) {
- case 0: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(identifier(position - 1), children)
- break
- case 2: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(delimit(character), children)
- break
- default: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(character), children)
- }
- return children
- }
- /**
- * @param {number} index
- * @param {number} count
- * @return {string}
- */
- function escaping (index, count) {
- while (--count && next())
- // not 0-9 A-F a-f
- if (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))
- break
- return slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))
- }
- /**
- * @param {number} type
- * @return {number}
- */
- function delimiter (type) {
- while (next())
- switch (character) {
- // ] ) " '
- case type:
- return position
- // " '
- case 34: case 39:
- if (type !== 34 && type !== 39)
- delimiter(character)
- break
- // (
- case 40:
- if (type === 41)
- delimiter(type)
- break
- // \
- case 92:
- next()
- break
- }
- return position
- }
- /**
- * @param {number} type
- * @param {number} index
- * @return {number}
- */
- function commenter (type, index) {
- while (next())
- // //
- if (type + character === 47 + 10)
- break
- // /*
- else if (type + character === 42 + 42 && peek() === 47)
- break
- return '/*' + slice(index, position - 1) + '*' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(type === 47 ? type : next())
- }
- /**
- * @param {number} index
- * @return {string}
- */
- function identifier (index) {
- while (!token(peek()))
- next()
- return slice(index, position)
- }
- /***/ }),
- /***/ "./node_modules/styled-components/node_modules/stylis/src/Utility.js":
- /*!***************************************************************************!*\
- !*** ./node_modules/styled-components/node_modules/stylis/src/Utility.js ***!
- \***************************************************************************/
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ abs: () => (/* binding */ abs),
- /* harmony export */ append: () => (/* binding */ append),
- /* harmony export */ assign: () => (/* binding */ assign),
- /* harmony export */ charat: () => (/* binding */ charat),
- /* harmony export */ combine: () => (/* binding */ combine),
- /* harmony export */ filter: () => (/* binding */ filter),
- /* harmony export */ from: () => (/* binding */ from),
- /* harmony export */ hash: () => (/* binding */ hash),
- /* harmony export */ indexof: () => (/* binding */ indexof),
- /* harmony export */ match: () => (/* binding */ match),
- /* harmony export */ replace: () => (/* binding */ replace),
- /* harmony export */ sizeof: () => (/* binding */ sizeof),
- /* harmony export */ strlen: () => (/* binding */ strlen),
- /* harmony export */ substr: () => (/* binding */ substr),
- /* harmony export */ trim: () => (/* binding */ trim)
- /* harmony export */ });
- /**
- * @param {number}
- * @return {number}
- */
- var abs = Math.abs
- /**
- * @param {number}
- * @return {string}
- */
- var from = String.fromCharCode
- /**
- * @param {object}
- * @return {object}
- */
- var assign = Object.assign
- /**
- * @param {string} value
- * @param {number} length
- * @return {number}
- */
- function hash (value, length) {
- return charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0
- }
- /**
- * @param {string} value
- * @return {string}
- */
- function trim (value) {
- return value.trim()
- }
- /**
- * @param {string} value
- * @param {RegExp} pattern
- * @return {string?}
- */
- function match (value, pattern) {
- return (value = pattern.exec(value)) ? value[0] : value
- }
- /**
- * @param {string} value
- * @param {(string|RegExp)} pattern
- * @param {string} replacement
- * @return {string}
- */
- function replace (value, pattern, replacement) {
- return value.replace(pattern, replacement)
- }
- /**
- * @param {string} value
- * @param {string} search
- * @return {number}
- */
- function indexof (value, search) {
- return value.indexOf(search)
- }
- /**
- * @param {string} value
- * @param {number} index
- * @return {number}
- */
- function charat (value, index) {
- return value.charCodeAt(index) | 0
- }
- /**
- * @param {string} value
- * @param {number} begin
- * @param {number} end
- * @return {string}
- */
- function substr (value, begin, end) {
- return value.slice(begin, end)
- }
- /**
- * @param {string} value
- * @return {number}
- */
- function strlen (value) {
- return value.length
- }
- /**
- * @param {any[]} value
- * @return {number}
- */
- function sizeof (value) {
- return value.length
- }
- /**
- * @param {any} value
- * @param {any[]} array
- * @return {any}
- */
- function append (value, array) {
- return array.push(value), value
- }
- /**
- * @param {string[]} array
- * @param {function} callback
- * @return {string}
- */
- function combine (array, callback) {
- return array.map(callback).join('')
- }
- /**
- * @param {string[]} array
- * @param {RegExp} pattern
- * @return {string[]}
- */
- function filter (array, pattern) {
- return array.filter(function (value) { return !match(value, pattern) })
- }
- /***/ }),
- /***/ "./node_modules/tslib/tslib.es6.mjs":
- /*!******************************************!*\
- !*** ./node_modules/tslib/tslib.es6.mjs ***!
- \******************************************/
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ __addDisposableResource: () => (/* binding */ __addDisposableResource),
- /* harmony export */ __assign: () => (/* binding */ __assign),
- /* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator),
- /* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator),
- /* harmony export */ __asyncValues: () => (/* binding */ __asyncValues),
- /* harmony export */ __await: () => (/* binding */ __await),
- /* harmony export */ __awaiter: () => (/* binding */ __awaiter),
- /* harmony export */ __classPrivateFieldGet: () => (/* binding */ __classPrivateFieldGet),
- /* harmony export */ __classPrivateFieldIn: () => (/* binding */ __classPrivateFieldIn),
- /* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet),
- /* harmony export */ __createBinding: () => (/* binding */ __createBinding),
- /* harmony export */ __decorate: () => (/* binding */ __decorate),
- /* harmony export */ __disposeResources: () => (/* binding */ __disposeResources),
- /* harmony export */ __esDecorate: () => (/* binding */ __esDecorate),
- /* harmony export */ __exportStar: () => (/* binding */ __exportStar),
- /* harmony export */ __extends: () => (/* binding */ __extends),
- /* harmony export */ __generator: () => (/* binding */ __generator),
- /* harmony export */ __importDefault: () => (/* binding */ __importDefault),
- /* harmony export */ __importStar: () => (/* binding */ __importStar),
- /* harmony export */ __makeTemplateObject: () => (/* binding */ __makeTemplateObject),
- /* harmony export */ __metadata: () => (/* binding */ __metadata),
- /* harmony export */ __param: () => (/* binding */ __param),
- /* harmony export */ __propKey: () => (/* binding */ __propKey),
- /* harmony export */ __read: () => (/* binding */ __read),
- /* harmony export */ __rest: () => (/* binding */ __rest),
- /* harmony export */ __runInitializers: () => (/* binding */ __runInitializers),
- /* harmony export */ __setFunctionName: () => (/* binding */ __setFunctionName),
- /* harmony export */ __spread: () => (/* binding */ __spread),
- /* harmony export */ __spreadArray: () => (/* binding */ __spreadArray),
- /* harmony export */ __spreadArrays: () => (/* binding */ __spreadArrays),
- /* harmony export */ __values: () => (/* binding */ __values),
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /******************************************************************************
- Copyright (c) Microsoft Corporation.
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted.
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ***************************************************************************** */
- /* global Reflect, Promise, SuppressedError, Symbol */
- var extendStatics = function(d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- function __extends(d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- }
- var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- }
- return __assign.apply(this, arguments);
- }
- function __rest(s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- }
- function __decorate(decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
- }
- function __param(paramIndex, decorator) {
- return function (target, key) { decorator(target, key, paramIndex); }
- }
- function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
- var _, done = false;
- for (var i = decorators.length - 1; i >= 0; i--) {
- var context = {};
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
- if (kind === "accessor") {
- if (result === void 0) continue;
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
- if (_ = accept(result.get)) descriptor.get = _;
- if (_ = accept(result.set)) descriptor.set = _;
- if (_ = accept(result.init)) initializers.unshift(_);
- }
- else if (_ = accept(result)) {
- if (kind === "field") initializers.unshift(_);
- else descriptor[key] = _;
- }
- }
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
- done = true;
- };
- function __runInitializers(thisArg, initializers, value) {
- var useValue = arguments.length > 2;
- for (var i = 0; i < initializers.length; i++) {
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
- }
- return useValue ? value : void 0;
- };
- function __propKey(x) {
- return typeof x === "symbol" ? x : "".concat(x);
- };
- function __setFunctionName(f, name, prefix) {
- if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
- return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
- };
- function __metadata(metadataKey, metadataValue) {
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
- }
- function __awaiter(thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- }
- function __generator(thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- }
- var __createBinding = Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
- }) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
- });
- function __exportStar(m, o) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
- }
- function __values(o) {
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
- if (m) return m.call(o);
- if (o && typeof o.length === "number") return {
- next: function () {
- if (o && i >= o.length) o = void 0;
- return { value: o && o[i++], done: !o };
- }
- };
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
- }
- function __read(o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m) return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- }
- catch (error) { e = { error: error }; }
- finally {
- try {
- if (r && !r.done && (m = i["return"])) m.call(i);
- }
- finally { if (e) throw e.error; }
- }
- return ar;
- }
- /** @deprecated */
- function __spread() {
- for (var ar = [], i = 0; i < arguments.length; i++)
- ar = ar.concat(__read(arguments[i]));
- return ar;
- }
- /** @deprecated */
- function __spreadArrays() {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
- }
- function __spreadArray(to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- }
- function __await(v) {
- return this instanceof __await ? (this.v = v, this) : new __await(v);
- }
- function __asyncGenerator(thisArg, _arguments, generator) {
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
- function fulfill(value) { resume("next", value); }
- function reject(value) { resume("throw", value); }
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
- }
- function __asyncDelegator(o) {
- var i, p;
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
- }
- function __asyncValues(o) {
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
- var m = o[Symbol.asyncIterator], i;
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
- }
- function __makeTemplateObject(cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
- var __setModuleDefault = Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
- }) : function(o, v) {
- o["default"] = v;
- };
- function __importStar(mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
- }
- function __importDefault(mod) {
- return (mod && mod.__esModule) ? mod : { default: mod };
- }
- function __classPrivateFieldGet(receiver, state, kind, f) {
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
- }
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
- if (kind === "m") throw new TypeError("Private method is not writable");
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
- }
- function __classPrivateFieldIn(state, receiver) {
- if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object");
- return typeof state === "function" ? receiver === state : state.has(receiver);
- }
- function __addDisposableResource(env, value, async) {
- if (value !== null && value !== void 0) {
- if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
- var dispose;
- if (async) {
- if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
- dispose = value[Symbol.asyncDispose];
- }
- if (dispose === void 0) {
- if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
- dispose = value[Symbol.dispose];
- }
- if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
- env.stack.push({ value: value, dispose: dispose, async: async });
- }
- else if (async) {
- env.stack.push({ async: true });
- }
- return value;
- }
- var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
- var e = new Error(message);
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
- };
- function __disposeResources(env) {
- function fail(e) {
- env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
- env.hasError = true;
- }
- function next() {
- while (env.stack.length) {
- var rec = env.stack.pop();
- try {
- var result = rec.dispose && rec.dispose.call(rec.value);
- if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
- }
- catch (e) {
- fail(e);
- }
- }
- if (env.hasError) throw env.error;
- }
- return next();
- }
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
- __extends,
- __assign,
- __rest,
- __decorate,
- __param,
- __metadata,
- __awaiter,
- __generator,
- __createBinding,
- __exportStar,
- __values,
- __read,
- __spread,
- __spreadArrays,
- __spreadArray,
- __await,
- __asyncGenerator,
- __asyncDelegator,
- __asyncValues,
- __makeTemplateObject,
- __importStar,
- __importDefault,
- __classPrivateFieldGet,
- __classPrivateFieldSet,
- __classPrivateFieldIn,
- __addDisposableResource,
- __disposeResources,
- });
- /***/ })
- /******/ });
- /************************************************************************/
- /******/ // The module cache
- /******/ var __webpack_module_cache__ = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/ // Check if module is in cache
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
- /******/ if (cachedModule !== undefined) {
- /******/ return cachedModule.exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = __webpack_module_cache__[moduleId] = {
- /******/ id: moduleId,
- /******/ loaded: false,
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Flag the module as loaded
- /******/ module.loaded = true;
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /************************************************************************/
- /******/ /* webpack/runtime/compat get default export */
- /******/ (() => {
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = (module) => {
- /******/ var getter = module && module.__esModule ?
- /******/ () => (module['default']) :
- /******/ () => (module);
- /******/ __webpack_require__.d(getter, { a: getter });
- /******/ return getter;
- /******/ };
- /******/ })();
- /******/
- /******/ /* webpack/runtime/define property getters */
- /******/ (() => {
- /******/ // define getter functions for harmony exports
- /******/ __webpack_require__.d = (exports, definition) => {
- /******/ for(var key in definition) {
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
- /******/ }
- /******/ }
- /******/ };
- /******/ })();
- /******/
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
- /******/ (() => {
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
- /******/ })();
- /******/
- /******/ /* webpack/runtime/make namespace object */
- /******/ (() => {
- /******/ // define __esModule on exports
- /******/ __webpack_require__.r = (exports) => {
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
- /******/ }
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
- /******/ };
- /******/ })();
- /******/
- /******/ /* webpack/runtime/node module decorator */
- /******/ (() => {
- /******/ __webpack_require__.nmd = (module) => {
- /******/ module.paths = [];
- /******/ if (!module.children) module.children = [];
- /******/ return module;
- /******/ };
- /******/ })();
- /******/
- /******/ /* webpack/runtime/nonce */
- /******/ (() => {
- /******/ __webpack_require__.nc = undefined;
- /******/ })();
- /******/
- /************************************************************************/
- /******/
- /******/ // startup
- /******/ // Load entry module and return exports
- /******/ // This entry module is referenced by other modules so it can't be inlined
- /******/ var __webpack_exports__ = __webpack_require__("./src/index.ts");
- /******/
- /******/ return __webpack_exports__;
- /******/ })()
- ;
- });
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7OztBQ1Z1Qzs7QUFFdkMsMitIQUEyK0g7O0FBRTMrSCxpQ0FBaUMsNERBQU87QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFa0M7Ozs7Ozs7Ozs7Ozs7Ozs7QUNkbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRThCOzs7Ozs7Ozs7Ozs7Ozs7O0FDUjlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVtQzs7Ozs7Ozs7Ozs7QUNsRG5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssSUFBMEM7QUFDL0MsRUFBRSxpQ0FBTyxDQUFDLE1BQVEsRUFBRSxPQUFTLENBQUMsb0NBQUUsT0FBTztBQUFBO0FBQUE7QUFBQSxrR0FBQztBQUN4QyxHQUFHLEtBQUssWUFRTjtBQUNGLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBLDJCQUEyQixlQUFlO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnRkFBZ0Y7O0FBRWhGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7QUMvUkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFCQTtBQUM2RztBQUNqQjtBQUM1Riw4QkFBOEIsbUZBQTJCLENBQUMsNEZBQXFDO0FBQy9GLHNHQUFzRztBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhCQUE4QjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0EsNkJBQTZCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDO0FBQ3RDLHlGQUF5RjtBQUN6Riw2Q0FBNkM7QUFDN0MsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxPQUFPLHc2Q0FBdzZDLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLFVBQVUsS0FBSyxNQUFNLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsVUFBVSxRQUFRLFFBQVEscUJBQXFCLFFBQVEsYUFBYSxLQUFLLFdBQVcscUJBQXFCLFdBQVcsVUFBVSxVQUFVLFVBQVUsUUFBUSxPQUFPLFVBQVUscUJBQXFCLFFBQVEsT0FBTyxVQUFVLHFCQUFxQixRQUFRLGFBQWEsTUFBTSxXQUFXLHFCQUFxQixRQUFRLFFBQVEsV0FBVyxxQkFBcUIsUUFBUSxhQUFhLEtBQUssV0FBVyxxQkFBcUIsV0FBVyxXQUFXLFdBQVcsUUFBUSxVQUFVLHFCQUFxQixRQUFRLE9BQU8sVUFBVSxRQUFRLE9BQU8sVUFBVSxRQUFRLFVBQVUscUJBQXFCLFFBQVEsWUFBWSxxQkFBcUIsUUFBUSxpQkFBaUIscUJBQXFCLFFBQVEsT0FBTyxxQkFBcUIsUUFBUSxRQUFRLHFCQUFxQixRQUFRLFFBQVEsV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sVUFBVSxRQUFRLE9BQU8sV0FBVyxXQUFXLFFBQVEsWUFBWSxPQUFPLHFCQUFxQixRQUFRLGFBQWEsS0FBSyxXQUFXLFVBQVUsUUFBUSxPQUFPLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixVQUFVLFdBQVcsc0JBQXNCLFdBQVcsV0FBVyxXQUFXLFVBQVUsV0FBVyxVQUFVLFFBQVEsUUFBUSxxQkFBcUIsV0FBVyxXQUFXLHFCQUFxQixXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFFBQVEsT0FBTyxVQUFVLFdBQVcsVUFBVSxRQUFRLE9BQU8sV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFVBQVUsVUFBVSxXQUFXLFFBQVEsT0FBTyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsUUFBUSxPQUFPLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxVQUFVLE9BQU8sT0FBTyxVQUFVLFVBQVUsUUFBUSxhQUFhLEtBQUssVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsUUFBUSxPQUFPLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxVQUFVLFFBQVEsT0FBTyxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxVQUFVLFFBQVEsWUFBWSxLQUFLLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxVQUFVLFFBQVEsT0FBTyxXQUFXLFFBQVEsT0FBTyxXQUFXLFFBQVEsT0FBTyxXQUFXLFFBQVEsT0FBTyxVQUFVLFFBQVEsT0FBTyxVQUFVLFVBQVUsUUFBUSxPQUFPLFVBQVUsV0FBVyxVQUFVLFFBQVEsT0FBTyxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFdBQVcsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFFBQVEsT0FBTyxXQUFXLFFBQVEsYUFBYSxLQUFLLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxhQUFhLEtBQUssV0FBVyxRQUFRLGFBQWEsS0FBSyxXQUFXLFFBQVEsYUFBYSxLQUFLLFdBQVcsUUFBUSxhQUFhLEtBQUssV0FBVyxRQUFRLGFBQWEsS0FBSyxXQUFXLFFBQVEsT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLFFBQVEsYUFBYSxLQUFLLEtBQUssV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsVUFBVSxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxXQUFXLFFBQVEsT0FBTyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsVUFBVSxVQUFVLFVBQVUsUUFBUSxPQUFPLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFFBQVEsT0FBTyxVQUFVLFFBQVEsYUFBYSxLQUFLLFVBQVUsUUFBUSxPQUFPLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxPQUFPLE9BQU8sVUFBVSxPQUFPLE9BQU8sTUFBTSxXQUFXLE9BQU8sS0FBSyxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLE9BQU8sT0FBTyxVQUFVLE9BQU8sT0FBTyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxPQUFPLE9BQU8sVUFBVSxRQUFRLE9BQU8sVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFFBQVEsT0FBTyxVQUFVLFVBQVUsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLFVBQVUsUUFBUSxPQUFPLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsUUFBUSxTQUFTLFVBQVUsVUFBVSxRQUFRLE9BQU8sVUFBVSxVQUFVLFdBQVcsUUFBUSxPQUFPLHFCQUFxQixxQkFBcUIsc0JBQXNCLHNCQUFzQixzQkFBc0IsV0FBVyxLQUFLLE1BQU0sUUFBUSxPQUFPLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxZQUFZLFdBQVcsUUFBUSxPQUFPLFVBQVUsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFVBQVUsV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxhQUFhLGVBQWUsYUFBYSxVQUFVLFdBQVcsT0FBTyxPQUFPLGFBQWEsUUFBUSxPQUFPLFdBQVcsV0FBVyxXQUFXLE9BQU8sUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLE9BQU8sT0FBTyxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFdBQVcsVUFBVSxVQUFVLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxZQUFZLGFBQWEsUUFBUSxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsV0FBVyxXQUFXLFFBQVEsT0FBTyxhQUFhLFFBQVEsT0FBTyxhQUFhLGFBQWEsV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sVUFBVSxZQUFZLFNBQVMsT0FBTyxVQUFVLFVBQVUsUUFBUSxPQUFPLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLFFBQVEsTUFBTSxLQUFLLEtBQUssV0FBVyxPQUFPLE1BQU0sT0FBTyxLQUFLLFdBQVcsT0FBTyxNQUFNLE9BQU8sS0FBSyxXQUFXLE9BQU8sTUFBTSxPQUFPLEtBQUssV0FBVyxPQUFPLE1BQU0sT0FBTyxLQUFLLFdBQVcsT0FBTyxNQUFNLE9BQU8sS0FBSyxXQUFXLE9BQU8sTUFBTSxPQUFPLEtBQUssV0FBVyxPQUFPLE1BQU0sT0FBTyxLQUFLLFdBQVcsT0FBTyxNQUFNLE9BQU8sS0FBSyxXQUFXLE9BQU8sTUFBTSxPQUFPLEtBQUssV0FBVyxPQUFPLE1BQU0sT0FBTyxLQUFLLFdBQVcsT0FBTyxNQUFNLE9BQU8sS0FBSyxXQUFXLE9BQU8sTUFBTSxPQUFPLEtBQUssV0FBVyxPQUFPLE1BQU0sUUFBUSxNQUFNLEtBQUssV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sVUFBVSxXQUFXLFdBQVcsUUFBUSxPQUFPLFVBQVUsV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxPQUFPLE9BQU8sVUFBVSxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxVQUFVLFdBQVcsWUFBWSxZQUFZLFlBQVksUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsVUFBVSxXQUFXLFFBQVEsT0FBTyxXQUFXLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsT0FBTyxPQUFPLFVBQVUsYUFBYSxZQUFZLE9BQU8sT0FBTyxVQUFVLFdBQVcsVUFBVSxVQUFVLFdBQVcsT0FBTyxPQUFPLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxRQUFRLE9BQU8sVUFBVSxXQUFXLFdBQVcsWUFBWSxZQUFZLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLE9BQU8sT0FBTyxVQUFVLE9BQU8sT0FBTyxXQUFXLFVBQVUsV0FBVyxXQUFXLFVBQVUsVUFBVSxZQUFZLFVBQVUsVUFBVSxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxPQUFPLE9BQU8sVUFBVSxXQUFXLFFBQVEsT0FBTyxXQUFXLFVBQVUsV0FBVyxRQUFRLE9BQU8sV0FBVyxXQUFXLFFBQVEsT0FBTyxXQUFXLFdBQVcsV0FBVyxXQUFXLFFBQVEsT0FBTyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsYUFBYSxhQUFhLE9BQU8sT0FBTyxVQUFVLE9BQU8sT0FBTyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFVBQVUsV0FBVyxXQUFXLFVBQVUsUUFBUSxRQUFRLFVBQVUsV0FBVyxPQUFPLFFBQVEsVUFBVSxPQUFPLFFBQVEsV0FBVyxVQUFVLFdBQVcsVUFBVSxVQUFVLE9BQU8sUUFBUSxXQUFXLE9BQU8sUUFBUSxXQUFXLE9BQU8sUUFBUSxVQUFVLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxPQUFPLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxVQUFVLFdBQVcsT0FBTyxPQUFPLFdBQVcsVUFBVSxRQUFRLE9BQU8sV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxhQUFhLGVBQWUsYUFBYSxVQUFVLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLE9BQU8sUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLE9BQU8sT0FBTyxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFdBQVcsVUFBVSxVQUFVLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxZQUFZLGFBQWEsUUFBUSxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsV0FBVyxXQUFXLFFBQVEsT0FBTyxhQUFhLFFBQVEsT0FBTyxZQUFZLFlBQVksV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sVUFBVSxXQUFXLFNBQVMsT0FBTyxZQUFZLFFBQVEsT0FBTyxVQUFVLGFBQWEsU0FBUyxPQUFPLGFBQWEsY0FBYyxTQUFTLE9BQU8sTUFBTSxXQUFXLEtBQUssWUFBWSxTQUFTLGFBQWEsaUJBQWlCLFdBQVcsVUFBVSxZQUFZLFlBQVksVUFBVSxVQUFVLFVBQVUsWUFBWSxjQUFjLFlBQVksWUFBWSxXQUFXLFdBQVcsT0FBTywrQkFBK0IsYUFBYSxlQUFlLFFBQVEsK0JBQStCLGFBQWEsUUFBUSxtQkFBbUIsV0FBVyxXQUFXLE9BQU8sbUJBQW1CLFdBQVcsUUFBUSxtQkFBbUIsV0FBVyxRQUFRLG1CQUFtQixXQUFXLE9BQU8sbUJBQW1CLFVBQVUsT0FBTyxhQUFhLDZCQUE2QixXQUFXLFdBQVcsUUFBUSwrQkFBK0IsYUFBYSxhQUFhLFFBQVEsdURBQXVELFdBQVcsV0FBVyxXQUFXLFFBQVEsK0JBQStCLFdBQVcsV0FBVyxTQUFTLCtCQUErQixXQUFXLFdBQVcsUUFBUSxtQkFBbUIsVUFBVSxVQUFVLFdBQVcsVUFBVSxVQUFVLFVBQVUsV0FBVyxRQUFRLE9BQU8sWUFBWSxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLE9BQU8sUUFBUSxXQUFXLE9BQU8sT0FBTyxVQUFVLE9BQU8sUUFBUSxXQUFXLE9BQU8sT0FBTyxZQUFZLGFBQWEsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLE9BQU8sT0FBTyxVQUFVLFdBQVcsVUFBVSxVQUFVLE9BQU8sT0FBTyxXQUFXLFdBQVcsWUFBWSxZQUFZLE9BQU8sT0FBTyxXQUFXLFFBQVEsWUFBWSxXQUFXLFVBQVUsV0FBVyxPQUFPLE9BQU8sWUFBWSxRQUFRLE9BQU8sS0FBSyxVQUFVLFdBQVcsT0FBTyxLQUFLLE9BQU8sS0FBSyxVQUFVLFdBQVcsT0FBTyxNQUFNLGFBQWEsS0FBSyxVQUFVLFdBQVcsV0FBVyxPQUFPLE9BQU8sVUFBVSxXQUFXLFdBQVcsVUFBVSxXQUFXLE9BQU8sT0FBTyxZQUFZLFdBQVcsV0FBVyxVQUFVLE9BQU8sT0FBTyxVQUFVLE9BQU8sT0FBTyxVQUFVLFVBQVUsT0FBTyxPQUFPLFdBQVcsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFlBQVksUUFBUSxZQUFZLEtBQUssVUFBVSxXQUFXLFlBQVksT0FBTyxPQUFPLFdBQVcsc0JBQXNCLHNCQUFzQixVQUFVLFlBQVksWUFBWSxRQUFRLE9BQU8sV0FBVyxXQUFXLFdBQVcsc0JBQXNCLHNCQUFzQixXQUFXLFVBQVUsVUFBVSxRQUFRLGFBQWEsS0FBSyxVQUFVLFFBQVEsT0FBTyxXQUFXLFFBQVEsYUFBYSxLQUFLLFdBQVcsUUFBUSxRQUFRLE1BQU0sTUFBTSxXQUFXLFVBQVUsV0FBVyxTQUFTLFNBQVMsV0FBVyxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsU0FBUyxTQUFTLFVBQVUsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFNBQVMsY0FBYyxVQUFVLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBUyxRQUFRLFdBQVcsU0FBUyxjQUFjLEtBQUssV0FBVyxTQUFTLFVBQVUsWUFBWSxRQUFRLFNBQVMsYUFBYSxTQUFTLFFBQVEsV0FBVyxTQUFTLGNBQWMsS0FBSyxXQUFXLFNBQVMsY0FBYyxLQUFLLFdBQVcsU0FBUyxjQUFjLEtBQUssV0FBVyxTQUFTLFFBQVEsVUFBVSxhQUFhLFNBQVMsY0FBYyxNQUFNLFdBQVcsYUFBYSxTQUFTLFFBQVEsYUFBYSxTQUFTLFFBQVEsYUFBYSxTQUFTLFFBQVEsYUFBYSxlQUFlLFNBQVMsUUFBUSxNQUFNLFdBQVcsTUFBTSxXQUFXLFVBQVUsV0FBVyxTQUFTLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsV0FBVyxRQUFRLFFBQVEsVUFBVSxhQUFhLFFBQVEsUUFBUSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsU0FBUyxRQUFRLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFNBQVMsY0FBYyxLQUFLLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFNBQVMsUUFBUSxXQUFXLFFBQVEsU0FBUyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxRQUFRLFFBQVEsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxVQUFVLFdBQVcsWUFBWSxXQUFXLFFBQVEsUUFBUSxXQUFXLGFBQWEsYUFBYSxRQUFRLFFBQVEsV0FBVyxZQUFZLGFBQWEsUUFBUSxRQUFRLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxhQUFhLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxhQUFhLGVBQWUsU0FBUyxRQUFRLE1BQU0sTUFBTSxXQUFXLFdBQVcsU0FBUyxRQUFRLFVBQVUsU0FBUyxRQUFRLFVBQVUsVUFBVSxVQUFVLFFBQVEsUUFBUSxhQUFhLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxZQUFZLFNBQVMsUUFBUSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsYUFBYSxjQUFjLFlBQVksV0FBVyxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxVQUFVLFVBQVUsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsYUFBYSxhQUFhLFNBQVMsU0FBUyxXQUFXLFdBQVcsU0FBUyxTQUFTLFdBQVcsV0FBVyxTQUFTLFFBQVEsVUFBVSxXQUFXLFNBQVMsU0FBUyxZQUFZLFNBQVMsUUFBUSxNQUFNLEtBQUssVUFBVSxTQUFTLFFBQVEsV0FBVyxVQUFVLFFBQVEsYUFBYSxZQUFZLFdBQVcsYUFBYSxhQUFhLFlBQVksUUFBUSxRQUFRLFdBQVcsU0FBUyxRQUFRLFlBQVksUUFBUSxRQUFRLFVBQVUsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxhQUFhLFdBQVcsVUFBVSxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxZQUFZLFNBQVMsUUFBUSxhQUFhLFNBQVMsUUFBUSxhQUFhLFFBQVEsUUFBUSxhQUFhLFNBQVMsUUFBUSxhQUFhLFlBQVksV0FBVyxTQUFTLFFBQVEsYUFBYSxTQUFTLFVBQVUsYUFBYSxhQUFhLFNBQVMsUUFBUSxhQUFhLFNBQVMsUUFBUSxhQUFhLFFBQVEsUUFBUSxhQUFhLFNBQVMsUUFBUSxXQUFXLFVBQVUsV0FBVyxTQUFTLFFBQVEsWUFBWSxVQUFVLFFBQVEsV0FBVyxVQUFVLFNBQVMsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFNBQVMsUUFBUSxNQUFNLEtBQUssV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFFBQVEsUUFBUSxXQUFXLFNBQVMsUUFBUSxVQUFVLFdBQVcsYUFBYSxPQUFPLFFBQVEsVUFBVSxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsU0FBUyxRQUFRLE1BQU0sS0FBSyxXQUFXLFNBQVMsU0FBUyxVQUFVLFNBQVMsUUFBUSxXQUFXLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFNBQVMsUUFBUSxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLGFBQWEsYUFBYSxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsVUFBVSxVQUFVLFNBQVMsUUFBUSxXQUFXLFNBQVMsUUFBUSxZQUFZLFlBQVksVUFBVSxTQUFTLFFBQVEsV0FBVyxVQUFVLFVBQVUsV0FBVyxhQUFhLGFBQWEsV0FBVyxhQUFhLGFBQWEsV0FBVyxTQUFTLFFBQVEsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFdBQVcsU0FBUyxRQUFRLFlBQVksWUFBWSxVQUFVLFNBQVMsUUFBUSxVQUFVLFNBQVMsUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLGFBQWEsYUFBYSxZQUFZLFNBQVMsUUFBUSxXQUFXLFdBQVcsU0FBUyxRQUFRLFdBQVcsU0FBUyxRQUFRLFdBQVcsWUFBWSxXQUFXLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxXQUFXLFNBQVMsUUFBUSxXQUFXLFNBQVMsUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLGFBQWEsYUFBYSxTQUFTLFFBQVEsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsV0FBVyxTQUFTLFFBQVEsV0FBVyxTQUFTLFFBQVEsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFNBQVMsUUFBUSxVQUFVLFVBQVUsWUFBWSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsV0FBVyxXQUFXLFlBQVksWUFBWSxZQUFZLFdBQVcsV0FBVyxVQUFVLFdBQVcsU0FBUyxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFdBQVcsU0FBUyxRQUFRLFVBQVUsV0FBVyxVQUFVLFNBQVMsUUFBUSxLQUFLLFVBQVUsUUFBUSxLQUFLLFFBQVEsS0FBSyxVQUFVLFFBQVEsS0FBSyxRQUFRLFdBQVcsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFNBQVMsUUFBUSxXQUFXLFdBQVcsV0FBVyxRQUFRLFFBQVEsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLEtBQUssV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLEtBQUssUUFBUSxLQUFLLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxLQUFLLFFBQVEsS0FBSyxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsTUFBTSxRQUFRLFVBQVUsWUFBWSxZQUFZLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLGNBQWMsYUFBYSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFFBQVEsUUFBUSxXQUFXLFdBQVcsUUFBUSxRQUFRLGNBQWMsYUFBYSxhQUFhLGNBQWMsYUFBYSxpQkFBaUIsYUFBYSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsYUFBYSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsY0FBYyxRQUFRLFNBQVMsVUFBVSxhQUFhLGlCQUFpQixjQUFjLFVBQVUsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsVUFBVSxXQUFXLFdBQVcsYUFBYSxjQUFjLGNBQWMsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsV0FBVyxXQUFXLFFBQVEsUUFBUSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsUUFBUSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFNBQVMsWUFBWSxhQUFhLFFBQVEsUUFBUSxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsV0FBVyxTQUFTLFFBQVEsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFNBQVMsUUFBUSxVQUFVLFdBQVcsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFNBQVMsUUFBUSxLQUFLLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxLQUFLLFNBQVMsYUFBYSxRQUFRLFNBQVMsWUFBWSxTQUFTLFFBQVEsVUFBVSxTQUFTLFFBQVEsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxVQUFVLFVBQVUsU0FBUyxRQUFRLFdBQVcsV0FBVyxTQUFTLFNBQVMsWUFBWSxlQUFlLGFBQWEsWUFBWSxlQUFlLGNBQWMsYUFBYSxXQUFXLFdBQVcsU0FBUyxzQkFBc0IsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFFBQVEsc0JBQXNCLFdBQVcsV0FBVyxTQUFTLFlBQVksYUFBYSxhQUFhLFFBQVEsWUFBWSxjQUFjLGNBQWMsU0FBUyxTQUFTLFdBQVcsU0FBUyxRQUFRLFdBQVcsYUFBYSxpQkFBaUIsY0FBYyxXQUFXLFdBQVcsVUFBVSxRQUFRLFFBQVEsY0FBYyxTQUFTLFFBQVEsWUFBWSxhQUFhLGNBQWMsV0FBVyxVQUFVLGFBQWEsZ0JBQWdCLGlCQUFpQixhQUFhLGNBQWMsaUJBQWlCLGNBQWMsVUFBVSxXQUFXLFFBQVEsUUFBUSxhQUFhLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxhQUFhLGdCQUFnQixhQUFhLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxjQUFjLFFBQVEsUUFBUSxhQUFhLGdCQUFnQixRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsY0FBYyxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFdBQVcsYUFBYSxpQkFBaUIsaUJBQWlCLFNBQVMsUUFBUSxZQUFZLFNBQVMsUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsV0FBVyxVQUFVLFVBQVUsV0FBVyxVQUFVLFFBQVEsUUFBUSxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxVQUFVLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFVBQVUsWUFBWSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFVBQVUsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsY0FBYyxhQUFhLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxXQUFXLFVBQVUsVUFBVSxVQUFVLGFBQWEsZ0JBQWdCLGdCQUFnQixnQkFBZ0IsY0FBYyxTQUFTLFFBQVEsV0FBVyxXQUFXLGFBQWEsYUFBYSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFdBQVcsVUFBVSxTQUFTLFFBQVEsYUFBYSxpQkFBaUIsZ0JBQWdCLGFBQWEsUUFBUSxRQUFRLGNBQWMsU0FBUyxRQUFRLGFBQWEsaUJBQWlCLGdCQUFnQixRQUFRLFFBQVEsY0FBYyxTQUFTLFFBQVEsVUFBVSxTQUFTLFFBQVEsVUFBVSxVQUFVLFNBQVMsUUFBUSxXQUFXLFdBQVcsV0FBVyxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFlBQVksV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxVQUFVLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLHFCQUFxQixxQkFBcUIsV0FBVyxVQUFVLFVBQVUsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsUUFBUSxRQUFRLEtBQUssV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLE1BQU0sUUFBUSxXQUFXLFlBQVksYUFBYSxXQUFXLGFBQWEsU0FBUyxRQUFRLFdBQVcsV0FBVyxhQUFhLGFBQWEsV0FBVyxRQUFRLFFBQVEsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxRQUFRLFFBQVEsWUFBWSxhQUFhLFVBQVUsVUFBVSxVQUFVLFlBQVksT0FBTyxRQUFRLFlBQVksYUFBYSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksZUFBZSxhQUFhLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksYUFBYSxhQUFhLFlBQVksV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxTQUFTLGVBQWUsS0FBSyxXQUFXLFdBQVcsV0FBVyxnQkFBZ0IsS0FBSyxLQUFLLFdBQVcsV0FBVyxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsS0FBSyxXQUFXLFFBQVEsS0FBSyxRQUFRLEtBQUssV0FBVyxRQUFRLEtBQUssUUFBUSxXQUFXLFVBQVUsVUFBVSxVQUFVLGNBQWMsU0FBUyxTQUFTLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBUyxtQkFBbUIsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFdBQVcsU0FBUyxRQUFRLFdBQVcsV0FBVyxXQUFXLFNBQVMsWUFBWSxXQUFXLFVBQVUsV0FBVyxXQUFXLFNBQVMsUUFBUSxLQUFLLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixNQUFNLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixNQUFNLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsU0FBUyxRQUFRLEtBQUssV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixNQUFNLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixNQUFNLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixTQUFTLFFBQVEsS0FBSyxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsS0FBSyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxLQUFLLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxLQUFLLFFBQVEsS0FBSyxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsS0FBSyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxLQUFLLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxLQUFLLFFBQVEsS0FBSyxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsS0FBSyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssVUFBVSxLQUFLLEtBQUssV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxTQUFTLFFBQVEsVUFBVSxVQUFVLFNBQVMsUUFBUSxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxRQUFRLFFBQVEsVUFBVSxVQUFVLHNCQUFzQixXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFVBQVUsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFdBQVcsU0FBUyxRQUFRLEtBQUssV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLEtBQUssUUFBUSxLQUFLLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxLQUFLLFFBQVEsS0FBSyxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsS0FBSyxRQUFRLEtBQUssV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLEtBQUssUUFBUSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsS0FBSyxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsS0FBSyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxVQUFVLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxLQUFLLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFVBQVUsUUFBUSxLQUFLLFFBQVEsS0FBSyxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFFBQVEsS0FBSyxRQUFRLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFFBQVEsUUFBUSxXQUFXLFdBQVcsU0FBUyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxZQUFZLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsS0FBSyxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsV0FBVyxRQUFRLFFBQVEsVUFBVSxXQUFXLFFBQVEsS0FBSyxRQUFRLGNBQWMsYUFBYSxVQUFVLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsYUFBYSxZQUFZLGNBQWMsY0FBYyxVQUFVLFdBQVcsUUFBUSxRQUFRLGNBQWMsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFlBQVksV0FBVyxXQUFXLFFBQVEsUUFBUSxVQUFVLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFVBQVUsV0FBVyxVQUFVLFNBQVMsUUFBUSxXQUFXLFNBQVMsUUFBUSxVQUFVLFVBQVUsVUFBVSxVQUFVLFNBQVMsUUFBUSxVQUFVLFNBQVMsUUFBUSxjQUFjLGdCQUFnQixZQUFZLGFBQWEsaUJBQWlCLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsY0FBYyxhQUFhLFFBQVEsUUFBUSxXQUFXLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxV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Z0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsa0JBQWtCLHlDQUF5QyxHQUFHLHVCQUF1Qiw4QkFBOEIsR0FBRyxzQ0FBc0MseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHFDQUFxQyw4QkFBOEIsR0FBRyxxREFBcUQseUNBQXlDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHFDQUFxQyw4QkFBOEIsR0FBRyxxREFBcUQseUNBQXlDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHFDQUFxQyw4QkFBOEIsR0FBRyxxREFBcUQseUNBQXlDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHFDQUFxQyw4QkFB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LDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRyxXQUFXLHlDQUF5QyxHQUFHLGdCQUFnQiw4QkFBOEIsR0FBRywrQkFBK0IseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcsb0JBQW9CLHlDQUF5QyxHQUFHLDhCQUE4Qiw4QkFBOEIsR0FBRyw4Q0FBOEMseUNBQXlDLEdBQUcsb0JBQW9CLHlDQUF5QyxHQUFHLDhCQUE4Qiw4QkFBOEIsR0FBRyw4Q0FBOEMseUNBQXlDLEdBQUcsb0JBQW9CLHlDQUF5QyxH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LGtCQUFrQixLQUFLLGtCQUFrQiw0QkFBNEIsd0JBQXdCLGlCQUFpQixrQkFBa0IsS0FBSyxrQkFBa0IsaUJBQWlCLHdCQUF3QixpQkFBaUIsa0JBQWtCLEtBQUssa0JBQWtCLDRCQUE0Qix3QkFBd0IsaUJBQWlCLGtCQUFrQixLQUFLLGtCQUFrQiw0QkFBNEIsd0JBQXdCLGlCQUFpQixrQkFBa0IsS0FBSyxrQkFBa0IsaUJBQWlCLHdCQUF3QixpQkFBaUIsa0JBQWtCLEtBQUssa0JBQWtCLDRCQUE0Qix3QkFBd0IsaUJBQWlCLGtCQUFrQixLQUFLLGtCQUFrQiw0QkFBNEIsd0JBQXdCLGlCQUFpQixrQkFBa0IsS0FBSyxrQkFBa0IsaUJBQWlCLHdCQUF3QixpQkFBaUIsa0JBQWtCLEtBQUssbUJBQW1CLDRCQUE0Qix3QkFBd0IsaUJBQWlCLGtCQUFrQixLQUFLLG1CQUFtQiw0QkFBNEIsd0JBQXdCLGlCQUFpQixrQkFBa0IsS0FBSyxtQkFBbUIsa0JBQWtCLHdCQUF3QixpQkFBaUIsa0JBQWtCLEtBQUsseUJBQXlCLGlDQUFpQyxLQUFLLHVCQUF1QiwyQkFBMkIsS0FBSyx1QkFBdUIsMEJBQTBCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJBQTJCLEtBQUsseUJBQXlCLHVCQUF1QixLQUFLLHVCQUF1QixpQkFBaUIsS0FBSyx1QkFBdUIsZ0JBQWdCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJBQTJCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJBQTJCLEtBQUsseUJBQXlCLHVCQUF1QixLQUFLLHVCQUF1QixpQkFBaUIsS0FBSyx1QkFBdUIsZ0JBQWdCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJBQTJCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJB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O0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFLElBQUk7QUFDTjs7QUFFQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixRQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsSUFBcUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxTQUFTLEtBQXFDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0JBQXNCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxJQUFxQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQiwyQkFBMkI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFD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O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLFdBQVcsZUFBZTtBQUMxQixXQUFXLEdBQUc7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QTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRzs7QUFFUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUEsMENBQTBDO0FBQzFDOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSxvQ0FBb0M7QUFDcEM7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLElBQUk7QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLElBQUk7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0EsU0FBUztBQUNULHVCQUF1QjtBQUN2QjtBQUNBLFNBQVM7QUFDVCx1QkFBdUI7QUFDdkI7QUFDQSxTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCO0FBQ0EsU0FBUztBQUNULHdCQUF3QjtBQUN4QjtBQUNBLFNBQVM7QUFDVCxpQ0FBaUM7QUFDakM7QUFDQSxTQUFTO0FBQ1QsMkJBQTJCO0FBQzNCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkRBQTJEOztBQUUzRDtBQUNBOztBQUVBO0FBQ0EsMkRBQTJEO0FBQzNEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQSxnRkFBZ0Y7QUFDaEY7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOzs7QUFHbEI7QUFDQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwySEFBMkg7QUFDM0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxvRUFBb0U7O0FBRXBFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsR0FBRztBQUNkOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwyREFBMkQ7QUFDM0Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsV0FBVztBQUN0QixXQUFXLEdBQUc7QUFDZDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6Qjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLDRDQUE0Qzs7QUFFNUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6Qjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNEQUFzRDtBQUN0RDs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLG9CQUFvQixzQkFBc0I7QUFDMUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixzQkFBc0I7QUFDeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDOzs7Ozs7O1VDalhGO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N6QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7O1dDTkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTs7Ozs7V0NKQTs7Ozs7VUVBQTtVQUNBO1VBQ0E7VUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2QzdjRwcC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL2lzLXByb3AtdmFsaWQvZGlzdC9lbW90aW9uLWlzLXByb3AtdmFsaWQuZXNtLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9tZW1vaXplL2Rpc3QvZW1vdGlvbi1tZW1vaXplLmVzbS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC9lbW90aW9uLXVuaXRsZXNzLmVzbS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvYXV0b3NpemUvZGlzdC9hdXRvc2l6ZS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvY29tcHV0ZWQtc3R5bGUvZGlzdC9jb21wdXRlZFN0eWxlLmNvbW1vbmpzLmpzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9zYXNzL2QzdjRwcC5zY3NzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL2RlZXBtZXJnZS9kaXN0L2Nqcy5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvb2JqZWN0LWFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9jaGVja1Byb3BUeXBlcy5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL2hhcy5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc2hhbGxvd2VxdWFsL2luZGV4LmpzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9zYXNzL2QzdjRwcC5zY3NzPzU0NTgiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvZGlzdC9zdHlsZWQtY29tcG9uZW50cy5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL0NlbGwudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9DaGVja2JveC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9Db250ZXh0TWVudS50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9EYXRhVGFibGUudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvRXhwYW5kZXJCdXR0b24udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvRXhwYW5kZXJSb3cudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvTm9EYXRhV3JhcHBlci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9QYWdpbmF0aW9uLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1Byb2dyZXNzV3JhcHBlci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9SZXNwb25zaXZlV3JhcHBlci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9TZWxlY3QudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvVGFibGUudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvVGFibGVCb2R5LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlQ2VsbC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZUNlbGxDaGVja2JveC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZUNlbGxFeHBhbmRlci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZUNvbC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZUNvbENoZWNrYm94LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlQ29sRXhwYW5kZXIudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvVGFibGVIZWFkLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlSGVhZFJvdy50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZUhlYWRlci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZVJvdy50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZVN1YmhlYWRlci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZVdyYXBwZXIudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvY29uc3RhbnRzLnRzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvZGVmYXVsdFByb3BzLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2hvb2tzL3VzZUNvbHVtbnMudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9ob29rcy91c2VEaWRVcGRhdGVFZmZlY3QudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9ob29rcy91c2VSVEwudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9ob29rcy91c2VXaW5kb3dTaXplLnRzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvaWNvbnMvRHJvcGRvd24udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvaWNvbnMvRXhwYW5kZXJDb2xsYXBzZWRJY29uLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2ljb25zL0V4cGFuZGVyRXhwYW5kZWRJY29uLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2ljb25zL0ZpcnN0UGFnZS50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9pY29ucy9MYXN0UGFnZS50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9pY29ucy9MZWZ0LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2ljb25zL05hdGl2ZVNvcnRJY29uLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2ljb25zL1JpZ2h0LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL21lZGlhLnRzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvc3R5bGVzLnRzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvdGFibGVSZWR1Y2VyLnRzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvdGhlbWVzLnRzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvdHlwZXMudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS91dGlsLnRzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL2JhZGdlL0JhZGdlLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9idXR0b24vQnV0dG9uLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9jYXJkL0NhcmQudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL2NoaXAvQ2hpcC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvY29sbGFwc2libGUvQ29sbGFwc2libGUudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL2NvbGxlY3Rpb25zL0NvbGxlY3Rpb24udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL2Zvcm1zL0ZpZWxkLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9mb3Jtcy9UZXh0YXJlYS50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvZm9ybXMvbGluZS1oZWlnaHQudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL2Zvcm1zL3JleC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvaWNvbnMvSWNvbi50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvbGF5b3V0cy9MYXlvdXRzLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9tb2RhbC9Nb2RhbC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvbmF2aWdhdGlvbi9OYXZCYXIudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL25hdmlnYXRpb24vTmF2aWdhdGlvbi50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvbmF2aWdhdGlvbi9TaWRlTmF2LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9wcm9ncmVzcy9Qcm9ncmVzcy50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2luZGV4LnRzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy91eC9hdXRoL0xvZ2luLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvdXgvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlZC1jb21wb25lbnRzL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL0VudW0uanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlZC1jb21wb25lbnRzL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL01pZGRsZXdhcmUuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlZC1jb21wb25lbnRzL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1BhcnNlci5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUHJlZml4ZXIuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlZC1jb21wb25lbnRzL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1NlcmlhbGl6ZXIuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlZC1jb21wb25lbnRzL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1Rva2VuaXplci5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVXRpbGl0eS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vZDN2NHBwL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2QzdjRwcC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZDN2NHBwL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZDN2NHBwL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vZDN2NHBwL3dlYnBhY2svcnVudGltZS9ub2RlIG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vZDN2NHBwL3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9kM3Y0cHAvd2VicGFjay9iZWZvcmUtc3RhcnR1cCIsIndlYnBhY2s6Ly9kM3Y0cHAvd2VicGFjay9zdGFydHVwIiwid2VicGFjazovL2QzdjRwcC93ZWJwYWNrL2FmdGVyLXN0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiZDN2NHBwXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImQzdjRwcFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQgbWVtb2l6ZSBmcm9tICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIHJlYWN0UHJvcHNSZWdleCA9IC9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFiYnJ8YWNjZXB0fGFjY2VwdENoYXJzZXR8YWNjZXNzS2V5fGFjdGlvbnxhbGxvd3xhbGxvd1VzZXJNZWRpYXxhbGxvd1BheW1lbnRSZXF1ZXN0fGFsbG93RnVsbFNjcmVlbnxhbGxvd1RyYW5zcGFyZW5jeXxhbHR8YXN5bmN8YXV0b0NvbXBsZXRlfGF1dG9QbGF5fGNhcHR1cmV8Y2VsbFBhZGRpbmd8Y2VsbFNwYWNpbmd8Y2hhbGxlbmdlfGNoYXJTZXR8Y2hlY2tlZHxjaXRlfGNsYXNzSUR8Y2xhc3NOYW1lfGNvbHN8Y29sU3Bhbnxjb250ZW50fGNvbnRlbnRFZGl0YWJsZXxjb250ZXh0TWVudXxjb250cm9sc3xjb250cm9sc0xpc3R8Y29vcmRzfGNyb3NzT3JpZ2lufGRhdGF8ZGF0ZVRpbWV8ZGVjb2Rpbmd8ZGVmYXVsdHxkZWZlcnxkaXJ8ZGlzYWJsZWR8ZGlzYWJsZVBpY3R1cmVJblBpY3R1cmV8ZG93bmxvYWR8ZHJhZ2dhYmxlfGVuY1R5cGV8ZW50ZXJLZXlIaW50fGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHJhbnNsYXRlfHR5cGV8dXNlTWFwfHZhbHVlfHdpZHRofHdtb2RlfHdyYXB8YWJvdXR8ZGF0YXR5cGV8aW5saXN0fHByZWZpeHxwcm9wZXJ0eXxyZXNvdXJjZXx0eXBlb2Z8dm9jYWJ8YXV0b0NhcGl0YWxpemV8YXV0b0NvcnJlY3R8YXV0b1NhdmV8Y29sb3J8aW5jcmVtZW50YWx8ZmFsbGJhY2t8aW5lcnR8aXRlbVByb3B8aXRlbVNjb3BlfGl0ZW1UeXBlfGl0ZW1JRHxpdGVtUmVmfG9ufG9wdGlvbnxyZXN1bHRzfHNlY3VyaXR5fHVuc2VsZWN0YWJsZXxhY2NlbnRIZWlnaHR8YWNjdW11bGF0ZXxhZGRpdGl2ZXxhbGlnbm1lbnRCYXNlbGluZXxhbGxvd1Jlb3JkZXJ8YWxwaGFiZXRpY3xhbXBsaXR1ZGV8YXJhYmljRm9ybXxhc2NlbnR8YXR0cmlidXRlTmFtZXxhdHRyaWJ1dGVUeXBlfGF1dG9SZXZlcnNlfGF6aW11dGh8YmFzZUZyZXF1ZW5jeXxiYXNlbGluZVNoaWZ0fGJhc2VQcm9maWxlfGJib3h8YmVnaW58Ymlhc3xieXxjYWxjTW9kZXxjYXBIZWlnaHR8Y2xpcHxjbGlwUGF0aFVuaXRzfGNsaXBQYXRofGNsaXBSdWxlfGNvbG9ySW50ZXJwb2xhdGlvbnxjb2xvckludGVycG9sYXRpb25GaWx0ZXJzfGNvbG9yUHJvZmlsZXxjb2xvclJlbmRlcmluZ3xjb250ZW50U2NyaXB0VHlwZXxjb250ZW50U3R5bGVUeXBlfGN1cnNvcnxjeHxjeXxkfGRlY2VsZXJhdGV8ZGVzY2VudHxkaWZmdXNlQ29uc3RhbnR8ZGlyZWN0aW9ufGRpc3BsYXl8ZGl2aXNvcnxkb21pbmFudEJhc2VsaW5lfGR1cnxkeHxkeXxlZGdlTW9kZXxlbGV2YXRpb258ZW5hYmxlQmFja2dyb3VuZHxlbmR8ZXhwb25lbnR8ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZHxmaWxsfGZpbGxPcGFjaXR5fGZpbGxSdWxlfGZpbHRlcnxmaWx0ZXJSZXN8ZmlsdGVyVW5pdHN8Zmxvb2RDb2xvcnxmbG9vZE9wYWNpdHl8Zm9jdXNhYmxlfGZvbnRGYW1pbHl8Zm9udFNpemV8Zm9udFNpemVBZGp1c3R8Zm9udFN0cmV0Y2h8Zm9udFN0eWxlfGZvbnRWYXJpYW50fGZvbnRXZWlnaHR8Zm9ybWF0fGZyb218ZnJ8Znh8Znl8ZzF8ZzJ8Z2x5cGhOYW1lfGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsfGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbHxnbHlwaFJlZnxncmFkaWVudFRyYW5zZm9ybXxncmFkaWVudFVuaXRzfGhhbmdpbmd8aG9yaXpBZHZYfGhvcml6T3JpZ2luWHxpZGVvZ3JhcGhpY3xpbWFnZVJlbmRlcmluZ3xpbnxpbjJ8aW50ZXJjZXB0fGt8azF8azJ8azN8azR8a2VybmVsTWF0cml4fGtlcm5lbFVuaXRMZW5ndGh8a2VybmluZ3xrZXlQb2ludHN8a2V5U3BsaW5lc3xrZXlUaW1lc3xsZW5ndGhBZGp1c3R8bGV0dGVyU3BhY2luZ3xsaWdodGluZ0NvbG9yfGxpbWl0aW5nQ29uZUFuZ2xlfGxvY2FsfG1hcmtlckVuZHxtYXJrZXJNaWR8bWFya2VyU3RhcnR8bWFya2VySGVpZ2h0fG1hcmtlclVuaXRzfG1hcmtlcldpZHRofG1hc2t8bWFza0NvbnRlbnRVbml0c3xtYXNrVW5pdHN8bWF0aGVtYXRpY2FsfG1vZGV8bnVtT2N0YXZlc3xvZmZzZXR8b3BhY2l0eXxvcGVyYXRvcnxvcmRlcnxvcmllbnR8b3JpZW50YXRpb258b3JpZ2lufG92ZXJmbG93fG92ZXJsaW5lUG9zaXRpb258b3ZlcmxpbmVUaGlja25lc3N8cGFub3NlMXxwYWludE9yZGVyfHBhdGhMZW5ndGh8cGF0dGVybkNvbnRlbnRVbml0c3xwYXR0ZXJuVHJhbnNmb3JtfHBhdHRlcm5Vbml0c3xwb2ludGVyRXZlbnRzfHBvaW50c3xwb2ludHNBdFh8cG9pbnRzQXRZfHBvaW50c0F0WnxwcmVzZXJ2ZUFscGhhfHByZXNlcnZlQXNwZWN0UmF0aW98cHJpbWl0aXZlVW5pdHN8cnxyYWRpdXN8cmVmWHxyZWZZfHJlbmRlcmluZ0ludGVudHxyZXBlYXRDb3VudHxyZXBlYXREdXJ8cmVxdWlyZWRFeHRlbnNpb25zfHJlcXVpcmVkRmVhdHVyZXN8cmVzdGFydHxyZXN1bHR8cm90YXRlfHJ4fHJ5fHNjYWxlfHNlZWR8c2hhcGVSZW5kZXJpbmd8c2xvcGV8c3BhY2luZ3xzcGVjdWxhckNvbnN0YW50fHNwZWN1bGFyRXhwb25lbnR8c3BlZWR8c3ByZWFkTWV0aG9kfHN0YXJ0T2Zmc2V0fHN0ZERldmlhdGlvbnxzdGVtaHxzdGVtdnxzdGl0Y2hUaWxlc3xzdG9wQ29sb3J8c3RvcE9wYWNpdHl8c3RyaWtldGhyb3VnaFBvc2l0aW9ufHN0cmlrZXRocm91Z2hUaGlja25lc3N8c3RyaW5nfHN0cm9rZXxzdHJva2VEYXNoYXJyYXl8c3Ryb2tlRGFzaG9mZnNldHxzdHJva2VMaW5lY2FwfHN0cm9rZUxpbmVqb2lufHN0cm9rZU1pdGVybGltaXR8c3Ryb2tlT3BhY2l0eXxzdHJva2VXaWR0aHxzdXJmYWNlU2NhbGV8c3lzdGVtTGFuZ3VhZ2V8dGFibGVWYWx1ZXN8dGFyZ2V0WHx0YXJnZXRZfHRleHRBbmNob3J8dGV4dERlY29yYXRpb258dGV4dFJlbmRlcmluZ3x0ZXh0TGVuZ3RofHRvfHRyYW5zZm9ybXx1MXx1Mnx1bmRlcmxpbmVQb3NpdGlvbnx1bmRlcmxpbmVUaGlja25lc3N8dW5pY29kZXx1bmljb2RlQmlkaXx1bmljb2RlUmFuZ2V8dW5pdHNQZXJFbXx2QWxwaGFiZXRpY3x2SGFuZ2luZ3x2SWRlb2dyYXBoaWN8dk1hdGhlbWF0aWNhbHx2YWx1ZXN8dmVjdG9yRWZmZWN0fHZlcnNpb258dmVydEFkdll8dmVydE9yaWdpblh8dmVydE9yaWdpbll8dmlld0JveHx2aWV3VGFyZ2V0fHZpc2liaWxpdHl8d2lkdGhzfHdvcmRTcGFjaW5nfHdyaXRpbmdNb2RlfHh8eEhlaWdodHx4MXx4Mnx4Q2hhbm5lbFNlbGVjdG9yfHhsaW5rQWN0dWF0ZXx4bGlua0FyY3JvbGV8eGxpbmtIcmVmfHhsaW5rUm9sZXx4bGlua1Nob3d8eGxpbmtUaXRsZXx4bGlua1R5cGV8eG1sQmFzZXx4bWxuc3x4bWxuc1hsaW5rfHhtbExhbmd8eG1sU3BhY2V8eXx5MXx5Mnx5Q2hhbm5lbFNlbGVjdG9yfHp8em9vbUFuZFBhbnxmb3J8Y2xhc3N8YXV0b2ZvY3VzKXwoKFtEZF1bQWFdW1R0XVtBYV18W0FhXVtScl1bSWldW0FhXXx4KS0uKikpJC87IC8vIGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNWJmZWU2OGE0Y2Q3ZTYwMDllZjYxZDIzXG5cbnZhciBpc1Byb3BWYWxpZCA9IC8qICNfX1BVUkVfXyAqL21lbW9pemUoZnVuY3Rpb24gKHByb3ApIHtcbiAgcmV0dXJuIHJlYWN0UHJvcHNSZWdleC50ZXN0KHByb3ApIHx8IHByb3AuY2hhckNvZGVBdCgwKSA9PT0gMTExXG4gIC8qIG8gKi9cbiAgJiYgcHJvcC5jaGFyQ29kZUF0KDEpID09PSAxMTBcbiAgLyogbiAqL1xuICAmJiBwcm9wLmNoYXJDb2RlQXQoMikgPCA5MTtcbn1cbi8qIForMSAqL1xuKTtcblxuZXhwb3J0IHsgaXNQcm9wVmFsaWQgYXMgZGVmYXVsdCB9O1xuIiwiZnVuY3Rpb24gbWVtb2l6ZShmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIGlmIChjYWNoZVthcmddID09PSB1bmRlZmluZWQpIGNhY2hlW2FyZ10gPSBmbihhcmcpO1xuICAgIHJldHVybiBjYWNoZVthcmddO1xuICB9O1xufVxuXG5leHBvcnQgeyBtZW1vaXplIGFzIGRlZmF1bHQgfTtcbiIsInZhciB1bml0bGVzc0tleXMgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiAxLFxuICBhc3BlY3RSYXRpbzogMSxcbiAgYm9yZGVySW1hZ2VPdXRzZXQ6IDEsXG4gIGJvcmRlckltYWdlU2xpY2U6IDEsXG4gIGJvcmRlckltYWdlV2lkdGg6IDEsXG4gIGJveEZsZXg6IDEsXG4gIGJveEZsZXhHcm91cDogMSxcbiAgYm94T3JkaW5hbEdyb3VwOiAxLFxuICBjb2x1bW5Db3VudDogMSxcbiAgY29sdW1uczogMSxcbiAgZmxleDogMSxcbiAgZmxleEdyb3c6IDEsXG4gIGZsZXhQb3NpdGl2ZTogMSxcbiAgZmxleFNocmluazogMSxcbiAgZmxleE5lZ2F0aXZlOiAxLFxuICBmbGV4T3JkZXI6IDEsXG4gIGdyaWRSb3c6IDEsXG4gIGdyaWRSb3dFbmQ6IDEsXG4gIGdyaWRSb3dTcGFuOiAxLFxuICBncmlkUm93U3RhcnQ6IDEsXG4gIGdyaWRDb2x1bW46IDEsXG4gIGdyaWRDb2x1bW5FbmQ6IDEsXG4gIGdyaWRDb2x1bW5TcGFuOiAxLFxuICBncmlkQ29sdW1uU3RhcnQ6IDEsXG4gIG1zR3JpZFJvdzogMSxcbiAgbXNHcmlkUm93U3BhbjogMSxcbiAgbXNHcmlkQ29sdW1uOiAxLFxuICBtc0dyaWRDb2x1bW5TcGFuOiAxLFxuICBmb250V2VpZ2h0OiAxLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBvcGFjaXR5OiAxLFxuICBvcmRlcjogMSxcbiAgb3JwaGFuczogMSxcbiAgdGFiU2l6ZTogMSxcbiAgd2lkb3dzOiAxLFxuICB6SW5kZXg6IDEsXG4gIHpvb206IDEsXG4gIFdlYmtpdExpbmVDbGFtcDogMSxcbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTogMSxcbiAgZmxvb2RPcGFjaXR5OiAxLFxuICBzdG9wT3BhY2l0eTogMSxcbiAgc3Ryb2tlRGFzaGFycmF5OiAxLFxuICBzdHJva2VEYXNob2Zmc2V0OiAxLFxuICBzdHJva2VNaXRlcmxpbWl0OiAxLFxuICBzdHJva2VPcGFjaXR5OiAxLFxuICBzdHJva2VXaWR0aDogMVxufTtcblxuZXhwb3J0IHsgdW5pdGxlc3NLZXlzIGFzIGRlZmF1bHQgfTtcbiIsIi8qIVxuXHRhdXRvc2l6ZSA0LjAuNFxuXHRsaWNlbnNlOiBNSVRcblx0aHR0cDovL3d3dy5qYWNrbG1vb3JlLmNvbS9hdXRvc2l6ZVxuKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdGRlZmluZShbJ21vZHVsZScsICdleHBvcnRzJ10sIGZhY3RvcnkpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0ZmFjdG9yeShtb2R1bGUsIGV4cG9ydHMpO1xuXHR9IGVsc2Uge1xuXHRcdHZhciBtb2QgPSB7XG5cdFx0XHRleHBvcnRzOiB7fVxuXHRcdH07XG5cdFx0ZmFjdG9yeShtb2QsIG1vZC5leHBvcnRzKTtcblx0XHRnbG9iYWwuYXV0b3NpemUgPSBtb2QuZXhwb3J0cztcblx0fVxufSkodGhpcywgZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIG1hcCA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiA/IG5ldyBNYXAoKSA6IGZ1bmN0aW9uICgpIHtcblx0XHR2YXIga2V5cyA9IFtdO1xuXHRcdHZhciB2YWx1ZXMgPSBbXTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcblx0XHRcdFx0cmV0dXJuIGtleXMuaW5kZXhPZihrZXkpID4gLTE7XG5cdFx0XHR9LFxuXHRcdFx0Z2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG5cdFx0XHRcdHJldHVybiB2YWx1ZXNba2V5cy5pbmRleE9mKGtleSldO1xuXHRcdFx0fSxcblx0XHRcdHNldDogZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUpIHtcblx0XHRcdFx0aWYgKGtleXMuaW5kZXhPZihrZXkpID09PSAtMSkge1xuXHRcdFx0XHRcdGtleXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdHZhbHVlcy5wdXNoKHZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZTogZnVuY3Rpb24gX2RlbGV0ZShrZXkpIHtcblx0XHRcdFx0dmFyIGluZGV4ID0ga2V5cy5pbmRleE9mKGtleSk7XG5cdFx0XHRcdGlmIChpbmRleCA+IC0xKSB7XG5cdFx0XHRcdFx0a2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0XHRcdHZhbHVlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fSgpO1xuXG5cdHZhciBjcmVhdGVFdmVudCA9IGZ1bmN0aW9uIGNyZWF0ZUV2ZW50KG5hbWUpIHtcblx0XHRyZXR1cm4gbmV3IEV2ZW50KG5hbWUsIHsgYnViYmxlczogdHJ1ZSB9KTtcblx0fTtcblx0dHJ5IHtcblx0XHRuZXcgRXZlbnQoJ3Rlc3QnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdC8vIElFIGRvZXMgbm90IHN1cHBvcnQgYG5ldyBFdmVudCgpYFxuXHRcdGNyZWF0ZUV2ZW50ID0gZnVuY3Rpb24gY3JlYXRlRXZlbnQobmFtZSkge1xuXHRcdFx0dmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdFx0ZXZ0LmluaXRFdmVudChuYW1lLCB0cnVlLCBmYWxzZSk7XG5cdFx0XHRyZXR1cm4gZXZ0O1xuXHRcdH07XG5cdH1cblxuXHRmdW5jdGlvbiBhc3NpZ24odGEpIHtcblx0XHRpZiAoIXRhIHx8ICF0YS5ub2RlTmFtZSB8fCB0YS5ub2RlTmFtZSAhPT0gJ1RFWFRBUkVBJyB8fCBtYXAuaGFzKHRhKSkgcmV0dXJuO1xuXG5cdFx0dmFyIGhlaWdodE9mZnNldCA9IG51bGw7XG5cdFx0dmFyIGNsaWVudFdpZHRoID0gbnVsbDtcblx0XHR2YXIgY2FjaGVkSGVpZ2h0ID0gbnVsbDtcblxuXHRcdGZ1bmN0aW9uIGluaXQoKSB7XG5cdFx0XHR2YXIgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YSwgbnVsbCk7XG5cblx0XHRcdGlmIChzdHlsZS5yZXNpemUgPT09ICd2ZXJ0aWNhbCcpIHtcblx0XHRcdFx0dGEuc3R5bGUucmVzaXplID0gJ25vbmUnO1xuXHRcdFx0fSBlbHNlIGlmIChzdHlsZS5yZXNpemUgPT09ICdib3RoJykge1xuXHRcdFx0XHR0YS5zdHlsZS5yZXNpemUgPSAnaG9yaXpvbnRhbCc7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzdHlsZS5ib3hTaXppbmcgPT09ICdjb250ZW50LWJveCcpIHtcblx0XHRcdFx0aGVpZ2h0T2Zmc2V0ID0gLShwYXJzZUZsb2F0KHN0eWxlLnBhZGRpbmdUb3ApICsgcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nQm90dG9tKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoZWlnaHRPZmZzZXQgPSBwYXJzZUZsb2F0KHN0eWxlLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlRmxvYXQoc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gRml4IHdoZW4gYSB0ZXh0YXJlYSBpcyBub3Qgb24gZG9jdW1lbnQgYm9keSBhbmQgaGVpZ2h0T2Zmc2V0IGlzIE5vdCBhIE51bWJlclxuXHRcdFx0aWYgKGlzTmFOKGhlaWdodE9mZnNldCkpIHtcblx0XHRcdFx0aGVpZ2h0T2Zmc2V0ID0gMDtcblx0XHRcdH1cblxuXHRcdFx0dXBkYXRlKCk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gY2hhbmdlT3ZlcmZsb3codmFsdWUpIHtcblx0XHRcdHtcblx0XHRcdFx0Ly8gQ2hyb21lL1NhZmFyaS1zcGVjaWZpYyBmaXg6XG5cdFx0XHRcdC8vIFdoZW4gdGhlIHRleHRhcmVhIHktb3ZlcmZsb3cgaXMgaGlkZGVuLCBDaHJvbWUvU2FmYXJpIGRvIG5vdCByZWZsb3cgdGhlIHRleHQgdG8gYWNjb3VudCBmb3IgdGhlIHNwYWNlXG5cdFx0XHRcdC8vIG1hZGUgYXZhaWxhYmxlIGJ5IHJlbW92aW5nIHRoZSBzY3JvbGxiYXIuIFRoZSBmb2xsb3dpbmcgZm9yY2VzIHRoZSBuZWNlc3NhcnkgdGV4dCByZWZsb3cuXG5cdFx0XHRcdHZhciB3aWR0aCA9IHRhLnN0eWxlLndpZHRoO1xuXHRcdFx0XHR0YS5zdHlsZS53aWR0aCA9ICcwcHgnO1xuXHRcdFx0XHQvLyBGb3JjZSByZWZsb3c6XG5cdFx0XHRcdC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cblx0XHRcdFx0dGEub2Zmc2V0V2lkdGg7XG5cdFx0XHRcdC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cdFx0XHRcdHRhLnN0eWxlLndpZHRoID0gd2lkdGg7XG5cdFx0XHR9XG5cblx0XHRcdHRhLnN0eWxlLm92ZXJmbG93WSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGdldFBhcmVudE92ZXJmbG93cyhlbCkge1xuXHRcdFx0dmFyIGFyciA9IFtdO1xuXG5cdFx0XHR3aGlsZSAoZWwgJiYgZWwucGFyZW50Tm9kZSAmJiBlbC5wYXJlbnROb2RlIGluc3RhbmNlb2YgRWxlbWVudCkge1xuXHRcdFx0XHRpZiAoZWwucGFyZW50Tm9kZS5zY3JvbGxUb3ApIHtcblx0XHRcdFx0XHRhcnIucHVzaCh7XG5cdFx0XHRcdFx0XHRub2RlOiBlbC5wYXJlbnROb2RlLFxuXHRcdFx0XHRcdFx0c2Nyb2xsVG9wOiBlbC5wYXJlbnROb2RlLnNjcm9sbFRvcFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsID0gZWwucGFyZW50Tm9kZTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGFycjtcblx0XHR9XG5cblx0XHRmdW5jdGlvbiByZXNpemUoKSB7XG5cdFx0XHRpZiAodGEuc2Nyb2xsSGVpZ2h0ID09PSAwKSB7XG5cdFx0XHRcdC8vIElmIHRoZSBzY3JvbGxIZWlnaHQgaXMgMCwgdGhlbiB0aGUgZWxlbWVudCBwcm9iYWJseSBoYXMgZGlzcGxheTpub25lIG9yIGlzIGRldGFjaGVkIGZyb20gdGhlIERPTS5cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgb3ZlcmZsb3dzID0gZ2V0UGFyZW50T3ZlcmZsb3dzKHRhKTtcblx0XHRcdHZhciBkb2NUb3AgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDsgLy8gTmVlZGVkIGZvciBNb2JpbGUgSUUgKHRpY2tldCAjMjQwKVxuXG5cdFx0XHR0YS5zdHlsZS5oZWlnaHQgPSAnJztcblx0XHRcdHRhLnN0eWxlLmhlaWdodCA9IHRhLnNjcm9sbEhlaWdodCArIGhlaWdodE9mZnNldCArICdweCc7XG5cblx0XHRcdC8vIHVzZWQgdG8gY2hlY2sgaWYgYW4gdXBkYXRlIGlzIGFjdHVhbGx5IG5lY2Vzc2FyeSBvbiB3aW5kb3cucmVzaXplXG5cdFx0XHRjbGllbnRXaWR0aCA9IHRhLmNsaWVudFdpZHRoO1xuXG5cdFx0XHQvLyBwcmV2ZW50cyBzY3JvbGwtcG9zaXRpb24ganVtcGluZ1xuXHRcdFx0b3ZlcmZsb3dzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG5cdFx0XHRcdGVsLm5vZGUuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsVG9wO1xuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChkb2NUb3ApIHtcblx0XHRcdFx0ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA9IGRvY1RvcDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmdW5jdGlvbiB1cGRhdGUoKSB7XG5cdFx0XHRyZXNpemUoKTtcblxuXHRcdFx0dmFyIHN0eWxlSGVpZ2h0ID0gTWF0aC5yb3VuZChwYXJzZUZsb2F0KHRhLnN0eWxlLmhlaWdodCkpO1xuXHRcdFx0dmFyIGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGEsIG51bGwpO1xuXG5cdFx0XHQvLyBVc2luZyBvZmZzZXRIZWlnaHQgYXMgYSByZXBsYWNlbWVudCBmb3IgY29tcHV0ZWQuaGVpZ2h0IGluIElFLCBiZWNhdXNlIElFIGRvZXMgbm90IGFjY291bnQgdXNlIG9mIGJvcmRlci1ib3hcblx0XHRcdHZhciBhY3R1YWxIZWlnaHQgPSBjb21wdXRlZC5ib3hTaXppbmcgPT09ICdjb250ZW50LWJveCcgPyBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoY29tcHV0ZWQuaGVpZ2h0KSkgOiB0YS5vZmZzZXRIZWlnaHQ7XG5cblx0XHRcdC8vIFRoZSBhY3R1YWwgaGVpZ2h0IG5vdCBtYXRjaGluZyB0aGUgc3R5bGUgaGVpZ2h0IChzZXQgdmlhIHRoZSByZXNpemUgbWV0aG9kKSBpbmRpY2F0ZXMgdGhhdCBcblx0XHRcdC8vIHRoZSBtYXgtaGVpZ2h0IGhhcyBiZWVuIGV4Y2VlZGVkLCBpbiB3aGljaCBjYXNlIHRoZSBvdmVyZmxvdyBzaG91bGQgYmUgYWxsb3dlZC5cblx0XHRcdGlmIChhY3R1YWxIZWlnaHQgPCBzdHlsZUhlaWdodCkge1xuXHRcdFx0XHRpZiAoY29tcHV0ZWQub3ZlcmZsb3dZID09PSAnaGlkZGVuJykge1xuXHRcdFx0XHRcdGNoYW5nZU92ZXJmbG93KCdzY3JvbGwnKTtcblx0XHRcdFx0XHRyZXNpemUoKTtcblx0XHRcdFx0XHRhY3R1YWxIZWlnaHQgPSBjb21wdXRlZC5ib3hTaXppbmcgPT09ICdjb250ZW50LWJveCcgPyBNYXRoLnJvdW5kKHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGEsIG51bGwpLmhlaWdodCkpIDogdGEub2Zmc2V0SGVpZ2h0O1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBOb3JtYWxseSBrZWVwIG92ZXJmbG93IHNldCB0byBoaWRkZW4sIHRvIGF2b2lkIGZsYXNoIG9mIHNjcm9sbGJhciBhcyB0aGUgdGV4dGFyZWEgZXhwYW5kcy5cblx0XHRcdFx0aWYgKGNvbXB1dGVkLm92ZXJmbG93WSAhPT0gJ2hpZGRlbicpIHtcblx0XHRcdFx0XHRjaGFuZ2VPdmVyZmxvdygnaGlkZGVuJyk7XG5cdFx0XHRcdFx0cmVzaXplKCk7XG5cdFx0XHRcdFx0YWN0dWFsSGVpZ2h0ID0gY29tcHV0ZWQuYm94U2l6aW5nID09PSAnY29udGVudC1ib3gnID8gTWF0aC5yb3VuZChwYXJzZUZsb2F0KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhLCBudWxsKS5oZWlnaHQpKSA6IHRhLm9mZnNldEhlaWdodDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2FjaGVkSGVpZ2h0ICE9PSBhY3R1YWxIZWlnaHQpIHtcblx0XHRcdFx0Y2FjaGVkSGVpZ2h0ID0gYWN0dWFsSGVpZ2h0O1xuXHRcdFx0XHR2YXIgZXZ0ID0gY3JlYXRlRXZlbnQoJ2F1dG9zaXplOnJlc2l6ZWQnKTtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR0YS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdC8vIEZpcmVmb3ggd2lsbCB0aHJvdyBhbiBlcnJvciBvbiBkaXNwYXRjaEV2ZW50IGZvciBhIGRldGFjaGVkIGVsZW1lbnRcblx0XHRcdFx0XHQvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkzNzZcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHZhciBwYWdlUmVzaXplID0gZnVuY3Rpb24gcGFnZVJlc2l6ZSgpIHtcblx0XHRcdGlmICh0YS5jbGllbnRXaWR0aCAhPT0gY2xpZW50V2lkdGgpIHtcblx0XHRcdFx0dXBkYXRlKCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHZhciBkZXN0cm95ID0gZnVuY3Rpb24gKHN0eWxlKSB7XG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcGFnZVJlc2l6ZSwgZmFsc2UpO1xuXHRcdFx0dGEucmVtb3ZlRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB1cGRhdGUsIGZhbHNlKTtcblx0XHRcdHRhLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdXBkYXRlLCBmYWxzZSk7XG5cdFx0XHR0YS5yZW1vdmVFdmVudExpc3RlbmVyKCdhdXRvc2l6ZTpkZXN0cm95JywgZGVzdHJveSwgZmFsc2UpO1xuXHRcdFx0dGEucmVtb3ZlRXZlbnRMaXN0ZW5lcignYXV0b3NpemU6dXBkYXRlJywgdXBkYXRlLCBmYWxzZSk7XG5cblx0XHRcdE9iamVjdC5rZXlzKHN0eWxlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0dGEuc3R5bGVba2V5XSA9IHN0eWxlW2tleV07XG5cdFx0XHR9KTtcblxuXHRcdFx0bWFwLmRlbGV0ZSh0YSk7XG5cdFx0fS5iaW5kKHRhLCB7XG5cdFx0XHRoZWlnaHQ6IHRhLnN0eWxlLmhlaWdodCxcblx0XHRcdHJlc2l6ZTogdGEuc3R5bGUucmVzaXplLFxuXHRcdFx0b3ZlcmZsb3dZOiB0YS5zdHlsZS5vdmVyZmxvd1ksXG5cdFx0XHRvdmVyZmxvd1g6IHRhLnN0eWxlLm92ZXJmbG93WCxcblx0XHRcdHdvcmRXcmFwOiB0YS5zdHlsZS53b3JkV3JhcFxuXHRcdH0pO1xuXG5cdFx0dGEuYWRkRXZlbnRMaXN0ZW5lcignYXV0b3NpemU6ZGVzdHJveScsIGRlc3Ryb3ksIGZhbHNlKTtcblxuXHRcdC8vIElFOSBkb2VzIG5vdCBmaXJlIG9ucHJvcGVydHljaGFuZ2Ugb3Igb25pbnB1dCBmb3IgZGVsZXRpb25zLFxuXHRcdC8vIHNvIGJpbmRpbmcgdG8gb25rZXl1cCB0byBjYXRjaCBtb3N0IG9mIHRob3NlIGV2ZW50cy5cblx0XHQvLyBUaGVyZSBpcyBubyB3YXkgdGhhdCBJIGtub3cgb2YgdG8gZGV0ZWN0IHNvbWV0aGluZyBsaWtlICdjdXQnIGluIElFOS5cblx0XHRpZiAoJ29ucHJvcGVydHljaGFuZ2UnIGluIHRhICYmICdvbmlucHV0JyBpbiB0YSkge1xuXHRcdFx0dGEuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB1cGRhdGUsIGZhbHNlKTtcblx0XHR9XG5cblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcGFnZVJlc2l6ZSwgZmFsc2UpO1xuXHRcdHRhLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdXBkYXRlLCBmYWxzZSk7XG5cdFx0dGEuYWRkRXZlbnRMaXN0ZW5lcignYXV0b3NpemU6dXBkYXRlJywgdXBkYXRlLCBmYWxzZSk7XG5cdFx0dGEuc3R5bGUub3ZlcmZsb3dYID0gJ2hpZGRlbic7XG5cdFx0dGEuc3R5bGUud29yZFdyYXAgPSAnYnJlYWstd29yZCc7XG5cblx0XHRtYXAuc2V0KHRhLCB7XG5cdFx0XHRkZXN0cm95OiBkZXN0cm95LFxuXHRcdFx0dXBkYXRlOiB1cGRhdGVcblx0XHR9KTtcblxuXHRcdGluaXQoKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGRlc3Ryb3kodGEpIHtcblx0XHR2YXIgbWV0aG9kcyA9IG1hcC5nZXQodGEpO1xuXHRcdGlmIChtZXRob2RzKSB7XG5cdFx0XHRtZXRob2RzLmRlc3Ryb3koKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiB1cGRhdGUodGEpIHtcblx0XHR2YXIgbWV0aG9kcyA9IG1hcC5nZXQodGEpO1xuXHRcdGlmIChtZXRob2RzKSB7XG5cdFx0XHRtZXRob2RzLnVwZGF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHZhciBhdXRvc2l6ZSA9IG51bGw7XG5cblx0Ly8gRG8gbm90aGluZyBpbiBOb2RlLmpzIGVudmlyb25tZW50IGFuZCBJRTggKG9yIGxvd2VyKVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0YXV0b3NpemUgPSBmdW5jdGlvbiBhdXRvc2l6ZShlbCkge1xuXHRcdFx0cmV0dXJuIGVsO1xuXHRcdH07XG5cdFx0YXV0b3NpemUuZGVzdHJveSA9IGZ1bmN0aW9uIChlbCkge1xuXHRcdFx0cmV0dXJuIGVsO1xuXHRcdH07XG5cdFx0YXV0b3NpemUudXBkYXRlID0gZnVuY3Rpb24gKGVsKSB7XG5cdFx0XHRyZXR1cm4gZWw7XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRhdXRvc2l6ZSA9IGZ1bmN0aW9uIGF1dG9zaXplKGVsLCBvcHRpb25zKSB7XG5cdFx0XHRpZiAoZWwpIHtcblx0XHRcdFx0QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlbC5sZW5ndGggPyBlbCA6IFtlbF0sIGZ1bmN0aW9uICh4KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFzc2lnbih4LCBvcHRpb25zKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZWw7XG5cdFx0fTtcblx0XHRhdXRvc2l6ZS5kZXN0cm95ID0gZnVuY3Rpb24gKGVsKSB7XG5cdFx0XHRpZiAoZWwpIHtcblx0XHRcdFx0QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlbC5sZW5ndGggPyBlbCA6IFtlbF0sIGRlc3Ryb3kpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGVsO1xuXHRcdH07XG5cdFx0YXV0b3NpemUudXBkYXRlID0gZnVuY3Rpb24gKGVsKSB7XG5cdFx0XHRpZiAoZWwpIHtcblx0XHRcdFx0QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlbC5sZW5ndGggPyBlbCA6IFtlbF0sIHVwZGF0ZSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZWw7XG5cdFx0fTtcblx0fVxuXG5cdGV4cG9ydHMuZGVmYXVsdCA9IGF1dG9zaXplO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbn0pOyIsIi8vIERFVjogV2UgZG9uJ3QgdXNlIHZhciBidXQgZmF2b3IgcGFyYW1ldGVycyBzaW5jZSB0aGVzZSBwbGF5IG5pY2VyIHdpdGggbWluaWZpY2F0aW9uXG5mdW5jdGlvbiBjb21wdXRlZFN0eWxlKGVsLCBwcm9wLCBnZXRDb21wdXRlZFN0eWxlLCBzdHlsZSkge1xuICBnZXRDb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGU7XG4gIHN0eWxlID1cbiAgICAgIC8vIElmIHdlIGhhdmUgZ2V0Q29tcHV0ZWRTdHlsZVxuICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSA/XG4gICAgICAgIC8vIFF1ZXJ5IGl0XG4gICAgICAgIC8vIFRPRE86IEZyb20gQ1NTLVF1ZXJ5IG5vdGVzLCB3ZSBtaWdodCBuZWVkIChub2RlLCBudWxsKSBmb3IgRkZcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShlbCkgOlxuXG4gICAgICAvLyBPdGhlcndpc2UsIHdlIGFyZSBpbiBJRSBhbmQgdXNlIGN1cnJlbnRTdHlsZVxuICAgICAgICBlbC5jdXJyZW50U3R5bGU7XG4gIGlmIChzdHlsZSkge1xuICAgIHJldHVybiBzdHlsZVxuICAgIFtcbiAgICAgIC8vIFN3aXRjaCB0byBjYW1lbENhc2UgZm9yIENTU09NXG4gICAgICAvLyBERVY6IEdyYWJiZWQgZnJvbSBqUXVlcnlcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvMS45LXN0YWJsZS9zcmMvY3NzLmpzI0wxOTEtTDE5NFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi8xLjktc3RhYmxlL3NyYy9jb3JlLmpzI0w1OTMtTDU5N1xuICAgICAgcHJvcC5yZXBsYWNlKC8tKFxcdykvZ2ksIGZ1bmN0aW9uICh3b3JkLCBsZXR0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xuICAgICAgfSlcbiAgICBdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcHV0ZWRTdHlsZTtcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1VYnVudHUpO1wiXSk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYEBjaGFyc2V0IFwiVVRGLThcIjtcbi53ZWJvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJkNiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0IHtcbiAgY29sb3I6ICMwMDYyZDYgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDYyZDYgIWltcG9ydGFudDtcbn1cblxuLndlYm8uc2Vjb25kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNzdGQSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtc2Vjb25kIHtcbiAgY29sb3I6ICMwMDc3RkEgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtc2Vjb25kIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N0ZBICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLnRoaXJkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA5YmRkZCAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtdGhpcmQge1xuICBjb2xvcjogIzA5YmRkZCAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy10aGlyZCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA5YmRkZCAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5mb3VydGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2JlN2ZlICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC1mb3VydGgge1xuICBjb2xvcjogI2NiZTdmZSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy1mb3VydGggLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmUgIWltcG9ydGFudDtcbn1cblxuLndlYm8ubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JiZGVmYiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNiYmRlZmIgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmJkZWZiICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjUgIWltcG9ydGFudDtcbn1cblxuLndlYm8tdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogIzc5ODZjYiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcbn1cblxuLndlYm8ubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxMmRhOCAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICM1MTJkYTggIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTEyZGE4ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcbn1cblxuLndlYm8tdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4MzU5MyAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMDE4MWUgIWltcG9ydGFudDtcbn1cblxuLndlYm8tdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICNkMDE4MWUgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMDE4MWUgIWltcG9ydGFudDtcbn1cblxuLndlYm8uZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjkxNTFiICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjYjkxNTFiICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjkxNTFiICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2EyMTMxOCAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogI2EyMTMxOCAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2EyMTMxOCAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5iLSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0OWNlNWYgIWltcG9ydGFudDtcbn1cblxuLndlYm8tdGV4dC50ZXh0LWItIHtcbiAgY29sb3I6ICM0OWNlNWYgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtYi0gLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0OWNlNWYgIWltcG9ydGFudDtcbn1cblxuLndlYm8uZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGIxMDE0ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjOGIxMDE0ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGIxMDE0ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dCB7XG4gIGNvbG9yOiAjZjQ0MzM2ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzYgIWltcG9ydGFudDtcbn1cblxuLnJlZC5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYmVlICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZmZlYmVlICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYmVlICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2RkMiAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2ZmY2RkMiAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2RkMiAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjlhOWEgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNlZjlhOWEgIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjlhOWEgIWltcG9ydGFudDtcbn1cblxuLnJlZC5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTU3MzczICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjZTU3MzczICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTU3MzczICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmNTM1MCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogI2VmNTM1MCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmNTM1MCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MzkzNSAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjZTUzOTM1ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTM5MzUgIWltcG9ydGFudDtcbn1cblxuLnJlZC5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMzJmMmYgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogI2QzMmYyZiAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDMyZjJmICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzYyODI4ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICNjNjI4MjggIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2MjgyOCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I3MWMxYyAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjYjcxYzFjICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiNzFjMWMgIWltcG9ydGFudDtcbn1cblxuLnJlZC5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhhODAgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2ZmOGE4MCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY4YTgwICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICNmZjUyNTIgIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MiAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMTc0NCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjZmYxNzQ0ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjE3NDQgIWltcG9ydGFudDtcbn1cblxuLnJlZC5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNTAwMDAgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogI2Q1MDAwMCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDUwMDAwICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5MWU2MyAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0IHtcbiAgY29sb3I6ICNlOTFlNjMgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOTFlNjMgIWltcG9ydGFudDtcbn1cblxuLnBpbmsubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZTRlYyAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNmY2U0ZWMgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlNGVjICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGJiZDAgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjZjhiYmQwICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4YmJkMCAhaW1wb3J0YW50O1xufVxuXG4ucGluay5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ4ZmIxICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogI2Y0OGZiMSAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDhmYjEgIWltcG9ydGFudDtcbn1cblxuLnBpbmsubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwNjI5MiAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICNmMDYyOTIgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjA2MjkyICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlYzQwN2EgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjZWM0MDdhICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjNDA3YSAhaW1wb3J0YW50O1xufVxuXG4ucGluay5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkODFiNjAgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICNkODFiNjAgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkODFiNjAgIWltcG9ydGFudDtcbn1cblxuLnBpbmsuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzIxODViICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjYzIxODViICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzIxODViICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FkMTQ1NyAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogI2FkMTQ1NyAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FkMTQ1NyAhaW1wb3J0YW50O1xufVxuXG4ucGluay5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ODBlNGYgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICM4ODBlNGYgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ODBlNGYgIWltcG9ydGFudDtcbn1cblxuLnBpbmsuYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY4MGFiICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjZmY4MGFiICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY4MGFiICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MSAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogI2ZmNDA4MSAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MSAhaW1wb3J0YW50O1xufVxuXG4ucGluay5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTAwNTcgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICNmNTAwNTcgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTAwNTcgIWltcG9ydGFudDtcbn1cblxuLnBpbmsuYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzUxMTYyICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjYzUxMTYyICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzUxMTYyICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWMyN2IwICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dCB7XG4gIGNvbG9yOiAjOWMyN2IwICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5YzI3YjAgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNlNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZjNlNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNlNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxYmVlNyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2UxYmVlNyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxYmVlNyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZTkzZDggIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNjZTkzZDggIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZTkzZDggIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmE2OGM4ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjYmE2OGM4ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmE2OGM4ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FiNDdiYyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogI2FiNDdiYyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FiNDdiYyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhlMjRhYSAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjOGUyNGFhICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ZTI0YWEgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3YjFmYTIgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogIzdiMWZhMiAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2IxZmEyICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmExYjlhICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICM2YTFiOWEgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZhMWI5YSAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRhMTQ4YyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjNGExNDhjICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0YTE0OGMgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlYTgwZmMgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2VhODBmYyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWE4MGZjICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTA0MGZiICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICNlMDQwZmIgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwNDBmYiAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q1MDBmOSAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjZDUwMGY5ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNTAwZjkgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhYTAwZmYgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogI2FhMDBmZiAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWEwMGZmICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NzNhYjcgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQge1xuICBjb2xvcjogIzY3M2FiNyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NzNhYjcgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGU3ZjYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2VkZTdmNiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlN2Y2ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFjNGU5ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNkMWM0ZTkgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QxYzRlOSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzOWRkYiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjYjM5ZGRiICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiMzlkZGIgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NTc1Y2QgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogIzk1NzVjZCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTU3NWNkICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2U1N2MyICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICM3ZTU3YzIgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdlNTdjMiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWUzNWIxICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzVlMzViMSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1ZTM1YjEgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxMmRhOCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICM1MTJkYTggIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTEyZGE4ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NTI3YTAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjNDUyN2EwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ1MjdhMCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzExYjkyICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzMxMWI5MiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTFiOTIgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzODhmZiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICNiMzg4ZmYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjM4OGZmICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3YzRkZmYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjN2M0ZGZmICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdjNGRmZiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUuYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjUxZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogIzY1MWZmZiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NTFmZmYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYyMDBlYSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICM2MjAwZWEgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjIwMGVhICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1ICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dCB7XG4gIGNvbG9yOiAjM2Y1MWI1ICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjUgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlYWY2ICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZThlYWY2ICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlYWY2ICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28ubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M1Y2FlOSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2M1Y2FlOSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M1Y2FlOSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZmE4ZGEgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICM5ZmE4ZGEgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZmE4ZGEgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28ubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjNmJjMCAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogIzVjNmJjMCAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjNmJjMCAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM5NDlhYiAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjMzk0OWFiICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzOTQ5YWIgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDNmOWYgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogIzMwM2Y5ZiAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzZjlmICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28uZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4MzU5MyAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFhMjM3ZSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjMWEyMzdlICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxYTIzN2UgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YzllZmYgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogIzhjOWVmZiAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGM5ZWZmICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28uYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTM2ZGZlICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICM1MzZkZmUgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUzNmRmZSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNkNWFmZSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjM2Q1YWZlICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZDVhZmUgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDRmZmUgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogIzMwNGZmZSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzA0ZmZlICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxOTZmMyAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0IHtcbiAgY29sb3I6ICMyMTk2ZjMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTk2ZjMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzZjJmZCAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNlM2YyZmQgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNmMmZkICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiYmRlZmIgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjYmJkZWZiICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JiZGVmYiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBjYWY5ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogIzkwY2FmOSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5MGNhZjkgIWltcG9ydGFudDtcbn1cblxuLmJsdWUubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0YjVmNiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICM2NGI1ZjYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRiNWY2ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZTg4ZTUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICMxZTg4ZTUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZTg4ZTUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTk3NmQyICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjMTk3NmQyICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTk3NmQyICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE1NjVjMCAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzE1NjVjMCAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE1NjVjMCAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwZDQ3YTEgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICMwZDQ3YTEgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwZDQ3YTEgIWltcG9ydGFudDtcbn1cblxuLmJsdWUuYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODJiMWZmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjODJiMWZmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODJiMWZmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OGFmZiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogIzQ0OGFmZiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OGFmZiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTc5ZmYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICMyOTc5ZmYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTc5ZmYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUuYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk2MmZmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjMjk2MmZmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk2MmZmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzYTlmNCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0IHtcbiAgY29sb3I6ICMwM2E5ZjQgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwM2E5ZjQgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZjVmZSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNlMWY1ZmUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFmNWZlICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiM2U1ZmMgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjYjNlNWZjICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzZTVmYyAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFkNGZhICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogIzgxZDRmYSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MWQ0ZmEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRmYzNmNyAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICM0ZmMzZjcgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGZjM2Y3ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOWI2ZjYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjMjliNmY2ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5YjZmNiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMzliZTUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICMwMzliZTUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMzliZTUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDI4OGQxICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjMDI4OGQxICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDI4OGQxICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAyNzdiZCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzAyNzdiZCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAyNzdiZCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMTU3OWIgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICMwMTU3OWIgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMTU3OWIgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUuYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBkOGZmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjODBkOGZmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBkOGZmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQwYzRmZiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogIzQwYzRmZiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQwYzRmZiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGIwZmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICMwMGIwZmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGIwZmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUuYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MWVhICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjMDA5MWVhICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MWVhICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYmNkNCAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0IHtcbiAgY29sb3I6ICMwMGJjZDQgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGJjZDQgIWltcG9ydGFudDtcbn1cblxuLmN5YW4ubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZjdmYSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNlMGY3ZmEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBmN2ZhICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmViZjIgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjYjJlYmYyICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZWJmMiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBkZWVhICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogIzgwZGVlYSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGRlZWEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4ubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkZDBlMSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICM0ZGQwZTEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRkMGUxICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmM2ZGEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjMjZjNmRhICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YzZkYSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGFjYzEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICMwMGFjYzEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGFjYzEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4uZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5N2E3ICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjMDA5N2E3ICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5N2E3ICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODM4ZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzAwODM4ZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODM4ZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDYwNjQgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICMwMDYwNjQgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDYwNjQgIWltcG9ydGFudDtcbn1cblxuLmN5YW4uYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODRmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjODRmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODRmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4ZmZmZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogIzE4ZmZmZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4ZmZmZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGU1ZmYgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICMwMGU1ZmYgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGU1ZmYgIWltcG9ydGFudDtcbn1cblxuLmN5YW4uYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiOGQ0ICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjMDBiOGQ0ICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiOGQ0ICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTY4OCAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0IHtcbiAgY29sb3I6ICMwMDk2ODggIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDk2ODggIWltcG9ydGFudDtcbn1cblxuLnRlYWwubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZjJmMSAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNlMGYyZjEgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBmMmYxICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmRmZGIgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjYjJkZmRiICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZGZkYiAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBjYmM0ICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogIzgwY2JjNCAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGNiYzQgIWltcG9ydGFudDtcbn1cblxuLnRlYWwubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjZhYyAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICM0ZGI2YWMgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiNmFjICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWEgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjMjZhNjlhICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YSAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDg5N2IgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICMwMDg5N2IgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDg5N2IgIWltcG9ydGFudDtcbn1cblxuLnRlYWwuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3OTZiICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjMDA3OTZiICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3OTZiICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjk1YyAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzAwNjk1YyAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjk1YyAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDRkNDAgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICMwMDRkNDAgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDRkNDAgIWltcG9ydGFudDtcbn1cblxuLnRlYWwuYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTdmZmViICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjYTdmZmViICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTdmZmViICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0ZmZkYSAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogIzY0ZmZkYSAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0ZmZkYSAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGU5YjYgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICMxZGU5YjYgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGU5YjYgIWltcG9ydGFudDtcbn1cblxuLnRlYWwuYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiZmE1ICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjMDBiZmE1ICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiZmE1ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0Y2FmNTAgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQge1xuICBjb2xvcjogIzRjYWY1MCAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0Y2FmNTAgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGY1ZTkgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2U4ZjVlOSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThmNWU5ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhlNmM5ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNjOGU2YzkgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M4ZTZjOSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4ubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E1ZDZhNyAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjYTVkNmE3ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhNWQ2YTcgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MWM3ODQgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogIzgxYzc4NCAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFjNzg0ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjZiYjZhICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICM2NmJiNmEgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY2YmI2YSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4uZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDNhMDQ3ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzQzYTA0NyAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0M2EwNDcgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM4OGUzYyAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICMzODhlM2MgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzg4ZTNjICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZTdkMzIgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjMmU3ZDMyICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJlN2QzMiAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4uZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWI1ZTIwICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzFiNWUyMCAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxYjVlMjAgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I5ZjZjYSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICNiOWY2Y2EgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjlmNmNhICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2OWYwYWUgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjNjlmMGFlICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY5ZjBhZSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4uYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBlNjc2ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogIzAwZTY3NiAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGU2NzYgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MyAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICMwMGM4NTMgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBjODUzICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YmMzNGEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQge1xuICBjb2xvcjogIzhiYzM0YSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YmMzNGEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMWY4ZTkgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2YxZjhlOSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmOGU5ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNlZGM4ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNkY2VkYzggIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZWRjOCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4ubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M1ZTFhNSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjYzVlMWE1ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNWUxYTUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZWQ1ODEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogI2FlZDU4MSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWVkNTgxICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNjYzY1ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICM5Y2NjNjUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzljY2M2NSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4uZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2NiMzQyICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzdjYjM0MiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3Y2IzNDIgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY4OWYzOCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICM2ODlmMzggIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjg5ZjM4ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NThiMmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjNTU4YjJmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1OGIyZiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4uZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM2OTFlICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzMzNjkxZSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMzY5MWUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZmY5MCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICNjY2ZmOTAgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NmZjkwICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmZmNTkgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjYjJmZjU5ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZmY1OSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4uYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzZmZjAzICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogIzc2ZmYwMyAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3NmZmMDMgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0ZGQxNyAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICM2NGRkMTcgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRkZDE3ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NkZGMzOSAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0IHtcbiAgY29sb3I6ICNjZGRjMzkgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZGRjMzkgIWltcG9ydGFudDtcbn1cblxuLmxpbWUubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmJlNyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNmOWZiZTcgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmYmU3ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGY0YzMgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjZjBmNGMzICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjRjMyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlZTljICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogI2U2ZWU5YyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmVlOWMgIWltcG9ydGFudDtcbn1cblxuLmxpbWUubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZTc3NSAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICNkY2U3NzUgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNlNzc1ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNGUxNTcgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjZDRlMTU3ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZTE1NyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjMGNhMzMgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICNjMGNhMzMgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjMGNhMzMgIWltcG9ydGFudDtcbn1cblxuLmxpbWUuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWZiNDJiICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjYWZiNDJiICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWZiNDJiICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWQyNCAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzllOWQyNCAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWQyNCAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4Mjc3MTcgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICM4Mjc3MTcgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4Mjc3MTcgIWltcG9ydGFudDtcbn1cblxuLmxpbWUuYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmZjgxICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjZjRmZjgxICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmZjgxICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZmY0MSAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogI2VlZmY0MSAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZmY0MSAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNmZmMDAgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICNjNmZmMDAgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNmZmMDAgIWltcG9ydGFudDtcbn1cblxuLmxpbWUuYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWVlYTAwICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjYWVlYTAwICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWVlYTAwICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYjNiICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dCB7XG4gIGNvbG9yOiAjZmZlYjNiICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmViM2IgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZGU3ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZmZmZGU3ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZGU3ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjljNCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2ZmZjljNCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjljNCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY1OWQgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNmZmY1OWQgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY1OWQgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMTc2ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjZmZmMTc2ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMTc2ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWU1OCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogI2ZmZWU1OCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWU1OCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDgzNSAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjZmRkODM1ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGQ4MzUgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmMwMmQgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogI2ZiYzAyZCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmJjMDJkICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlhODI1ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICNmOWE4MjUgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5YTgyNSAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2YxNyAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjZjU3ZjE3ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTdmMTcgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmOGQgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2ZmZmY4ZCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZjhkICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZjAwICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICNmZmZmMDAgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmYwMCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWEwMCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjZmZlYTAwICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmVhMDAgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ2MDAgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogI2ZmZDYwMCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkNjAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQge1xuICBjb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTEgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2ZmZjhlMSAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOGUxICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlY2IzICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNmZmVjYjMgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWNiMyAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTA4MiAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjZmZlMDgyICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmUwODIgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ1NGYgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogI2ZmZDU0ZiAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkNTRmICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYTI4ICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICNmZmNhMjggIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2EyOCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiMzAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogI2ZmYjMwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmIzMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTAwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICNmZmEwMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhMDAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhmMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjZmY4ZjAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGYwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogI2ZmNmYwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTU3ZiAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICNmZmU1N2YgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNTdmICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ3NDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjZmZkNzQwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDc0MCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIuYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjNDAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogI2ZmYzQwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmM0MDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWIwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICNmZmFiMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5ODAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dCB7XG4gIGNvbG9yOiAjZmY5ODAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjk4MDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2UwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZmZmM2UwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2UwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTBiMiAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2ZmZTBiMiAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTBiMiAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNjODAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNmZmNjODAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNjODAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiNzRkICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjZmZiNzRkICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiNzRkICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTcyNiAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogI2ZmYTcyNiAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTcyNiAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiOGMwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjZmI4YzAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYjhjMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTdjMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogI2Y1N2MwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjU3YzAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY2YzAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICNlZjZjMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmNmMwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2NTEwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjZTY1MTAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNjUxMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQxODAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2ZmZDE4MCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkMTgwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjQwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICNmZmFiNDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWI0MCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTEwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjZmY5MTAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjkxMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZkMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogI2ZmNmQwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZDAwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjU3MjIgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQge1xuICBjb2xvcjogI2ZmNTcyMiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjU3MjIgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmU5ZTcgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2ZiZTllNyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmJlOWU3ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjY2JjICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNmZmNjYmMgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2NiYyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWI5MSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjZmZhYjkxICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmFiOTEgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhhNjUgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogI2ZmOGE2NSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY4YTY1ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3MDQzICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICNmZjcwNDMgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNzA0MyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ1MTFlICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogI2Y0NTExZSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDUxMWUgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2NGExOSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICNlNjRhMTkgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY0YTE5ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkODQzMTUgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjZDg0MzE1ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4NDMxNSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmYzNjBjICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogI2JmMzYwYyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZjM2MGMgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOWU4MCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICNmZjllODAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5ZTgwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZlNDAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjZmY2ZTQwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmU0MCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UuYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYzZDAwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogI2ZmM2QwMCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjNkMDAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkMmMwMCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICNkZDJjMDAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQyYzAwICFpbXBvcnRhbnQ7XG59XG5cbi5icm93biB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTU1NDggIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXRleHQge1xuICBjb2xvcjogIzc5NTU0OCAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24td2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTU1NDggIWltcG9ydGFudDtcbn1cblxuLmJyb3duLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZmViZTkgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2VmZWJlOSAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWZlYmU5ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDdjY2M4ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNkN2NjYzggIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q3Y2NjOCAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24ubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JjYWFhNCAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjYmNhYWE0ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiY2FhYTQgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhMTg4N2YgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogI2ExODg3ZiAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTE4ODdmICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGQ2ZTYzICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICM4ZDZlNjMgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhkNmU2MyAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24uZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmQ0YzQxICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzZkNGM0MSAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2ZDRjNDEgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVkNDAzNyAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24tdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICM1ZDQwMzcgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWQ0MDM3ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZTM0MmUgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjNGUzNDJlICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRlMzQyZSAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24uZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2UyNzIzICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzNlMjcyMyAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZTI3MjMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2MDdkOGIgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS10ZXh0IHtcbiAgY29sb3I6ICM2MDdkOGIgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYwN2Q4YiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2VmZjEgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNlY2VmZjEgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2VmZjEgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2ZkOGRjICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjY2ZkOGRjICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2ZkOGRjICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXkubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IwYmVjNSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogI2IwYmVjNSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IwYmVjNSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5MGE0YWUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICM5MGE0YWUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5MGE0YWUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzg5MDljICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjNzg5MDljICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzg5MDljICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXkuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2ZTdhICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICM1NDZlN2EgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU0NmU3YSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ1NWE2NCAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjNDU1YTY0ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NTVhNjQgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzQ3NGYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzM3NDc0ZiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzc0NzRmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXkuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYzMjM4ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICMyNjMyMzggIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MzIzOCAhaW1wb3J0YW50O1xufVxuXG4uZ3JleSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZTllOWUgIWltcG9ydGFudDtcbn1cblxuLmdyZXktdGV4dCB7XG4gIGNvbG9yOiAjOWU5ZTllICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXdhdmVzIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWU5ZTllICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmEgIWltcG9ydGFudDtcbn1cblxuLmdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZmFmYWZhICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2Y1ZjVmNSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjUgIWltcG9ydGFudDtcbn1cblxuLmdyZXkubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNlZWVlZWUgIWltcG9ydGFudDtcbn1cblxuLmdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDtcbn1cblxuLmdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiZGJkICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogI2JkYmRiZCAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZGJkYmQgIWltcG9ydGFudDtcbn1cblxuLmdyZXkuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzU3NTc1ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjNzU3NTc1ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzU3NTc1ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYxNjE2MSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogIzYxNjE2MSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYxNjE2MSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MjQyNDIgIWltcG9ydGFudDtcbn1cblxuLmdyZXktdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICM0MjQyNDIgIWltcG9ydGFudDtcbn1cblxuLmdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MjQyNDIgIWltcG9ydGFudDtcbn1cblxuLmdyZXkuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyMTIxICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjMjEyMTIxICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyMTIxICFpbXBvcnRhbnQ7XG59XG5cbi5ibGFjayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDtcbn1cblxuLmJsYWNrLXRleHQge1xuICBjb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50O1xufVxuXG4ud2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi53aGl0ZS10ZXh0IHtcbiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbn1cblxuLnRyYW5zcGFyZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLnRyYW5zcGFyZW50LXRleHQge1xuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLyoqXG4gKiBwcmlzbS5qcyBUd2lsaWdodCB0aGVtZVxuICogQmFzZWQgKG1vcmUgb3IgbGVzcykgb24gdGhlIFR3aWxpZ2h0IHRoZW1lIG9yaWdpbmFsbHkgb2YgVGV4dG1hdGUgZmFtZS5cbiAqIEBhdXRob3IgUmVteSBCYWNoXG4gKi9cbmNvZGVbY2xhc3MqPWxhbmd1YWdlLV0sXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV0ge1xuICBjb2xvcjogd2hpdGU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgTW9uYWNvLCBcIkFuZGFsZSBNb25vXCIsIFwiVWJ1bnR1IE1vbm9cIiwgbW9ub3NwYWNlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB0ZXh0LXNoYWRvdzogMCAtMC4xZW0gMC4yZW0gYmxhY2s7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMS41O1xuICAtbW96LXRhYi1zaXplOiA0O1xuICAtby10YWItc2l6ZTogNDtcbiAgdGFiLXNpemU6IDQ7XG4gIC13ZWJraXQtaHlwaGVuczogbm9uZTtcbiAgLW1vei1oeXBoZW5zOiBub25lO1xuICAtbXMtaHlwaGVuczogbm9uZTtcbiAgaHlwaGVuczogbm9uZTtcbn1cblxucHJlW2NsYXNzKj1sYW5ndWFnZS1dLFxuOm5vdChwcmUpID4gY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XG4gIGJhY2tncm91bmQ6IGhzbCgwLCAwJSwgOCUpOyAvKiAjMTQxNDE0ICovXG59XG5cbi8qIENvZGUgYmxvY2tzICovXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV0ge1xuICBib3JkZXItcmFkaXVzOiAwLjVlbTtcbiAgYm9yZGVyOiAwLjNlbSBzb2xpZCBoc2woMCwgMCUsIDMzJSk7IC8qICMyODJBMkIgKi9cbiAgYm94LXNoYWRvdzogMXB4IDFweCAwLjVlbSBibGFjayBpbnNldDtcbiAgbWFyZ2luOiAwLjVlbSAwO1xuICBvdmVyZmxvdzogYXV0bztcbiAgcGFkZGluZzogMWVtO1xufVxuXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV06Oi1tb3otc2VsZWN0aW9uIHtcbiAgLyogRmlyZWZveCAqL1xuICBiYWNrZ3JvdW5kOiBoc2woMjAwLCA0JSwgMTYlKTsgLyogIzI4MkEyQiAqL1xufVxuXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV06OnNlbGVjdGlvbiB7XG4gIC8qIFNhZmFyaSAqL1xuICBiYWNrZ3JvdW5kOiBoc2woMjAwLCA0JSwgMTYlKTsgLyogIzI4MkEyQiAqL1xufVxuXG4vKiBUZXh0IFNlbGVjdGlvbiBjb2xvdXIgKi9cbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6LW1vei1zZWxlY3Rpb24sIHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6Oi1tb3otc2VsZWN0aW9uLFxuY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6LW1vei1zZWxlY3Rpb24sIGNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbiB7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCA5MyUsIDAuMTUpOyAvKiAjRURFREVEICovXG59XG5cbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6c2VsZWN0aW9uLCBwcmVbY2xhc3MqPWxhbmd1YWdlLV0gOjpzZWxlY3Rpb24sXG5jb2RlW2NsYXNzKj1sYW5ndWFnZS1dOjpzZWxlY3Rpb24sIGNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjpzZWxlY3Rpb24ge1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTMlLCAwLjE1KTsgLyogI0VERURFRCAqL1xufVxuXG4vKiBJbmxpbmUgY29kZSAqL1xuOm5vdChwcmUpID4gY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XG4gIGJvcmRlci1yYWRpdXM6IDAuM2VtO1xuICBib3JkZXI6IDAuMTNlbSBzb2xpZCBoc2woMCwgMCUsIDMzJSk7IC8qICM1NDU0NTQgKi9cbiAgYm94LXNoYWRvdzogMXB4IDFweCAwLjNlbSAtMC4xZW0gYmxhY2sgaW5zZXQ7XG4gIHBhZGRpbmc6IDAuMTVlbSAwLjJlbSAwLjA1ZW07XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbi50b2tlbi5jb21tZW50LFxuLnRva2VuLnByb2xvZyxcbi50b2tlbi5kb2N0eXBlLFxuLnRva2VuLmNkYXRhIHtcbiAgY29sb3I6IGhzbCgwLCAwJSwgNDclKTsgLyogIzc3Nzc3NyAqL1xufVxuXG4udG9rZW4ucHVuY3R1YXRpb24ge1xuICBvcGFjaXR5OiAwLjc7XG59XG5cbi5uYW1lc3BhY2Uge1xuICBvcGFjaXR5OiAwLjc7XG59XG5cbi50b2tlbi50YWcsXG4udG9rZW4uYm9vbGVhbixcbi50b2tlbi5udW1iZXIsXG4udG9rZW4uZGVsZXRlZCB7XG4gIGNvbG9yOiBoc2woMTQsIDU4JSwgNTUlKTsgLyogI0NGNkE0QyAqL1xufVxuXG4udG9rZW4ua2V5d29yZCxcbi50b2tlbi5wcm9wZXJ0eSxcbi50b2tlbi5zZWxlY3Rvcixcbi50b2tlbi5jb25zdGFudCxcbi50b2tlbi5zeW1ib2wsXG4udG9rZW4uYnVpbHRpbiB7XG4gIGNvbG9yOiBoc2woNTMsIDg5JSwgNzklKTsgLyogI0Y5RUU5OCAqL1xufVxuXG4udG9rZW4uYXR0ci1uYW1lLFxuLnRva2VuLmF0dHItdmFsdWUsXG4udG9rZW4uc3RyaW5nLFxuLnRva2VuLmNoYXIsXG4udG9rZW4ub3BlcmF0b3IsXG4udG9rZW4uZW50aXR5LFxuLnRva2VuLnVybCxcbi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZyxcbi5zdHlsZSAudG9rZW4uc3RyaW5nLFxuLnRva2VuLnZhcmlhYmxlLFxuLnRva2VuLmluc2VydGVkIHtcbiAgY29sb3I6IGhzbCg3NiwgMjElLCA1MiUpOyAvKiAjOEY5RDZBICovXG59XG5cbi50b2tlbi5hdHJ1bGUge1xuICBjb2xvcjogaHNsKDIxOCwgMjIlLCA1NSUpOyAvKiAjNzU4N0E2ICovXG59XG5cbi50b2tlbi5yZWdleCxcbi50b2tlbi5pbXBvcnRhbnQge1xuICBjb2xvcjogaHNsKDQyLCA3NSUsIDY1JSk7IC8qICNFOUMwNjIgKi9cbn1cblxuLnRva2VuLmltcG9ydGFudCxcbi50b2tlbi5ib2xkIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi50b2tlbi5pdGFsaWMge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi50b2tlbi5lbnRpdHkge1xuICBjdXJzb3I6IGhlbHA7XG59XG5cbnByZVtkYXRhLWxpbmVdIHtcbiAgcGFkZGluZzogMWVtIDAgMWVtIDNlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBNYXJrdXAgKi9cbi5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnRhZyxcbi5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLmF0dHItbmFtZSxcbi5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnB1bmN0dWF0aW9uIHtcbiAgY29sb3I6IGhzbCgzMywgMzMlLCA1MiUpOyAvKiAjQUM4ODVCICovXG59XG5cbi8qIE1ha2UgdGhlIHRva2VucyBzaXQgYWJvdmUgdGhlIGxpbmUgaGlnaGxpZ2h0IHNvIHRoZSBjb2xvdXJzIGRvbid0IGxvb2sgZmFkZWQuICovXG4udG9rZW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5saW5lLWhpZ2hsaWdodCB7XG4gIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDMzJSwgMC4yNSk7IC8qICM1NDU0NTQgKi9cbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCBoc2xhKDAsIDAlLCAzMyUsIDAuMSkgNzAlLCBoc2xhKDAsIDAlLCAzMyUsIDApKTsgLyogIzU0NTQ1NCAqL1xuICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzU0NTQ1NCAqL1xuICBib3JkZXItdG9wOiAxcHggZGFzaGVkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzU0NTQ1NCAqL1xuICBsZWZ0OiAwO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgbWFyZ2luLXRvcDogMC43NWVtOyAvKiBTYW1lIGFzIC5wcmlzbeKAmXMgcGFkZGluZy10b3AgKi9cbiAgcGFkZGluZzogaW5oZXJpdCAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgd2hpdGUtc3BhY2U6IHByZTtcbiAgei1pbmRleDogMDtcbn1cblxuLmxpbmUtaGlnaGxpZ2h0OmJlZm9yZSxcbi5saW5lLWhpZ2hsaWdodFtkYXRhLWVuZF06YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjE1LCAxNSUsIDU5JSk7IC8qICM4Nzk0QTYgKi9cbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gIGJveC1zaGFkb3c6IDAgMXB4IHdoaXRlO1xuICBjb2xvcjogaHNsKDI0LCAyMCUsIDk1JSk7IC8qICNGNUYyRjAgKi9cbiAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcbiAgZm9udDogYm9sZCA2NSUvMS41IHNhbnMtc2VyaWY7XG4gIGxlZnQ6IDAuNmVtO1xuICBtaW4td2lkdGg6IDFlbTtcbiAgcGFkZGluZzogMCAwLjVlbTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICB0b3A6IDAuNGVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogMC4zZW07XG59XG5cbi5saW5lLWhpZ2hsaWdodFtkYXRhLWVuZF06YWZ0ZXIge1xuICBib3R0b206IDAuNGVtO1xuICBjb250ZW50OiBhdHRyKGRhdGEtZW5kKTtcbiAgdG9wOiBhdXRvO1xufVxuXG4ud2luZG93IHtcbiAgZm9udC1mYW1pbHk6IFwiVWJ1bnR1XCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgd2lkdGg6IDYwMHB4O1xuICBtYXJnaW46IDc1cHggYXV0bztcbiAgYmFja2dyb3VuZDogIzJjM2U1MDtcbiAgaGVpZ2h0OiAzNTBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBkaXNwbGF5OiByZWxhdGl2ZTtcbiAgYm94LXNoYWRvdzogMTBweCAxMHB4IDEwcHggIzg4ODg4ODtcbn1cblxuLmFmdGVyY2xvc2Uge1xuICBjb2xvcjogIzM0NDk1ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ub3BlbiB7XG4gIGNvbG9yOiAjZmZmO1xuICBwYWRkaW5nOiAxNXB4O1xuICBiYWNrZ3JvdW5kOiAjMmVjYzcxO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLmJhc2gge1xuICB3aWR0aDogNjAwcHg7XG4gIGJhY2tncm91bmQ6ICMzNDQ5NWU7XG4gIGhlaWdodDogMzEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgdG9wOiA0MHB4O1xuICBkaXNwbGF5OiBhYnNvbHV0ZTtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4uYmFzaCAuY29tbWFuZDo6YmVmb3JlIHtcbiAgY29udGVudDogXCJ1c2VyQG1hY2hpbmUgXFwkIDogXCI7XG4gIGNvbG9yOiAjMmVjYzcxO1xufVxuLmJhc2ggLnJlc3VsdGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiPj5cIjtcbiAgY29sb3I6ICMyZWNjNzE7XG59XG5cbi8qIGVmZmVjdGVkIGJ5IGNvbnRyb2xsZXJzICovXG4ud2luZG93bWF4IHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogYXV0bztcbiAgYmFja2dyb3VuZDogIzJjM2U1MDtcbiAgaGVpZ2h0OiAxMDAwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgZGlzcGxheTogcmVsYXRpdmU7XG59XG5cbi53aW5kb3dtaW4ge1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogNDVweDtcbiAgYmFja2dyb3VuZDogIzJjM2U1MDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBib3R0b206IDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cblxuLmJhc2htYXgge1xuICBkaXNwbGF5OiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICMzNDQ5NWU7XG4gIGhlaWdodDogOTYwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm90dG9tOiAwO1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLyogIS0tZW5kLS0hICovXG4uYnV0dG9ucyB7XG4gIHdpZHRoOiAxNXB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBtYXJnaW46IDEzcHggNHB4O1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi5jbG9zZSB7XG4gIGJhY2tncm91bmQ6ICNlNzRjM2M7XG59XG5cbi5tYXhpbWl6ZSB7XG4gIGJhY2tncm91bmQ6ICNmMWM0MGY7XG59XG5cbi5taW5pbWl6ZSB7XG4gIGJhY2tncm91bmQ6ICMyZWNjNzE7XG59XG5cbi5yZXN1bHQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uY29udHJvbHMge1xuICBoZWlnaHQ6IDQwcHg7XG4gIHRvcDogMDtcbn1cblxuLnRpdGxlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4ubWF0ZXJpYWwtdG9vbHRpcCB7XG4gIHBhZGRpbmc6IDEwcHggOHB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIHotaW5kZXg6IDIwMDA7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgY29sb3I6ICNmZmY7XG4gIG1pbi1oZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxMjAlO1xuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA0cHgpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7XG59XG5cbi5iYWNrZHJvcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiA3cHg7XG4gIHdpZHRoOiAxNHB4O1xuICBib3JkZXItcmFkaXVzOiAwIDAgNTAlIDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzIzMjtcbiAgei1pbmRleDogLTE7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAwJTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4uc2hhZG93LTAge1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIDJkcCBlbGV2YXRpb24gbW9kaWZpZWQqL1xuLnNoYWRvdy0xLCBuYXYsIC5kcm9wZG93bi1jb250ZW50LCAuY2FyZCwgLmNhcmQtcGFuZWwsIC5idG4tZmxvYXRpbmcsIC5idG4sIC5idG4tc21hbGwsIC5idG4tbGFyZ2UsIC5jb2xsYXBzaWJsZSB7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLnNoYWRvdy0xLWhhbGYsIC5idG4tZmxvYXRpbmc6aG92ZXIsIC5idG46aG92ZXIsIC5idG4tc21hbGw6aG92ZXIsIC5idG4tbGFyZ2U6aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDNweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCA3cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDNweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi8qIDZkcCBlbGV2YXRpb24gbW9kaWZpZWQqL1xuLnNoYWRvdy0yIHtcbiAgYm94LXNoYWRvdzogMCA0cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuLyogMTJkcCBlbGV2YXRpb24gbW9kaWZpZWQqL1xuLnNoYWRvdy0zIHtcbiAgYm94LXNoYWRvdzogMCA4cHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4vKiAxNmRwIGVsZXZhdGlvbiAqL1xuLnNoYWRvdy00IHtcbiAgYm94LXNoYWRvdzogMCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgOHB4IDEwcHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi8qIDI0ZHAgZWxldmF0aW9uICovXG4uc2hhZG93LTUsIC5tb2RhbCB7XG4gIGJveC1zaGFkb3c6IDAgMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLyogMjRkcCBlbGV2YXRpb24gKi9cbi5pbnZlcnQtc2hhZG93LTUge1xuICBib3gtc2hhZG93OiAzOHB4IDAgMCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDQ2cHggMCAwIDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMTVweCAwIDAgMCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi5ob3ZlcmFibGUge1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMjVzO1xufVxuLmhvdmVyYWJsZTpob3ZlciB7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDE3cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgNnB4IDIwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTkpO1xufVxuXG4vKiFcbiAqIFdhdmVzIHYwLjYuMFxuICogaHR0cDovL2ZpYW4ubXkuaWQvV2F2ZXNcbiAqXG4gKiBDb3B5cmlnaHQgMjAxNCBBbGZpYW5hIEUuIFNpYnVlYSBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9maWFucy9XYXZlcy9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cbi53YXZlcy1lZmZlY3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgei1pbmRleDogMTtcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLW91dDtcbn1cbi53YXZlcy1lZmZlY3QgLndhdmVzLXJpcHBsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBtYXJnaW4tdG9wOiAtMTBweDtcbiAgbWFyZ2luLWxlZnQ6IC0xMHB4O1xuICBvcGFjaXR5OiAwO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIHRyYW5zaXRpb246IGFsbCAwLjdzIGVhc2Utb3V0O1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLndhdmVzLWVmZmVjdC53YXZlcy1saWdodCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ1KTtcbn1cbi53YXZlcy1lZmZlY3Qud2F2ZXMtcmVkIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NCwgNjcsIDU0LCAwLjcpO1xufVxuLndhdmVzLWVmZmVjdC53YXZlcy15ZWxsb3cgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyMzUsIDU5LCAwLjcpO1xufVxuLndhdmVzLWVmZmVjdC53YXZlcy1vcmFuZ2UgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxNTIsIDAsIDAuNyk7XG59XG4ud2F2ZXMtZWZmZWN0LndhdmVzLXB1cnBsZSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTYsIDM5LCAxNzYsIDAuNyk7XG59XG4ud2F2ZXMtZWZmZWN0LndhdmVzLWdyZWVuIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDc2LCAxNzUsIDgwLCAwLjcpO1xufVxuLndhdmVzLWVmZmVjdC53YXZlcy10ZWFsIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE1MCwgMTM2LCAwLjcpO1xufVxuLndhdmVzLWVmZmVjdCBpbnB1dFt0eXBlPWJ1dHRvbl0sIC53YXZlcy1lZmZlY3QgaW5wdXRbdHlwZT1yZXNldF0sIC53YXZlcy1lZmZlY3QgaW5wdXRbdHlwZT1zdWJtaXRdIHtcbiAgYm9yZGVyOiAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG59XG4ud2F2ZXMtZWZmZWN0IGltZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogLTE7XG59XG5cbi53YXZlcy1ub3RyYW5zaXRpb24ge1xuICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi53YXZlcy1jaXJjbGUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB3aGl0ZSAxMDAlLCBibGFjayAxMDAlKTtcbn1cblxuLndhdmVzLWlucHV0LXdyYXBwZXIge1xuICBib3JkZXItcmFkaXVzOiAwLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbn1cbi53YXZlcy1pbnB1dC13cmFwcGVyIC53YXZlcy1idXR0b24taW5wdXQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcbn1cblxuLndhdmVzLWNpcmNsZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2lkdGg6IDIuNWVtO1xuICBoZWlnaHQ6IDIuNWVtO1xuICBsaW5lLWhlaWdodDogMi41ZW07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiBub25lO1xufVxuXG4ud2F2ZXMtYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyogRmlyZWZveCBCdWc6IGxpbmsgbm90IHRyaWdnZXJlZCAqL1xuLndhdmVzLWVmZmVjdCAud2F2ZXMtcmlwcGxlIHtcbiAgei1pbmRleDogLTE7XG59XG5cbi5tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIHBhZGRpbmc6IDA7XG4gIG1heC1oZWlnaHQ6IDcwJTtcbiAgd2lkdGg6IDU1JTtcbiAgbWFyZ2luOiBhdXRvO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHdpbGwtY2hhbmdlOiB0b3AsIG9wYWNpdHk7XG59XG4ubW9kYWw6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogOTkycHgpIHtcbiAgLm1vZGFsIHtcbiAgICB3aWR0aDogODAlO1xuICB9XG59XG4ubW9kYWwgaDEsIC5tb2RhbCBoMiwgLm1vZGFsIGgzLCAubW9kYWwgaDQge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLm1vZGFsIC5tb2RhbC1jb250ZW50IHtcbiAgcGFkZGluZzogMjRweDtcbn1cbi5tb2RhbCAubW9kYWwtY2xvc2Uge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubW9kYWwgLm1vZGFsLWZvb3RlciB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBwYWRkaW5nOiA0cHggNnB4O1xuICBoZWlnaHQ6IDU2cHg7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5tb2RhbCAubW9kYWwtZm9vdGVyIC5idG4sIC5tb2RhbCAubW9kYWwtZm9vdGVyIC5idG4tc21hbGwsIC5tb2RhbCAubW9kYWwtZm9vdGVyIC5idG4tbGFyZ2UsIC5tb2RhbCAubW9kYWwtZm9vdGVyIC5idG4tZmxhdCB7XG4gIG1hcmdpbjogNnB4IDA7XG59XG4ubW9kYWwgLm1vZGFsLWhlYWRlciB7XG4gIGJvcmRlci1yYWRpdXM6IDJweCAycHggMCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBwYWRkaW5nOiA2cHggNHB4O1xuICBoZWlnaHQ6IDU2cHg7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5tb2RhbCAubW9kYWwtaGVhZGVyIC5idG4sIC5tb2RhbCAubW9kYWwtaGVhZGVyIC5idG4tc21hbGwsIC5tb2RhbCAubW9kYWwtaGVhZGVyIC5idG4tbGFyZ2UsIC5tb2RhbCAubW9kYWwtaGVhZGVyIC5idG4tZmxhdCB7XG4gIG1hcmdpbjogNnB4IDA7XG59XG5cbi5tb2RhbC1vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk7XG4gIHRvcDogLTI1JTtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgaGVpZ2h0OiAxMjUlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogIzAwMDtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lsbC1jaGFuZ2U6IG9wYWNpdHk7XG59XG5cbi5tb2RhbC5tb2RhbC1maXhlZC1mb290ZXIge1xuICBwYWRkaW5nOiAwO1xuICBoZWlnaHQ6IDcwJTtcbn1cbi5tb2RhbC5tb2RhbC1maXhlZC1mb290ZXIgLm1vZGFsLWNvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNTZweCk7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuLm1vZGFsLm1vZGFsLWZpeGVkLWZvb3RlciAubW9kYWwtZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG59XG5cbi5tb2RhbC5ib3R0b20tc2hlZXQge1xuICB0b3A6IGF1dG87XG4gIGJvdHRvbTogLTEwMCU7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDQ1JTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lsbC1jaGFuZ2U6IGJvdHRvbSwgb3BhY2l0eTtcbn1cblxuaHRtbCxcbmJvZHksXG4jcm9vdCB7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4qIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4ubm9zZWxlY3Qge1xuICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7IC8qIGlPUyBTYWZhcmkgKi9cbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogU2FmYXJpICovXG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsgLyogS29ucXVlcm9yIEhUTUwgKi9cbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsgLyogT2xkIHZlcnNpb25zIG9mIEZpcmVmb3ggKi9cbiAgLW1zLXVzZXItc2VsZWN0OiBub25lOyAvKiBJbnRlcm5ldCBFeHBsb3Jlci9FZGdlICovXG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAvKiBOb24tcHJlZml4ZWQgdmVyc2lvbiwgY3VycmVudGx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSBDaHJvbWUsIEVkZ2UsIE9wZXJhIGFuZCBGaXJlZm94ICovXG59XG5cbnVsOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxudWw6bm90KC5icm93c2VyLWRlZmF1bHQpID4gbGkge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG5cbmEge1xuICBjb2xvcjogIzAzOWJlNTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4udy0xMDAge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnJpZ2h0LWFsaWduIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5jZW50ZXItYWxpZ24ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi52LWNlbnRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5tYjEge1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4uY29sbGVjdGlvbiB7XG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uaG92ZXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIge1xuICBtaW4taGVpZ2h0OiA4NHB4O1xuICBwYWRkaW5nLWxlZnQ6IDcycHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIDpub3QoLmNpcmNsZS1jbGlwcGVyKSA+IC5jaXJjbGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiA0MnB4O1xuICBoZWlnaHQ6IDQycHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGxlZnQ6IDE1cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIGkuY2lyY2xlIHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogNDJweDtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5OTk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIC50aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHAge1xuICBtYXJnaW46IDA7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciAuc2Vjb25kYXJ5LWNvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTZweDtcbiAgcmlnaHQ6IDE2cHg7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtOmxhc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tOiBub25lO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xuICBjb2xvcjogI2VhZmFmOTtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYWN0aXZlIC5zZWNvbmRhcnktY29udGVudCB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLmNvbGxlY3Rpb24gYS5jb2xsZWN0aW9uLWl0ZW0ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgdHJhbnNpdGlvbjogMC4yNXM7XG4gIGNvbG9yOiAjMjZhNjlhO1xufVxuLmNvbGxlY3Rpb24gYS5jb2xsZWN0aW9uLWl0ZW06bm90KC5hY3RpdmUpOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcbn1cbi5jb2xsZWN0aW9uLndpdGgtaGVhZGVyIC5jb2xsZWN0aW9uLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG59XG4uY29sbGVjdGlvbi53aXRoLWhlYWRlciAuY29sbGVjdGlvbi1pdGVtIHtcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xufVxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIge1xuICBwYWRkaW5nLWxlZnQ6IDcycHg7XG59XG5cbi5zZWNvbmRhcnktY29udGVudCB7XG4gIGZsb2F0OiByaWdodDtcbiAgY29sb3I6ICMyNmE2OWE7XG59XG5cbi5jb2xsYXBzaWJsZSAuY29sbGVjdGlvbiB7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4ubW9kYWwtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBwYWRkaW5nOiAyMHB4IDAgMjBweCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIHotaW5kZXg6IDk5OTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4ubW9kYWwtb3ZlcmxheSAuaW5uZXJmb3JtIHtcbiAgbWF4LXdpZHRoOiA2NTBweDtcbn1cbi5tb2RhbC1vdmVybGF5IC5pbm5lcmZvcm0gZm9ybSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKipcbiAgTWVkaWEgUXVlcnkgQ2xhc3Nlc1xuKioqKioqKioqKioqKioqKioqKioqKi9cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDYwMHB4KSB7XG4gIC5oaWRlLW9uLXNtYWxsLW9ubHksIC5oaWRlLW9uLXNtYWxsLWFuZC1kb3duIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogOTkycHgpIHtcbiAgLmhpZGUtb24tbWVkLWFuZC1kb3duIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogNjAxcHgpIHtcbiAgLmhpZGUtb24tbWVkLWFuZC11cCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA5OTJweCkge1xuICAuaGlkZS1vbi1tZWQtb25seSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDk5M3B4KSB7XG4gIC5oaWRlLW9uLWxhcmdlLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAxMjAxcHgpIHtcbiAgLmhpZGUtb24tZXh0cmEtbGFyZ2Utb25seSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDEyMDFweCkge1xuICAuc2hvdy1vbi1leHRyYS1sYXJnZSB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA5OTNweCkge1xuICAuc2hvdy1vbi1sYXJnZSB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogOTkycHgpIHtcbiAgLnNob3ctb24tbWVkaXVtIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDYwMHB4KSB7XG4gIC5zaG93LW9uLXNtYWxsIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDYwMXB4KSB7XG4gIC5zaG93LW9uLW1lZGl1bS1hbmQtdXAge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogOTkycHgpIHtcbiAgLnNob3ctb24tbWVkaXVtLWFuZC1kb3duIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDYwMHB4KSB7XG4gIC5jZW50ZXItb24tc21hbGwtb25seSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqXG4gIFV0aWxpdHkgQ2xhc3Nlc1xuKioqKioqKioqKioqKioqKioqKi9cbi5oaWRlIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ubGVmdC1hbGlnbiB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5yaWdodC1hbGlnbiB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uY2VudGVyLCAuY2VudGVyLWFsaWduIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubGVmdCB7XG4gIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG59XG5cbi5yaWdodCB7XG4gIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xufVxuXG4ubm8tc2VsZWN0IHtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5jaXJjbGUge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5jZW50ZXItYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLnRydW5jYXRlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4ubm8tcGFkZGluZyB7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cblxuc3Bhbi5iYWRnZSB7XG4gIG1pbi13aWR0aDogM3JlbTtcbiAgcGFkZGluZzogMCA2cHg7XG4gIG1hcmdpbi1sZWZ0OiAxNHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIGhlaWdodDogMjJweDtcbiAgY29sb3I6ICM3NTc1NzU7XG4gIGZsb2F0OiByaWdodDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbnNwYW4uYmFkZ2UubmV3IHtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5zcGFuLmJhZGdlLm5ldzphZnRlciB7XG4gIGNvbnRlbnQ6IFwiIG5ld1wiO1xufVxuc3Bhbi5iYWRnZVtkYXRhLWJhZGdlLWNhcHRpb25dOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiIFwiIGF0dHIoZGF0YS1iYWRnZS1jYXB0aW9uKTtcbn1cblxubmF2IHVsIGEgc3Bhbi5iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZmxvYXQ6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBoZWlnaHQ6IDIycHg7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGF1dG87XG59XG5cbi5jb2xsZWN0aW9uLWl0ZW0gc3Bhbi5iYWRnZSB7XG4gIG1hcmdpbi10b3A6IGNhbGMoMC43NXJlbSAtIDExcHgpO1xufVxuXG4uY29sbGFwc2libGUgc3Bhbi5iYWRnZSB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4uc2lkZW5hdiBzcGFuLmJhZGdlIHtcbiAgbWFyZ2luLXRvcDogMTEuNXB4O1xufVxuXG50YWJsZSBzcGFuLmJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmbG9hdDogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbi5jaGlwIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDMycHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgbGluZS1oZWlnaHQ6IDMycHg7XG4gIHBhZGRpbmc6IDAgMTJweDtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U0ZTRlNDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5jaGlwOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbiAgY29sb3I6ICNmZmY7XG59XG4uY2hpcCA+IGltZyB7XG4gIGZsb2F0OiBsZWZ0O1xuICBtYXJnaW46IDAgOHB4IDAgLTEycHg7XG4gIGhlaWdodDogMzJweDtcbiAgd2lkdGg6IDMycHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cbi5jaGlwIC5jbG9zZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICBwYWRkaW5nLWxlZnQ6IDhweDtcbn1cblxuLmNoaXBzIHtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzllOWU5ZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgbWFyZ2luOiAwIDAgOHB4IDA7XG4gIG1pbi1oZWlnaHQ6IDQ1cHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzO1xufVxuLmNoaXBzLmZvY3VzIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyNmE2OWE7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgMCAjMjZhNjlhO1xufVxuLmNoaXBzOmhvdmVyIHtcbiAgY3Vyc29yOiB0ZXh0O1xufVxuLmNoaXBzIC5pbnB1dCB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGhlaWdodDogNTZweDtcbiAgbGluZS1oZWlnaHQ6IDMycHg7XG4gIG91dGxpbmU6IDA7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICB3aWR0aDogMTIwcHggIWltcG9ydGFudDtcbn1cbi5jaGlwcyAuaW5wdXQ6Zm9jdXMge1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xufVxuLmNoaXBzIC5hdXRvY29tcGxldGUtY29udGVudCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5wcmVmaXggfiAuY2hpcHMge1xuICBtYXJnaW4tbGVmdDogM3JlbTtcbiAgd2lkdGg6IDkyJTtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xufVxuXG4uY2hpcHM6ZW1wdHkgfiBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0MCUpO1xufVxuXG4uY29sbGFwc2libGUge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGRkO1xuICBtYXJnaW46IDAuMzMzMzMzMzMzM3JlbSAwIDAuNjY2NjY2NjY2N3JlbSAwO1xufVxuXG4uY29sbGFwc2libGUtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBsaW5lLWhlaWdodDogMS41O1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbn1cbi5jb2xsYXBzaWJsZS1oZWFkZXI6Zm9jdXMge1xuICBvdXRsaW5lOiAwO1xufVxuLmNvbGxhcHNpYmxlLWhlYWRlciBpIHtcbiAgd2lkdGg6IDJyZW07XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuXG4ua2V5Ym9hcmQtZm9jdXNlZCAuY29sbGFwc2libGUtaGVhZGVyOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbn1cblxuLmNvbGxhcHNpYmxlLWJvZHkge1xuICBkaXNwbGF5OiBub25lO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMnJlbTtcbn1cblxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlIHtcbiAgYm9yZGVyOiBub25lO1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlIGxpLFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlIGxpIHtcbiAgcGFkZGluZzogMDtcbn1cbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1oZWFkZXIsXG4uc2lkZW5hdi5maXhlZCAuY29sbGFwc2libGUtaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGhlaWdodDogaW5oZXJpdDtcbiAgcGFkZGluZzogMCAxNXB4O1xufVxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWhlYWRlcjpob3Zlcixcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZS1oZWFkZXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWhlYWRlciBpLFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlLWhlYWRlciBpIHtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG4uc2lkZW5hdiAuY29sbGFwc2libGUtYm9keSxcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZS1ib2R5IHtcbiAgYm9yZGVyOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHkgbGkgYSxcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZS1ib2R5IGxpIGEge1xuICBwYWRkaW5nOiAwIDIyLjVweCAwIDMwcHg7XG59XG5cbi5jb2xsYXBzaWJsZS5wb3BvdXQge1xuICBib3JkZXI6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4uY29sbGFwc2libGUucG9wb3V0ID4gbGkge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTYpLCAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgbWFyZ2luOiAwIDI0cHg7XG4gIHRyYW5zaXRpb246IG1hcmdpbiAwLjM1cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG59XG4uY29sbGFwc2libGUucG9wb3V0ID4gbGkuYWN0aXZlIHtcbiAgYm94LXNoYWRvdzogMCA1cHggMTFweCAwIHJnYmEoMCwgMCwgMCwgMC4xOCksIDAgNHB4IDE1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICBtYXJnaW46IDE2cHggMDtcbn1cblxuLmNvbGxlY3Rpb24ge1xuICBtYXJnaW46IDAuMzMzMzMzMzMzM3JlbSAwIDAuNjY2NjY2NjY2N3JlbSAwO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciB7XG4gIG1pbi1oZWlnaHQ6IDg0cHg7XG4gIHBhZGRpbmctbGVmdDogNzJweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXI6bm90KC5jaXJjbGUtY2xpcHBlcikgPiAuY2lyY2xlLFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDQycHg7XG4gIGhlaWdodDogNDJweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbGVmdDogMTVweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgaS5jaXJjbGUge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiA0MnB4O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgLnRpdGxlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgcCB7XG4gIG1hcmdpbjogMDtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIC5zZWNvbmRhcnktY29udGVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxNnB4O1xuICByaWdodDogMTZweDtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW06bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG4gIGNvbG9yOiAjZWFmYWY5O1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hY3RpdmUgLnNlY29uZGFyeS1jb250ZW50IHtcbiAgY29sb3I6ICNmZmY7XG59XG4uY29sbGVjdGlvbiBhLmNvbGxlY3Rpb24taXRlbSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0cmFuc2l0aW9uOiAwLjI1cztcbiAgY29sb3I6ICMyNmE2OWE7XG59XG4uY29sbGVjdGlvbiBhLmNvbGxlY3Rpb24taXRlbTpub3QoLmFjdGl2ZSk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xufVxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7XG4gIHBhZGRpbmc6IDEwcHggMjBweDtcbn1cbi5jb2xsZWN0aW9uLndpdGgtaGVhZGVyIC5jb2xsZWN0aW9uLWl0ZW0ge1xuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XG59XG4uY29sbGVjdGlvbi53aXRoLWhlYWRlciAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciB7XG4gIHBhZGRpbmctbGVmdDogNzJweDtcbn1cbi5jb2xsZWN0aW9uIC5zZWNvbmRhcnktY29udGVudCB7XG4gIGZsb2F0OiByaWdodDtcbiAgY29sb3I6ICMyNmE2OWE7XG59XG5cbnNlbGVjdDpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBzb2xpZCAjYzlmM2VmO1xufVxuXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmFiN2E5O1xufVxuXG5sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBjb2xvcjogIzllOWU5ZTtcbn1cblxuLyogVGV4dCBJbnB1dHMgKyBUZXh0YXJlYVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIFN0eWxlIFBsYWNlaG9sZGVycyAqL1xuOjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiAjZDFkMWQxO1xufVxuXG4vKiBUZXh0IGlucHV0cyAqL1xuaW5wdXQ6bm90KFt0eXBlXSksXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxudGV4dGFyZWEudGV4dGFyZWEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzllOWU5ZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgaGVpZ2h0OiA1NnB4O1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBtYXJnaW46IDAgMCA4cHggMDtcbiAgcGFkZGluZzogMDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcywgYm9yZGVyIDAuM3M7XG59XG5pbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCwgaW5wdXQ6bm90KFt0eXBlXSlbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcbnRleHRhcmVhLnRleHRhcmVhOmRpc2FibGVkLFxudGV4dGFyZWEudGV4dGFyZWFbcmVhZG9ubHk9cmVhZG9ubHldIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cbmlucHV0Om5vdChbdHlwZV0pOmRpc2FibGVkICsgbGFiZWwsIGlucHV0Om5vdChbdHlwZV0pW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxudGV4dGFyZWEudGV4dGFyZWE6ZGlzYWJsZWQgKyBsYWJlbCxcbnRleHRhcmVhLnRleHRhcmVhW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG59XG5pbnB1dDpub3QoW3R5cGVdKTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1czpub3QoW3JlYWRvbmx5XSkge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzI2YTY5YTtcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwICMyNmE2OWE7XG59XG5pbnB1dDpub3QoW3R5cGVdKTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCB7XG4gIGNvbG9yOiAjMjZhNjlhO1xufVxuaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXMudmFsaWQgfiBsYWJlbCB7XG4gIGNvbG9yOiAjNGNhZjUwO1xufVxuaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXMuaW52YWxpZCB+IGxhYmVsIHtcbiAgY29sb3I6ICNmNDQzMzY7XG59XG5pbnB1dDpub3QoW3R5cGVdKS52YWxpZGF0ZSArIGxhYmVsLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG50ZXh0YXJlYS50ZXh0YXJlYS52YWxpZGF0ZSArIGxhYmVsIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4vKiBWYWxpZGF0aW9uIFNhc3MgUGxhY2Vob2xkZXJzICovXG4uc2VsZWN0LXdyYXBwZXIudmFsaWQgPiBpbnB1dC5zZWxlY3QtZHJvcGRvd24sIGlucHV0Om5vdChbdHlwZV0pLnZhbGlkLCBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cy52YWxpZCxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxudGV4dGFyZWEudGV4dGFyZWEudmFsaWQsXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy52YWxpZCB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNGNhZjUwO1xuICBib3gtc2hhZG93OiAwIDFweCAwIDAgIzRjYWY1MDtcbn1cblxuLnNlbGVjdC13cmFwcGVyLmludmFsaWQgPiBpbnB1dC5zZWxlY3QtZHJvcGRvd24sIC5zZWxlY3Qtd3JhcHBlci5pbnZhbGlkID4gaW5wdXQuc2VsZWN0LWRyb3Bkb3duOmZvY3VzLCBpbnB1dDpub3QoW3R5cGVdKS5pbnZhbGlkLCBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcbnRleHRhcmVhLnRleHRhcmVhLmludmFsaWQsXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy5pbnZhbGlkIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmNDQzMzY7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgMCAjZjQ0MzM2O1xufVxuXG4uc2VsZWN0LXdyYXBwZXIudmFsaWQgLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sIC5zZWxlY3Qtd3JhcHBlci5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLCBpbnB1dDpub3QoW3R5cGVdKS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLCBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLCBpbnB1dDpub3QoW3R5cGVdKS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLCBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG50ZXh0YXJlYS50ZXh0YXJlYS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbnRleHRhcmVhLnRleHRhcmVhLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdIHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5zZWxlY3Qtd3JhcHBlci52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG50ZXh0YXJlYS50ZXh0YXJlYS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyIHtcbiAgY29udGVudDogYXR0cihkYXRhLXN1Y2Nlc3MpO1xuICBjb2xvcjogIzRjYWY1MDtcbn1cblxuLnNlbGVjdC13cmFwcGVyLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsIGlucHV0Om5vdChbdHlwZV0pLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxudGV4dGFyZWEudGV4dGFyZWEuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIge1xuICBjb250ZW50OiBhdHRyKGRhdGEtZXJyb3IpO1xuICBjb2xvcjogI2Y0NDMzNjtcbn1cblxuLnNlbGVjdC13cmFwcGVyICsgbGFiZWw6YWZ0ZXIsIGlucHV0Om5vdChbdHlwZV0pICsgbGFiZWw6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbnRleHRhcmVhLnRleHRhcmVhICsgbGFiZWw6YWZ0ZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IDAuMnMgb3BhY2l0eSBlYXNlLW91dCwgMC4ycyBjb2xvciBlYXNlLW91dDtcbn1cblxuLmlucHV0LWZpZWxkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuLmlucHV0LWZpZWxkLmlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cbi5pbnB1dC1maWVsZC5pbmxpbmUgaW5wdXQsXG4uaW5wdXQtZmllbGQuaW5saW5lIC5zZWxlY3QtZHJvcGRvd24ge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuLmlucHV0LWZpZWxkLmNvbCBsYWJlbCB7XG4gIGxlZnQ6IDAuNXJlbTtcbn1cbi5pbnB1dC1maWVsZC5jb2wgLnByZWZpeCB+IGxhYmVsLFxuLmlucHV0LWZpZWxkLmNvbCAucHJlZml4IH4gLnZhbGlkYXRlIH4gbGFiZWwge1xuICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSAtIDFyZW0pO1xufVxuLmlucHV0LWZpZWxkID4gbGFiZWwge1xuICBjb2xvcjogIzllOWU5ZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY3Vyc29yOiB0ZXh0O1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLW91dCwgY29sb3IgMC4ycyBlYXNlLW91dDtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCUgMTAwJTtcbiAgdGV4dC1hbGlnbjogaW5pdGlhbDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEycHgpO1xufVxuLmlucHV0LWZpZWxkID4gbGFiZWw6bm90KC5sYWJlbC1pY29uKS5hY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0cHgpIHNjYWxlKDAuOCk7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbn1cbi5pbnB1dC1maWVsZCA+IGlucHV0W3R5cGVdOi13ZWJraXQtYXV0b2ZpbGw6bm90KC5icm93c2VyLWRlZmF1bHQpOm5vdChbdHlwZT1zZWFyY2hdKSArIGxhYmVsLCAuaW5wdXQtZmllbGQgPiBpbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsLCAuaW5wdXQtZmllbGQgPiBpbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNHB4KSBzY2FsZSgwLjgpO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG59XG4uaW5wdXQtZmllbGQgLmhlbHBlci10ZXh0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAxOHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbn1cbi5pbnB1dC1maWVsZCAuaGVscGVyLXRleHQ6OmFmdGVyIHtcbiAgb3BhY2l0eTogMTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4uaW5wdXQtZmllbGQgLnByZWZpeCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDU2cHg7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcbn1cbi5pbnB1dC1maWVsZCAucHJlZml4LmFjdGl2ZSB7XG4gIGNvbG9yOiAjMjZhNjlhO1xufVxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiBpbnB1dCxcbi5pbnB1dC1maWVsZCAucHJlZml4IH4gdGV4dGFyZWEsXG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IGxhYmVsLFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiAudmFsaWRhdGUgfiBsYWJlbCxcbi5pbnB1dC1maWVsZCAucHJlZml4IH4gLmhlbHBlci10ZXh0LFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiAuYXV0b2NvbXBsZXRlLWNvbnRlbnQge1xuICBtYXJnaW4tbGVmdDogM3JlbTtcbiAgd2lkdGg6IDkyJTtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xufVxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiBsYWJlbCB7XG4gIG1hcmdpbi1sZWZ0OiAzcmVtO1xufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogOTkycHgpIHtcbiAgLmlucHV0LWZpZWxkIC5wcmVmaXggfiBpbnB1dCB7XG4gICAgd2lkdGg6IDg2JTtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDYwMHB4KSB7XG4gIC5pbnB1dC1maWVsZCAucHJlZml4IH4gaW5wdXQge1xuICAgIHdpZHRoOiA4MCU7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xuICB9XG59XG5cbi8qIFNlYXJjaCBGaWVsZCAqL1xuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgdHJhbnNpdGlvbjogMC4zcyBiYWNrZ3JvdW5kLWNvbG9yO1xufVxuLm5hdi13cmFwcGVyIC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF0ge1xuICBoZWlnaHQ6IGluaGVyaXQ7XG4gIHBhZGRpbmctbGVmdDogNHJlbTtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDRyZW0pO1xuICBib3JkZXI6IDA7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6ICM0NDQ7XG59XG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsIGksIC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF06Zm9jdXM6bm90KC5icm93c2VyLWRlZmF1bHQpIH4gLm1kaS1uYXZpZ2F0aW9uLWNsb3NlLCAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB+IC5tYXRlcmlhbC1pY29ucyB7XG4gIGNvbG9yOiAjNDQ0O1xufVxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSArIC5sYWJlbC1pY29uIHtcbiAgdHJhbnNmb3JtOiBub25lO1xuICBsZWZ0OiAxcmVtO1xufVxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSB+IC5tZGktbmF2aWdhdGlvbi1jbG9zZSwgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSB+IC5tYXRlcmlhbC1pY29ucyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMXJlbTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjb2xvcjtcbn1cblxuLyogVGV4dGFyZWEgKi9cbnRleHRhcmVhIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTZweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG50ZXh0YXJlYS50ZXh0YXJlYSB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIG92ZXJmbG93LXk6IGhpZGRlbjsgLyogcHJldmVudHMgc2Nyb2xsIGJhciBmbGFzaCAqL1xuICBwYWRkaW5nOiAwLjhyZW0gMCAwLjhyZW0gMDsgLyogcHJldmVudHMgdGV4dCBqdW1wIG9uIEVudGVyIGtleXByZXNzICovXG4gIHJlc2l6ZTogbm9uZTtcbiAgbWluLWhlaWdodDogNTZweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLmhpZGRlbmRpdiB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IC8qIGZ1dHVyZSB2ZXJzaW9uIG9mIGRlcHJlY2F0ZWQgJ3dvcmQtd3JhcCcgKi9cbiAgcGFkZGluZy10b3A6IDEuMnJlbTsgLyogcHJldmVudHMgdGV4dCBqdW1wIG9uIEVudGVyIGtleXByZXNzICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICB6LWluZGV4OiAtMTtcbn1cblxuLyogQXV0b2NvbXBsZXRlICovXG4uYXV0b2NvbXBsZXRlLWNvbnRlbnQgbGkgLmhpZ2hsaWdodCB7XG4gIGNvbG9yOiAjNDQ0O1xufVxuLmF1dG9jb21wbGV0ZS1jb250ZW50IGxpIGltZyB7XG4gIG1hcmdpbjogNXB4IDE1cHg7XG59XG5cbi8qIENoYXJhY3RlciBDb3VudGVyICovXG4uY2hhcmFjdGVyLWNvdW50ZXIge1xuICBtaW4taGVpZ2h0OiAxOHB4O1xufVxuXG4vKiBSYWRpbyBCdXR0b25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuW3R5cGU9cmFkaW9dOm5vdCg6Y2hlY2tlZCksXG5bdHlwZT1yYWRpb106Y2hlY2tlZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3Bhbixcblt0eXBlPXJhZGlvXTpjaGVja2VkICsgc3BhbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiAzNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAyNXB4O1xuICBsaW5lLWhlaWdodDogMjVweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICB0cmFuc2l0aW9uOiAwLjI4cyBlYXNlO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuW3R5cGU9cmFkaW9dICsgc3BhbjpiZWZvcmUsXG5bdHlwZT1yYWRpb10gKyBzcGFuOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIG1hcmdpbjogNHB4O1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICB6LWluZGV4OiAwO1xuICB0cmFuc2l0aW9uOiAwLjI4cyBlYXNlO1xufVxuXG4vKiBVbmNoZWNrZWQgc3R5bGVzICovXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSArIHNwYW46YmVmb3JlLFxuW3R5cGU9cmFkaW9dOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmFmdGVyLFxuW3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSxcblt0eXBlPXJhZGlvXTpjaGVja2VkICsgc3BhbjphZnRlcixcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjpiZWZvcmUsXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUsXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSArIHNwYW46YWZ0ZXIge1xuICBib3JkZXI6IDJweCBzb2xpZCAjNWE1YTVhO1xufVxuXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSArIHNwYW46YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xufVxuXG4vKiBDaGVja2VkIHN0eWxlcyAqL1xuW3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSB7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YWZ0ZXIsXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YmVmb3JlLFxuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcbiAgYm9yZGVyOiAycHggc29saWQgIzI2YTY5YTtcbn1cblxuW3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBzcGFuOmFmdGVyLFxuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbn1cblxuW3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbn1cblxuLyogUmFkaW8gV2l0aCBnYXAgKi9cblt0eXBlPXJhZGlvXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC41KTtcbn1cblxuLyogRm9jdXNlZCBzdHlsZXMgKi9cblt0eXBlPXJhZGlvXS50YWJiZWQ6Zm9jdXMgKyBzcGFuOmJlZm9yZSB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4vKiBEaXNhYmxlZCBSYWRpbyBXaXRoIGdhcCAqL1xuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSB7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40Mik7XG59XG5cblt0eXBlPXJhZGlvXS53aXRoLWdhcDpkaXNhYmxlZDpjaGVja2VkICsgc3BhbjphZnRlciB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cblxuLyogRGlzYWJsZWQgc3R5bGUgKi9cblt0eXBlPXJhZGlvXTpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUsXG5bdHlwZT1yYWRpb106ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cblxuW3R5cGU9cmFkaW9dOmRpc2FibGVkICsgc3BhbiB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuXG5bdHlwZT1yYWRpb106ZGlzYWJsZWQ6bm90KDpjaGVja2VkKSArIHNwYW46YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuXG5bdHlwZT1yYWRpb106ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xuICBib3JkZXItY29sb3I6ICM5NDk0OTQ7XG59XG5cbi8qIENoZWNrYm94ZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBSZW1vdmUgZGVmYXVsdCBjaGVja2JveCAqL1xuW3R5cGU9Y2hlY2tib3hdOm5vdCg6Y2hlY2tlZCksXG5bdHlwZT1jaGVja2JveF06Y2hlY2tlZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cblt0eXBlPWNoZWNrYm94XSB7XG4gIC8qIGNoZWNrYm94IGFzcGVjdCAqL1xufVxuW3R5cGU9Y2hlY2tib3hdICsgc3Bhbjpub3QoLmxldmVyKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiAzNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAyNXB4O1xuICBsaW5lLWhlaWdodDogMjVweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblt0eXBlPWNoZWNrYm94XSArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlLCBbdHlwZT1jaGVja2JveF06bm90KC5maWxsZWQtaW4pICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICB6LWluZGV4OiAwO1xuICBib3JkZXI6IDJweCBzb2xpZCAjNWE1YTVhO1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIG1hcmdpbi10b3A6IDNweDtcbiAgdHJhbnNpdGlvbjogMC4ycztcbn1cblt0eXBlPWNoZWNrYm94XTpub3QoLmZpbGxlZC1pbikgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcbiAgYm9yZGVyOiAwO1xuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xufVxuW3R5cGU9Y2hlY2tib3hdOm5vdCg6Y2hlY2tlZCk6ZGlzYWJsZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cblt0eXBlPWNoZWNrYm94XS50YWJiZWQ6Zm9jdXMgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cblt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xuICB0b3A6IC00cHg7XG4gIGxlZnQ6IC01cHg7XG4gIHdpZHRoOiAxMnB4O1xuICBoZWlnaHQ6IDIycHg7XG4gIGJvcmRlci10b3A6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzI2YTY5YTtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMyNmE2OWE7XG4gIHRyYW5zZm9ybTogcm90YXRlKDQwZGVnKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG59XG5bdHlwZT1jaGVja2JveF06Y2hlY2tlZDpkaXNhYmxlZCArIHNwYW46YmVmb3JlIHtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKTtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40Mik7XG59XG5cbi8qIEluZGV0ZXJtaW5hdGUgY2hlY2tib3ggKi9cblt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xuICB0b3A6IC0xMXB4O1xuICBsZWZ0OiAtMTJweDtcbiAgd2lkdGg6IDEwcHg7XG4gIGhlaWdodDogMjJweDtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbiAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICMyNmE2OWE7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG59XG5bdHlwZT1jaGVja2JveF06aW5kZXRlcm1pbmF0ZTpkaXNhYmxlZCArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW4gKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbiArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlLFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbiArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBsZWZ0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIC8qIC4xcyBkZWxheSBpcyBmb3IgY2hlY2sgYW5pbWF0aW9uICovXG4gIHRyYW5zaXRpb246IGJvcmRlciAwLjI1cywgYmFja2dyb3VuZC1jb2xvciAwLjI1cywgd2lkdGggMC4ycyAwLjFzLCBoZWlnaHQgMC4ycyAwLjFzLCB0b3AgMC4ycyAwLjFzLCBsZWZ0IDAuMnMgMC4xcztcbiAgei1pbmRleDogMTtcbn1cblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46bm90KDpjaGVja2VkKSArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGxlZnQ6IDZweDtcbiAgdG9wOiAxMHB4O1xuICB0cmFuc2Zvcm06IHJvdGF0ZVooMzdkZWcpO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG59XG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMnB4IHNvbGlkICM1YTVhNWE7XG4gIHRvcDogMHB4O1xuICB6LWluZGV4OiAwO1xufVxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDFweDtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiAxM3B4O1xuICBib3JkZXItdG9wOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNmZmY7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZmZmO1xuICB0cmFuc2Zvcm06IHJvdGF0ZVooMzdkZWcpO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG59XG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOmNoZWNrZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcbiAgdG9wOiAwO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBib3JkZXI6IDJweCBzb2xpZCAjMjZhNjlhO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xuICB6LWluZGV4OiAwO1xufVxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbi50YWJiZWQ6Zm9jdXMgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBib3JkZXItY29sb3I6ICM1YTVhNWE7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW4udGFiYmVkOmNoZWNrZWQ6Zm9jdXMgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xuICBib3JkZXItY29sb3I6ICMyNmE2OWE7XG59XG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46ZGlzYWJsZWQ6bm90KDpjaGVja2VkKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTQ5NDk0O1xufVxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpkaXNhYmxlZDpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTQ5NDk0O1xuICBib3JkZXItY29sb3I6ICM5NDk0OTQ7XG59XG5cbi8qIFN3aXRjaFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zd2l0Y2gsXG4uc3dpdGNoICoge1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLnN3aXRjaCBsYWJlbCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XSB7XG4gIG9wYWNpdHk6IDA7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG59XG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAubGV2ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODRjN2MxO1xufVxuLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmxldmVyOmJlZm9yZSwgLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmxldmVyOmFmdGVyIHtcbiAgbGVmdDogMThweDtcbn1cbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5sZXZlcjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG59XG5cbi5zd2l0Y2ggbGFiZWwgLmxldmVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG4gIGJvcmRlci1yYWRpdXM6IDE1cHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcyBlYXNlO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW46IDAgMTZweDtcbn1cbi5zd2l0Y2ggbGFiZWwgLmxldmVyOmJlZm9yZSwgLnN3aXRjaCBsYWJlbCAubGV2ZXI6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBsZWZ0OiAwO1xuICB0b3A6IC0zcHg7XG4gIHRyYW5zaXRpb246IGxlZnQgMC4zcyBlYXNlLCBiYWNrZ3JvdW5kIDAuM3MgZWFzZSwgYm94LXNoYWRvdyAwLjFzIGVhc2UsIHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG4uc3dpdGNoIGxhYmVsIC5sZXZlcjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAxNjYsIDE1NCwgMC4xNSk7XG59XG4uc3dpdGNoIGxhYmVsIC5sZXZlcjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGMUYxRjE7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbmlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6bm90KDpkaXNhYmxlZCkgfiAubGV2ZXI6YWN0aXZlOjpiZWZvcmUsXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOm5vdCg6ZGlzYWJsZWQpLnRhYmJlZDpmb2N1cyB+IC5sZXZlcjo6YmVmb3JlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgyLjQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAxNjYsIDE1NCwgMC4xNSk7XG59XG5cbmlucHV0W3R5cGU9Y2hlY2tib3hdOm5vdCg6ZGlzYWJsZWQpIH4gLmxldmVyOmFjdGl2ZTpiZWZvcmUsXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpub3QoOmRpc2FibGVkKS50YWJiZWQ6Zm9jdXMgfiAubGV2ZXI6OmJlZm9yZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMi40KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLnN3aXRjaCBpbnB1dFt0eXBlPWNoZWNrYm94XVtkaXNhYmxlZF0gKyAubGV2ZXIge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF1bZGlzYWJsZWRdICsgLmxldmVyOmFmdGVyLFxuLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XVtkaXNhYmxlZF06Y2hlY2tlZCArIC5sZXZlcjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NDk0OTQ7XG59XG5cbi8qIFNlbGVjdCBGaWVsZFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbnNlbGVjdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbnNlbGVjdC5icm93c2VyLWRlZmF1bHQge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuc2VsZWN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZjJmMmYyO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGhlaWdodDogNTZweDtcbn1cblxuLnNlbGVjdC1sYWJlbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLnNlbGVjdC13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnNlbGVjdC13cmFwcGVyLnZhbGlkICsgbGFiZWwsIC5zZWxlY3Qtd3JhcHBlci5pbnZhbGlkICsgbGFiZWwge1xuICB3aWR0aDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc2VsZWN0LXdyYXBwZXIgaW5wdXQuc2VsZWN0LWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOWU5ZTllO1xuICBvdXRsaW5lOiBub25lO1xuICBoZWlnaHQ6IDU2cHg7XG4gIGxpbmUtaGVpZ2h0OiA1NnB4O1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBtYXJnaW46IDAgMCA4cHggMDtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB6LWluZGV4OiAxO1xufVxuLnNlbGVjdC13cmFwcGVyIGlucHV0LnNlbGVjdC1kcm9wZG93bjpmb2N1cyB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMjZhNjlhO1xufVxuLnNlbGVjdC13cmFwcGVyIC5jYXJldCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBtYXJnaW46IGF1dG8gMDtcbiAgei1pbmRleDogMDtcbiAgZmlsbDogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cbi5zZWxlY3Qtd3JhcHBlciArIGxhYmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0yNnB4O1xuICBmb250LXNpemU6IDAuOHJlbTtcbn1cblxuc2VsZWN0OmRpc2FibGVkIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG59XG5cbi5zZWxlY3Qtd3JhcHBlci5kaXNhYmxlZCArIGxhYmVsIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG59XG4uc2VsZWN0LXdyYXBwZXIuZGlzYWJsZWQgLmNhcmV0IHtcbiAgZmlsbDogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cblxuLnNlbGVjdC13cmFwcGVyIGlucHV0LnNlbGVjdC1kcm9wZG93bjpkaXNhYmxlZCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uc2VsZWN0LXdyYXBwZXIgaSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbi5zZWxlY3QtZHJvcGRvd24gbGkuZGlzYWJsZWQsXG4uc2VsZWN0LWRyb3Bkb3duIGxpLmRpc2FibGVkID4gc3Bhbixcbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuYm9keS5rZXlib2FyZC1mb2N1c2VkIC5zZWxlY3QtZHJvcGRvd24uZHJvcGRvd24tY29udGVudCBsaTpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG59XG5cbi5zZWxlY3QtZHJvcGRvd24uZHJvcGRvd24tY29udGVudCBsaTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG59XG4uc2VsZWN0LWRyb3Bkb3duLmRyb3Bkb3duLWNvbnRlbnQgbGkuc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDMpO1xufVxuXG4ucHJlZml4IH4gLnNlbGVjdC13cmFwcGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XG4gIHdpZHRoOiA5MiU7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtKTtcbn1cblxuLnByZWZpeCB+IGxhYmVsIHtcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XG59XG5cbi5zZWxlY3QtZHJvcGRvd24gbGkgaW1nIHtcbiAgbWFyZ2luOiA1cHggMTVweDtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4uc2VsZWN0LWRyb3Bkb3duIGxpLm9wdGdyb3VwLnNlbGVjdGVkID4gc3BhbiB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7XG59XG4uc2VsZWN0LWRyb3Bkb3duIGxpLm9wdGdyb3VwID4gc3BhbiB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNCk7XG59XG4uc2VsZWN0LWRyb3Bkb3duIGxpLm9wdGdyb3VwIH4gbGkub3B0Z3JvdXAtb3B0aW9uIHtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xufVxuXG4vKiBGaWxlIElucHV0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmZpbGUtZmllbGQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZmlsZS1maWVsZCAuZmlsZS1wYXRoLXdyYXBwZXIge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uZmlsZS1maWVsZCBpbnB1dC5maWxlLXBhdGgge1xuICB3aWR0aDogMTAwJTtcbn1cbi5maWxlLWZpZWxkIC5idG4sIC5maWxlLWZpZWxkIC5idG4tc21hbGwsIC5maWxlLWZpZWxkIC5idG4tbGFyZ2Uge1xuICBmbG9hdDogbGVmdDtcbiAgaGVpZ2h0OiA1NnB4O1xuICBsaW5lLWhlaWdodDogNTZweDtcbn1cbi5maWxlLWZpZWxkIHNwYW4ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uZmlsZS1maWVsZCBpbnB1dFt0eXBlPWZpbGVdIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvcGFjaXR5OiAwO1xuICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG4uZmlsZS1maWVsZCBpbnB1dFt0eXBlPWZpbGVdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIFJhbmdlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnJhbmdlLWZpZWxkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXSxcbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMTVweCAwO1xuICBwYWRkaW5nOiAwO1xufVxuaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXSArIC50aHVtYiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMHB4O1xuICBsZWZ0OiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbiAgbWFyZ2luLWxlZnQ6IDdweDtcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbn1cbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iIC52YWx1ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMzBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzI2YTY5YTtcbiAgZm9udC1zaXplOiAwO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG59XG5pbnB1dFt0eXBlPXJhbmdlXSArIC50aHVtYi5hY3RpdmUge1xuICBib3JkZXItcmFkaXVzOiA1MCUgNTAlIDUwJSAwO1xufVxuaW5wdXRbdHlwZT1yYW5nZV0gKyAudGh1bWIuYWN0aXZlIC52YWx1ZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBtYXJnaW4tbGVmdDogLTFweDtcbiAgbWFyZ2luLXRvcDogOHB4O1xuICBmb250LXNpemU6IDEwcHg7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICBoZWlnaHQ6IDNweDtcbiAgYmFja2dyb3VuZDogI2MyYzBjMjtcbiAgYm9yZGVyOiBub25lO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMTRweDtcbiAgd2lkdGg6IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogIzI2YTY5YTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gIG1hcmdpbjogLTVweCAwIDAgMDtcbn1cblxuLmtleWJvYXJkLWZvY3VzZWQgaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXM6bm90KC5hY3RpdmUpOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgzOCwgMTY2LCAxNTQsIDAuMjYpO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXSB7XG4gIC8qIGZpeCBmb3IgRkYgdW5hYmxlIHRvIGFwcGx5IGZvY3VzIHN0eWxlIGJ1ZyAgKi9cbiAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XG4gIC8qcmVxdWlyZWQgZm9yIHByb3BlciB0cmFjayBzaXppbmcgaW4gRkYqL1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10cmFjayB7XG4gIGhlaWdodDogM3B4O1xuICBiYWNrZ3JvdW5kOiAjYzJjMGMyO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10aHVtYiB7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiAxNHB4O1xuICB3aWR0aDogMTRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiAjMjZhNjlhO1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuM3M7XG4gIG1hcmdpbi10b3A6IC01cHg7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IHNvbGlkICNmZmY7XG4gIG91dGxpbmUtb2Zmc2V0OiAtMXB4O1xufVxuXG4ua2V5Ym9hcmQtZm9jdXNlZCBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czpub3QoLmFjdGl2ZSk6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoMzgsIDE2NiwgMTU0LCAwLjI2KTtcbn1cblxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFjayB7XG4gIGhlaWdodDogM3B4O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiA2cHggMDtcbiAgLypyZW1vdmUgZGVmYXVsdCB0aWNrIG1hcmtzKi9cbiAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLWZpbGwtbG93ZXIge1xuICBiYWNrZ3JvdW5kOiAjNzc3O1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLWZpbGwtdXBwZXIge1xuICBiYWNrZ3JvdW5kOiAjZGRkO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1iIHtcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IDE0cHg7XG4gIHdpZHRoOiAxNHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6ICMyNmE2OWE7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcztcbn1cblxuLmtleWJvYXJkLWZvY3VzZWQgaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXM6bm90KC5hY3RpdmUpOjotbXMtdGh1bWIge1xuICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoMzgsIDE2NiwgMTU0LCAwLjI2KTtcbn1cblxuLnBhcmFsbGF4IHtcbiAgLyogU2V0IGEgc3BlY2lmaWMgaGVpZ2h0ICovXG4gIG1pbi1oZWlnaHQ6IDUwMHB4O1xuICAvKiBDcmVhdGUgdGhlIHBhcmFsbGF4IHNjcm9sbGluZyBlZmZlY3QgKi9cbiAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuXG4qIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xufVxuXG4uc2NlbmUge1xuICB3aWR0aDogMjAwcHg7XG4gIGhlaWdodDogMjAwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNDQ0M7XG4gIG1hcmdpbjogODBweDtcbiAgcGVyc3BlY3RpdmU6IDQwMHB4O1xufVxuXG4uY3ViZSB7XG4gIHdpZHRoOiAyMDBweDtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTQwMHB4KTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDFzO1xufVxuXG4uY3ViZS5zaG93LWZyb250IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVZKDBkZWcpO1xufVxuXG4uY3ViZS5zaG93LXJpZ2h0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVZKC05MGRlZyk7XG59XG5cbi5jdWJlLnNob3ctYmFjayB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWSgtMTgwZGVnKTtcbn1cblxuLmN1YmUuc2hvdy1sZWZ0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVZKDkwZGVnKTtcbn1cblxuLmN1YmUuc2hvdy10b3Age1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVgoLTkwZGVnKTtcbn1cblxuLmN1YmUuc2hvdy1ib3R0b20ge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVgoOTBkZWcpO1xufVxuXG4uY3ViZV9fZmFjZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDIwMHB4O1xuICBoZWlnaHQ6IDIwMHB4O1xuICBib3JkZXI6IDJweCBzb2xpZCBibGFjaztcbiAgbGluZS1oZWlnaHQ6IDIwMHB4O1xuICBmb250LXNpemU6IDQwcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogd2hpdGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmN1YmVfX2ZhY2UtLWZyb250IHtcbiAgYmFja2dyb3VuZDogaHNsYSgwLCAxMDAlLCA1MCUsIDAuNyk7XG59XG5cbi5jdWJlX19mYWNlLS1yaWdodCB7XG4gIGJhY2tncm91bmQ6IGhzbGEoNjAsIDEwMCUsIDUwJSwgMC43KTtcbn1cblxuLmN1YmVfX2ZhY2UtLWJhY2sge1xuICBiYWNrZ3JvdW5kOiBoc2xhKDEyMCwgMTAwJSwgNTAlLCAwLjcpO1xufVxuXG4uY3ViZV9fZmFjZS0tbGVmdCB7XG4gIGJhY2tncm91bmQ6IGhzbGEoMTgwLCAxMDAlLCA1MCUsIDAuNyk7XG59XG5cbi5jdWJlX19mYWNlLS10b3Age1xuICBiYWNrZ3JvdW5kOiBoc2xhKDI0MCwgMTAwJSwgNTAlLCAwLjcpO1xufVxuXG4uY3ViZV9fZmFjZS0tYm90dG9tIHtcbiAgYmFja2dyb3VuZDogaHNsYSgzMDAsIDEwMCUsIDUwJSwgMC43KTtcbn1cblxuLmN1YmVfX2ZhY2UtLWZyb250IHtcbiAgdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xufVxuXG4uY3ViZV9fZmFjZS0tcmlnaHQge1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xufVxuXG4uY3ViZV9fZmFjZS0tYmFjayB7XG4gIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xufVxuXG4uY3ViZV9fZmFjZS0tbGVmdCB7XG4gIHRyYW5zZm9ybTogcm90YXRlWSgtOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xufVxuXG4uY3ViZV9fZmFjZS0tdG9wIHtcbiAgdHJhbnNmb3JtOiByb3RhdGVYKDkwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTtcbn1cblxuLmN1YmVfX2ZhY2UtLWJvdHRvbSB7XG4gIHRyYW5zZm9ybTogcm90YXRlWCgtOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xufVxuXG5sYWJlbCB7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbn1cblxuLmNvbnRhaW5lciB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBtYXgtd2lkdGg6IDEyODBweDtcbiAgd2lkdGg6IDkwJTtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogNjAxcHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDg1JTtcbiAgfVxufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDcwJTtcbiAgfVxufVxuLmNvbCAucm93IHtcbiAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XG4gIG1hcmdpbi1yaWdodDogLTAuNXJlbTtcbn1cblxuLnNlY3Rpb24ge1xuICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XG59XG4uc2VjdGlvbi5uby1wYWQge1xuICBwYWRkaW5nOiAwO1xufVxuLnNlY3Rpb24ubm8tcGFkLWJvdCB7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xufVxuLnNlY3Rpb24ubm8tcGFkLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuXG4ucm93IHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbi5yb3c6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgY2xlYXI6IGJvdGg7XG59XG4ucm93IC5jb2wge1xuICBmbG9hdDogbGVmdDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMCAwLjVyZW07XG4gIG1pbi1oZWlnaHQ6IDFweDtcbn1cbi5yb3cgLmNvbFtjbGFzcyo9cHVzaC1dLCAucm93IC5jb2xbY2xhc3MqPXB1bGwtXSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5yb3cgLmNvbC5zMSB7XG4gIHdpZHRoOiA4LjMzMzMzMzMzMzMlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wuczIge1xuICB3aWR0aDogMTYuNjY2NjY2NjY2NyU7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogYXV0bztcbn1cbi5yb3cgLmNvbC5zMyB7XG4gIHdpZHRoOiAyNSU7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogYXV0bztcbn1cbi5yb3cgLmNvbC5zNCB7XG4gIHdpZHRoOiAzMy4zMzMzMzMzMzMzJTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnJvdyAuY29sLnM1IHtcbiAgd2lkdGg6IDQxLjY2NjY2NjY2NjclO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wuczYge1xuICB3aWR0aDogNTAlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wuczcge1xuICB3aWR0aDogNTguMzMzMzMzMzMzMyU7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogYXV0bztcbn1cbi5yb3cgLmNvbC5zOCB7XG4gIHdpZHRoOiA2Ni42NjY2NjY2NjY3JTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnJvdyAuY29sLnM5IHtcbiAgd2lkdGg6IDc1JTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnJvdyAuY29sLnMxMCB7XG4gIHdpZHRoOiA4My4zMzMzMzMzMzMzJTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnJvdyAuY29sLnMxMSB7XG4gIHdpZHRoOiA5MS42NjY2NjY2NjY3JTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnJvdyAuY29sLnMxMiB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wub2Zmc2V0LXMxIHtcbiAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wucHVsbC1zMSB7XG4gIHJpZ2h0OiA4LjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLnB1c2gtczEge1xuICBsZWZ0OiA4LjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLm9mZnNldC1zMiB7XG4gIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5wdWxsLXMyIHtcbiAgcmlnaHQ6IDE2LjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLnB1c2gtczIge1xuICBsZWZ0OiAxNi42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5vZmZzZXQtczMge1xuICBtYXJnaW4tbGVmdDogMjUlO1xufVxuLnJvdyAuY29sLnB1bGwtczMge1xuICByaWdodDogMjUlO1xufVxuLnJvdyAuY29sLnB1c2gtczMge1xuICBsZWZ0OiAyNSU7XG59XG4ucm93IC5jb2wub2Zmc2V0LXM0IHtcbiAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLnB1bGwtczQge1xuICByaWdodDogMzMuMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wucHVzaC1zNCB7XG4gIGxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLm9mZnNldC1zNSB7XG4gIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5wdWxsLXM1IHtcbiAgcmlnaHQ6IDQxLjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLnB1c2gtczUge1xuICBsZWZ0OiA0MS42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5vZmZzZXQtczYge1xuICBtYXJnaW4tbGVmdDogNTAlO1xufVxuLnJvdyAuY29sLnB1bGwtczYge1xuICByaWdodDogNTAlO1xufVxuLnJvdyAuY29sLnB1c2gtczYge1xuICBsZWZ0OiA1MCU7XG59XG4ucm93IC5jb2wub2Zmc2V0LXM3IHtcbiAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLnB1bGwtczcge1xuICByaWdodDogNTguMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wucHVzaC1zNyB7XG4gIGxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLm9mZnNldC1zOCB7XG4gIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5wdWxsLXM4IHtcbiAgcmlnaHQ6IDY2LjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLnB1c2gtczgge1xuICBsZWZ0OiA2Ni42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5vZmZzZXQtczkge1xuICBtYXJnaW4tbGVmdDogNzUlO1xufVxuLnJvdyAuY29sLnB1bGwtczkge1xuICByaWdodDogNzUlO1xufVxuLnJvdyAuY29sLnB1c2gtczkge1xuICBsZWZ0OiA3NSU7XG59XG4ucm93IC5jb2wub2Zmc2V0LXMxMCB7XG4gIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTtcbn1cbi5yb3cgLmNvbC5wdWxsLXMxMCB7XG4gIHJpZ2h0OiA4My4zMzMzMzMzMzMzJTtcbn1cbi5yb3cgLmNvbC5wdXNoLXMxMCB7XG4gIGxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLm9mZnNldC1zMTEge1xuICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7XG59XG4ucm93IC5jb2wucHVsbC1zMTEge1xuICByaWdodDogOTEuNjY2NjY2NjY2NyU7XG59XG4ucm93IC5jb2wucHVzaC1zMTEge1xuICBsZWZ0OiA5MS42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5vZmZzZXQtczEyIHtcbiAgbWFyZ2luLWxlZnQ6IDEwMCU7XG59XG4ucm93IC5jb2wucHVsbC1zMTIge1xuICByaWdodDogMTAwJTtcbn1cbi5yb3cgLmNvbC5wdXNoLXMxMiB7XG4gIGxlZnQ6IDEwMCU7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xuICAucm93IC5jb2wubTEge1xuICAgIHdpZHRoOiA4LjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm0yIHtcbiAgICB3aWR0aDogMTYuNjY2NjY2NjY2NyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubTMge1xuICAgIHdpZHRoOiAyNSU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubTQge1xuICAgIHdpZHRoOiAzMy4zMzMzMzMzMzMzJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5tNSB7XG4gICAgd2lkdGg6IDQxLjY2NjY2NjY2NjclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm02IHtcbiAgICB3aWR0aDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm03IHtcbiAgICB3aWR0aDogNTguMzMzMzMzMzMzMyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubTgge1xuICAgIHdpZHRoOiA2Ni42NjY2NjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5tOSB7XG4gICAgd2lkdGg6IDc1JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5tMTAge1xuICAgIHdpZHRoOiA4My4zMzMzMzMzMzMzJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5tMTEge1xuICAgIHdpZHRoOiA5MS42NjY2NjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5tMTIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1tMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbTEge1xuICAgIHJpZ2h0OiA4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW0xIHtcbiAgICBsZWZ0OiA4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbTIge1xuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1tMiB7XG4gICAgcmlnaHQ6IDE2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW0yIHtcbiAgICBsZWZ0OiAxNi42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LW0zIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW0zIHtcbiAgICByaWdodDogMjUlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW0zIHtcbiAgICBsZWZ0OiAyNSU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1tNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW00IHtcbiAgICByaWdodDogMzMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTQge1xuICAgIGxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbTUge1xuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1tNSB7XG4gICAgcmlnaHQ6IDQxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW01IHtcbiAgICBsZWZ0OiA0MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LW02IHtcbiAgICBtYXJnaW4tbGVmdDogNTAlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW02IHtcbiAgICByaWdodDogNTAlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW02IHtcbiAgICBsZWZ0OiA1MCU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1tNyB7XG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW03IHtcbiAgICByaWdodDogNTguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTcge1xuICAgIGxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbTgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1tOCB7XG4gICAgcmlnaHQ6IDY2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW04IHtcbiAgICBsZWZ0OiA2Ni42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LW05IHtcbiAgICBtYXJnaW4tbGVmdDogNzUlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW05IHtcbiAgICByaWdodDogNzUlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW05IHtcbiAgICBsZWZ0OiA3NSU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1tMTAge1xuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1tMTAge1xuICAgIHJpZ2h0OiA4My4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1tMTAge1xuICAgIGxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbTExIHtcbiAgICByaWdodDogOTEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTExIHtcbiAgICBsZWZ0OiA5MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LW0xMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwMCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbTEyIHtcbiAgICByaWdodDogMTAwJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1tMTIge1xuICAgIGxlZnQ6IDEwMCU7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDk5M3B4KSB7XG4gIC5yb3cgLmNvbC5sMSB7XG4gICAgd2lkdGg6IDguMzMzMzMzMzMzMyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubDIge1xuICAgIHdpZHRoOiAxNi42NjY2NjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5sMyB7XG4gICAgd2lkdGg6IDI1JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5sNCB7XG4gICAgd2lkdGg6IDMzLjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLmw1IHtcbiAgICB3aWR0aDogNDEuNjY2NjY2NjY2NyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubDYge1xuICAgIHdpZHRoOiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubDcge1xuICAgIHdpZHRoOiA1OC4zMzMzMzMzMzMzJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5sOCB7XG4gICAgd2lkdGg6IDY2LjY2NjY2NjY2NjclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLmw5IHtcbiAgICB3aWR0aDogNzUlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLmwxMCB7XG4gICAgd2lkdGg6IDgzLjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLmwxMSB7XG4gICAgd2lkdGg6IDkxLjY2NjY2NjY2NjclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLmwxMiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LWwxIHtcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1sMSB7XG4gICAgcmlnaHQ6IDguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDEge1xuICAgIGxlZnQ6IDguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1sMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLWwyIHtcbiAgICByaWdodDogMTYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDIge1xuICAgIGxlZnQ6IDE2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbDMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDMge1xuICAgIHJpZ2h0OiAyNSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDMge1xuICAgIGxlZnQ6IDI1JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LWw0IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDQge1xuICAgIHJpZ2h0OiAzMy4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sNCB7XG4gICAgbGVmdDogMzMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1sNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLWw1IHtcbiAgICByaWdodDogNDEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDUge1xuICAgIGxlZnQ6IDQxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbDYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDYge1xuICAgIHJpZ2h0OiA1MCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDYge1xuICAgIGxlZnQ6IDUwJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LWw3IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDcge1xuICAgIHJpZ2h0OiA1OC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sNyB7XG4gICAgbGVmdDogNTguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1sOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLWw4IHtcbiAgICByaWdodDogNjYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDgge1xuICAgIGxlZnQ6IDY2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbDkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDkge1xuICAgIHJpZ2h0OiA3NSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDkge1xuICAgIGxlZnQ6IDc1JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LWwxMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLWwxMCB7XG4gICAgcmlnaHQ6IDgzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLWwxMCB7XG4gICAgbGVmdDogODMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1sMTEge1xuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1sMTEge1xuICAgIHJpZ2h0OiA5MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sMTEge1xuICAgIGxlZnQ6IDkxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbDEyIHtcbiAgICBtYXJnaW4tbGVmdDogMTAwJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1sMTIge1xuICAgIHJpZ2h0OiAxMDAlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLWwxMiB7XG4gICAgbGVmdDogMTAwJTtcbiAgfVxufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogMTIwMXB4KSB7XG4gIC5yb3cgLmNvbC54bDEge1xuICAgIHdpZHRoOiA4LjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLnhsMiB7XG4gICAgd2lkdGg6IDE2LjY2NjY2NjY2NjclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLnhsMyB7XG4gICAgd2lkdGg6IDI1JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC54bDQge1xuICAgIHdpZHRoOiAzMy4zMzMzMzMzMzMzJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC54bDUge1xuICAgIHdpZHRoOiA0MS42NjY2NjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC54bDYge1xuICAgIHdpZHRoOiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wueGw3IHtcbiAgICB3aWR0aDogNTguMzMzMzMzMzMzMyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wueGw4IHtcbiAgICB3aWR0aDogNjYuNjY2NjY2NjY2NyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wueGw5IHtcbiAgICB3aWR0aDogNzUlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLnhsMTAge1xuICAgIHdpZHRoOiA4My4zMzMzMzMzMzMzJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC54bDExIHtcbiAgICB3aWR0aDogOTEuNjY2NjY2NjY2NyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wueGwxMiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LXhsMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwteGwxIHtcbiAgICByaWdodDogOC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDEge1xuICAgIGxlZnQ6IDguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC14bDIge1xuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC14bDIge1xuICAgIHJpZ2h0OiAxNi42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDIge1xuICAgIGxlZnQ6IDE2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQteGwzIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsMyB7XG4gICAgcmlnaHQ6IDI1JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDMge1xuICAgIGxlZnQ6IDI1JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LXhsNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsNCB7XG4gICAgcmlnaHQ6IDMzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsNCB7XG4gICAgbGVmdDogMzMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC14bDUge1xuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC14bDUge1xuICAgIHJpZ2h0OiA0MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDUge1xuICAgIGxlZnQ6IDQxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQteGw2IHtcbiAgICBtYXJnaW4tbGVmdDogNTAlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsNiB7XG4gICAgcmlnaHQ6IDUwJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDYge1xuICAgIGxlZnQ6IDUwJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LXhsNyB7XG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsNyB7XG4gICAgcmlnaHQ6IDU4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsNyB7XG4gICAgbGVmdDogNTguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC14bDgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC14bDgge1xuICAgIHJpZ2h0OiA2Ni42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDgge1xuICAgIGxlZnQ6IDY2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQteGw5IHtcbiAgICBtYXJnaW4tbGVmdDogNzUlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsOSB7XG4gICAgcmlnaHQ6IDc1JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDkge1xuICAgIGxlZnQ6IDc1JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LXhsMTAge1xuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC14bDEwIHtcbiAgICByaWdodDogODMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gteGwxMCB7XG4gICAgbGVmdDogODMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC14bDExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwteGwxMSB7XG4gICAgcmlnaHQ6IDkxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsMTEge1xuICAgIGxlZnQ6IDkxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQteGwxMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwMCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwteGwxMiB7XG4gICAgcmlnaHQ6IDEwMCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gteGwxMiB7XG4gICAgbGVmdDogMTAwJTtcbiAgfVxufVxuXG4uc2lkZW5hdiB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgd2lkdGg6IDMwMHB4O1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSArIDYwcHgpO1xuICBoZWlnaHQ6IC1tb3otY2FsYygxMDAlKTtcbiAgcGFkZGluZy1ib3R0b206IDYwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHotaW5kZXg6IDk5OTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwNSUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMXM7XG59XG4uc2lkZW5hdi5yaWdodC1hbGlnbmVkIHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGF1dG87XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cbi5zaWRlbmF2IC5jb2xsYXBzaWJsZSB7XG4gIG1hcmdpbjogMDtcbn1cbi5zaWRlbmF2IGxpIHtcbiAgZmxvYXQ6IG5vbmU7XG59XG4uc2lkZW5hdiBsaSAuaWNvblNpZGVMaW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5zaWRlbmF2IGxpIC5pY29uU2lkZUxpbmsgc3ZnIHtcbiAgc3Ryb2tlOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIHdpZHRoOiAzMHB4O1xufVxuLnNpZGVuYXYgbGkuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cbi5zaWRlbmF2IGxpLmFjdGl2ZSBzdmcge1xuICBzdHJva2U6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAzMHB4O1xufVxuLnNpZGVuYXYgbGkubGFzdCB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogY2FsYygxMDAlIC0gNDVweCAtIDM1cHgpO1xufVxuLnNpZGVuYXYgbGkgPiBhIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgaGVpZ2h0OiA0NXB4O1xuICBsaW5lLWhlaWdodDogNDVweDtcbiAgcGFkZGluZzogMCAzMHB4O1xufVxuLnNpZGVuYXYgbGkgPiBhOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cbi5zaWRlbmF2IGxpID4gYS5idG4sIC5zaWRlbmF2IGxpID4gYS5idG4tc21hbGwsIC5zaWRlbmF2IGxpID4gYS5idG4tbGFyZ2UsIC5zaWRlbmF2IGxpID4gYS5idG4tZmxhdCwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1mbG9hdGluZyB7XG4gIG1hcmdpbjogMTBweCAxNXB4O1xufVxuLnNpZGVuYXYgbGkgPiBhLmJ0biwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1zbWFsbCwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1sYXJnZSwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1mbG9hdGluZyB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLnNpZGVuYXYgbGkgPiBhLmJ0bi1mbGF0IHtcbiAgY29sb3I6ICMzNDM0MzQ7XG59XG4uc2lkZW5hdiBsaSA+IGEuYnRuOmhvdmVyLCAuc2lkZW5hdiBsaSA+IGEuYnRuLXNtYWxsOmhvdmVyLCAuc2lkZW5hdiBsaSA+IGEuYnRuLWxhcmdlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQxNDE0MTtcbn1cbi5zaWRlbmF2IGxpID4gYS5idG4tZmxvYXRpbmc6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzNDM0O1xufVxuLnNpZGVuYXYgbGkgPiBhID4gaSwgLnNpZGVuYXYgbGkgPiBhID4gW2NsYXNzXj1tZGktXSxcbi5zaWRlbmF2IGxpID4gYSBsaSA+IGEgPiBbY2xhc3MqPW1kaS1dLCAuc2lkZW5hdiBsaSA+IGEgPiBpLnMtaWNvbiB7XG4gIGZsb2F0OiBsZWZ0O1xuICBoZWlnaHQ6IDQ1cHg7XG4gIGxpbmUtaGVpZ2h0OiA0NXB4O1xuICBtYXJnaW46IDAgMzBweCAwIDA7XG4gIHdpZHRoOiAyMi41cHg7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuLnNpZGVuYXYgLmRpdmlkZXIge1xuICBtYXJnaW46IDcuNXB4IDAgMCAwO1xufVxuLnNpZGVuYXYgLnN1YmhlYWRlciB7XG4gIGN1cnNvcjogaW5pdGlhbDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiA0NXB4O1xufVxuLnNpZGVuYXYgLnN1YmhlYWRlcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLnNpZGVuYXYgLnVzZXItdmlldyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMzBweCAzMHB4IDA7XG4gIG1hcmdpbi1ib3R0b206IDcuNXB4O1xufVxuLnNpZGVuYXYgLnVzZXItdmlldyA+IGEge1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDA7XG59XG4uc2lkZW5hdiAudXNlci12aWV3ID4gYTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLnNpZGVuYXYgLnVzZXItdmlldyAuYmFja2dyb3VuZCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAtMTtcbn1cbi5zaWRlbmF2IC51c2VyLXZpZXcgLmNpcmNsZSxcbi5zaWRlbmF2IC51c2VyLXZpZXcgLm5hbWUsXG4uc2lkZW5hdiAudXNlci12aWV3IC5lbWFpbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnNpZGVuYXYgLnVzZXItdmlldyAuY2lyY2xlIHtcbiAgaGVpZ2h0OiA2NHB4O1xuICB3aWR0aDogNjRweDtcbn1cbi5zaWRlbmF2IC51c2VyLXZpZXcgLm5hbWUsXG4uc2lkZW5hdiAudXNlci12aWV3IC5lbWFpbCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIyLjVweDtcbn1cbi5zaWRlbmF2IC51c2VyLXZpZXcgLm5hbWUge1xuICBtYXJnaW4tdG9wOiAxNnB4O1xuICBmb250LXdlaWdodDogNTAwO1xufVxuLnNpZGVuYXYgLnVzZXItdmlldyAuZW1haWwge1xuICBwYWRkaW5nLWJvdHRvbTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuLmRyYWctdGFyZ2V0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTBweDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHotaW5kZXg6IDk5ODtcbn1cbi5kcmFnLXRhcmdldC5yaWdodC1hbGlnbmVkIHtcbiAgcmlnaHQ6IDA7XG59XG5cbi5zaWRlbmF2LnNpZGVuYXYtZml4ZWQge1xuICBsZWZ0OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cbi5zaWRlbmF2LnNpZGVuYXYtZml4ZWQucmlnaHQtYWxpZ25lZCB7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiBhdXRvO1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xuICAuc2lkZW5hdi5zaWRlbmF2LWZpeGVkIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwNSUpO1xuICB9XG4gIC5zaWRlbmF2LnNpZGVuYXYtZml4ZWQucmlnaHQtYWxpZ25lZCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwNSUpO1xuICB9XG4gIC5zaWRlbmF2ID4gYSB7XG4gICAgcGFkZGluZzogMCAxNXB4O1xuICB9XG4gIC5zaWRlbmF2IC51c2VyLXZpZXcge1xuICAgIHBhZGRpbmc6IDE1cHggMTVweCAwO1xuICB9XG59XG4uc2lkZW5hdiAuY29sbGFwc2libGUtYm9keSA+IHVsOm5vdCguY29sbGFwc2libGUpID4gbGkuYWN0aXZlLFxuLnNpZGVuYXYuc2lkZW5hdi1maXhlZCAuY29sbGFwc2libGUtYm9keSA+IHVsOm5vdCguY29sbGFwc2libGUpID4gbGkuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwY2FmOTtcbn1cbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1ib2R5ID4gdWw6bm90KC5jb2xsYXBzaWJsZSkgPiBsaS5hY3RpdmUgYSxcbi5zaWRlbmF2LnNpZGVuYXYtZml4ZWQgLmNvbGxhcHNpYmxlLWJvZHkgPiB1bDpub3QoLmNvbGxhcHNpYmxlKSA+IGxpLmFjdGl2ZSBhIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1ib2R5IHtcbiAgcGFkZGluZzogMDtcbn1cblxuLnNpZGVuYXYtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAxMjB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICB6LWluZGV4OiA5OTc7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi53aXRoLXNpZGUtbmF2LW9wZW4ge1xuICBwYWRkaW5nLWxlZnQ6IDMwMHB4O1xuICB0cmFuc2l0aW9uOiBwYWRkaW5nIDFzO1xufVxuXG4uYnRuLCAuYnRuLXNtYWxsLCAuYnRuLWxhcmdlLFxuLmJ0bi1mbGF0IHtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAzNnB4O1xuICBsaW5lLWhlaWdodDogMzZweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uYnRuLmRpc2FibGVkLFxuLmJ0bi1mbG9hdGluZy5kaXNhYmxlZCxcbi5idG4tbGFyZ2UuZGlzYWJsZWQsXG4uYnRuLXNtYWxsLmRpc2FibGVkLFxuLmJ0bi1mbGF0LmRpc2FibGVkLFxuLmJ0bjpkaXNhYmxlZCxcbi5idG4tZmxvYXRpbmc6ZGlzYWJsZWQsXG4uYnRuLWxhcmdlOmRpc2FibGVkLFxuLmJ0bi1zbWFsbDpkaXNhYmxlZCxcbi5idG4tZmxhdDpkaXNhYmxlZCxcbi5idG5bZGlzYWJsZWRdLFxuLmJ0bi1mbG9hdGluZ1tkaXNhYmxlZF0sXG4uYnRuLWxhcmdlW2Rpc2FibGVkXSxcbi5idG4tc21hbGxbZGlzYWJsZWRdLFxuLmJ0bi1mbGF0W2Rpc2FibGVkXSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjREZERkRGICFpbXBvcnRhbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGNvbG9yOiAjOUY5RjlGICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cbi5idG4uZGlzYWJsZWQ6aG92ZXIsXG4uYnRuLWZsb2F0aW5nLmRpc2FibGVkOmhvdmVyLFxuLmJ0bi1sYXJnZS5kaXNhYmxlZDpob3Zlcixcbi5idG4tc21hbGwuZGlzYWJsZWQ6aG92ZXIsXG4uYnRuLWZsYXQuZGlzYWJsZWQ6aG92ZXIsXG4uYnRuOmRpc2FibGVkOmhvdmVyLFxuLmJ0bi1mbG9hdGluZzpkaXNhYmxlZDpob3Zlcixcbi5idG4tbGFyZ2U6ZGlzYWJsZWQ6aG92ZXIsXG4uYnRuLXNtYWxsOmRpc2FibGVkOmhvdmVyLFxuLmJ0bi1mbGF0OmRpc2FibGVkOmhvdmVyLFxuLmJ0bltkaXNhYmxlZF06aG92ZXIsXG4uYnRuLWZsb2F0aW5nW2Rpc2FibGVkXTpob3Zlcixcbi5idG4tbGFyZ2VbZGlzYWJsZWRdOmhvdmVyLFxuLmJ0bi1zbWFsbFtkaXNhYmxlZF06aG92ZXIsXG4uYnRuLWZsYXRbZGlzYWJsZWRdOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RGREZERiAhaW1wb3J0YW50O1xuICBjb2xvcjogIzlGOUY5RiAhaW1wb3J0YW50O1xufVxuXG4uYnRuLFxuLmJ0bi1zbWFsbCxcbi5idG4tbGFyZ2UsXG4uYnRuLWZsb2F0aW5nLFxuLmJ0bi1mbGF0IHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBvdXRsaW5lOiAwO1xufVxuLmJ0biBpLFxuLmJ0bi1mbG9hdGluZyBpLFxuLmJ0bi1sYXJnZSBpLFxuLmJ0bi1zbWFsbCBpLFxuLmJ0bi1mbGF0IGkge1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi5idG46Zm9jdXMsIC5idG4tc21hbGw6Zm9jdXMsIC5idG4tbGFyZ2U6Zm9jdXMsXG4uYnRuLWZsb2F0aW5nOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFiMWIxYjtcbn1cblxuLmJ0biwgLmJ0bi1zbWFsbCwgLmJ0bi1sYXJnZSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDM0MzQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZS1vdXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5idG46aG92ZXIsIC5idG4tc21hbGw6aG92ZXIsIC5idG4tbGFyZ2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE0MTQxO1xufVxuXG4uYnRuLWZsb2F0aW5nIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogI2ZmZjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB6LWluZGV4OiAxO1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5idG4tZmxvYXRpbmc6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xufVxuLmJ0bi1mbG9hdGluZzpiZWZvcmUge1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuLmJ0bi1mbG9hdGluZy5idG4tbGFyZ2Uge1xuICB3aWR0aDogNTZweDtcbiAgaGVpZ2h0OiA1NnB4O1xuICBwYWRkaW5nOiAwO1xufVxuLmJ0bi1mbG9hdGluZy5idG4tbGFyZ2UuaGFsZndheS1mYWIge1xuICBib3R0b206IDI4cHg7XG59XG4uYnRuLWZsb2F0aW5nLmJ0bi1sYXJnZSBpIHtcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XG59XG4uYnRuLWZsb2F0aW5nLmJ0bi1zbWFsbCB7XG4gIHdpZHRoOiAzMi40cHg7XG4gIGhlaWdodDogMzIuNHB4O1xufVxuLmJ0bi1mbG9hdGluZy5idG4tc21hbGwuaGFsZndheS1mYWIge1xuICBib3R0b206IDE2LjJweDtcbn1cbi5idG4tZmxvYXRpbmcuYnRuLXNtYWxsIGkge1xuICBsaW5lLWhlaWdodDogMzIuNHB4O1xufVxuLmJ0bi1mbG9hdGluZy5oYWxmd2F5LWZhYiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDI0cHg7XG4gIGJvdHRvbTogMjBweDtcbn1cbi5idG4tZmxvYXRpbmcuaGFsZndheS1mYWIubGVmdCB7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAyNHB4O1xufVxuLmJ0bi1mbG9hdGluZyBpIHtcbiAgd2lkdGg6IGluaGVyaXQ7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxLjZyZW07XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xufVxuXG5idXR0b24uYnRuLWZsb2F0aW5nIHtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4uZml4ZWQtYWN0aW9uLWJ0biB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDIzcHg7XG4gIGJvdHRvbTogMjNweDtcbiAgcGFkZGluZy10b3A6IDE1cHg7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHotaW5kZXg6IDk5Nztcbn1cbi5maXhlZC1hY3Rpb24tYnRuLmFjdGl2ZSB1bCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tbGVmdCwgLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLXJpZ2h0IHtcbiAgcGFkZGluZzogMCAwIDAgMTVweDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1sZWZ0IHVsLCAuZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQgdWwge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgcmlnaHQ6IDY0cHg7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGhlaWdodDogMTAwJTtcbiAgbGVmdDogYXV0bztcbiAgLyp3aWR0aCAxMDAlIG9ubHkgZ29lcyB0byB3aWR0aCBvZiBidXR0b24gY29udGFpbmVyICovXG4gIHdpZHRoOiA1MDBweDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1sZWZ0IHVsIGxpLCAuZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQgdWwgbGkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogNy41cHggMTVweCAwIDA7XG59XG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQge1xuICBwYWRkaW5nOiAwIDE1cHggMCAwO1xufVxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLXJpZ2h0IHVsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZGlyZWN0aW9uOiBydGw7XG4gIGxlZnQ6IDY0cHg7XG4gIHJpZ2h0OiBhdXRvO1xufVxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLXJpZ2h0IHVsIGxpIHtcbiAgbWFyZ2luOiA3LjVweCAwIDAgMTVweDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1ib3R0b20ge1xuICBwYWRkaW5nOiAwIDAgMTVweCAwO1xufVxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLWJvdHRvbSB1bCB7XG4gIHRvcDogNjRweDtcbiAgYm90dG9tOiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG59XG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tYm90dG9tIHVsIGxpIHtcbiAgbWFyZ2luOiAxNXB4IDAgMCAwO1xufVxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhciB7XG4gIHBhZGRpbmc6IDA7XG4gIGhlaWdodDogNTZweDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIuYWN0aXZlID4gYSBpIHtcbiAgb3BhY2l0eTogMDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIgdWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgei1pbmRleDogMTtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIgdWwgbGkge1xuICBmbGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhciB1bCBsaSBhIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGNvbG9yOiAjZmZmO1xuICBsaW5lLWhlaWdodDogNTZweDtcbiAgei1pbmRleDogMTtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIgdWwgbGkgYSBpIHtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG4uZml4ZWQtYWN0aW9uLWJ0biB1bCB7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiA2NHB4O1xuICBtYXJnaW46IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5maXhlZC1hY3Rpb24tYnRuIHVsIGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuIHVsIGEuYnRuLWZsb2F0aW5nIHtcbiAgb3BhY2l0eTogMDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuIC5mYWItYmFja2Ryb3Age1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogLTE7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbn1cblxuLmJ0bi1mbGF0IHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjMzQzNDM0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcbn1cbi5idG4tZmxhdDpmb2N1cywgLmJ0bi1mbGF0OmhvdmVyIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5idG4tZmxhdDpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cbi5idG4tZmxhdC5kaXNhYmxlZCwgLmJ0bi1mbGF0LmJ0bi1mbGF0W2Rpc2FibGVkXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjYjNiM2IzICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLmJ0bi1sYXJnZSB7XG4gIGhlaWdodDogNTRweDtcbiAgbGluZS1oZWlnaHQ6IDU0cHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgcGFkZGluZzogMCAyOHB4O1xufVxuLmJ0bi1sYXJnZSBpIHtcbiAgZm9udC1zaXplOiAxLjZyZW07XG59XG5cbi5idG4tc21hbGwge1xuICBoZWlnaHQ6IDMyLjRweDtcbiAgbGluZS1oZWlnaHQ6IDMyLjRweDtcbiAgZm9udC1zaXplOiAxM3B4O1xufVxuLmJ0bi1zbWFsbCBpIHtcbiAgZm9udC1zaXplOiAxLjJyZW07XG59XG5cbi5idG4tYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmNvbW11blRhYkhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTIgLnRhYi1oZWFkZXItb3ZlcjIgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTEgLnRhYi1oZWFkZXItb3ZlcjIgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTAgLnRhYi1oZWFkZXItb3ZlcjIgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciB7XG4gIGhlaWdodDogMTAwcHg7XG4gIHBhZGRpbmc6IDQwcHg7XG59XG5cbi50YWJzIHtcbiAgbWluLWhlaWdodDogY2FsYygxMDAlIC0gMTUwcHgpO1xuICBtYXJnaW4tdG9wOiAzMHB4O1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggIWltcG9ydGFudDtcbn1cbi50YWJzIC5pbm5lcnBhZ2Uge1xuICBtaW4taGVpZ2h0OiA3MFZIICFpbXBvcnRhbnQ7XG59XG4udGFicyAudGFicy1oZWFkZXItb3ZlcmxheSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwcHg7XG59XG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMCB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggNDBweCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMSB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgI2NiZTdmZSwgIzM1YTJmYik7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDQwcHg7XG59XG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMiB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDQwcHg7XG59XG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMCB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCA0MHB4IDA7XG59XG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMSB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgIzgwYzRmZCwgIzM1YTJmYik7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggNDBweCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMiB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDQwcHg7XG59XG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMCB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCA0MHB4IDA7XG59XG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMSB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgIzgwYzRmZCwgI2NiZTdmZSk7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCA0MHB4IDA7XG59XG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMiB7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XG59XG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XG4gIGJvcmRlci1yYWRpdXM6IDQwcHggNDBweCAwIDA7XG59XG4udGFicyAudGFiLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2JlN2ZlO1xuICBwYWRkaW5nOiAxMHB4O1xuICBib3JkZXItdG9wOiAwO1xuICBtaW4taGVpZ2h0OiA3MHZoO1xuICBib3JkZXItcmFkaXVzOiAwIDAgNDBweCA0MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbn1cblxuLmxvYWRlci1vdmVybGF5IHtcbiAgei1pbmRleDogOTk5O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAxMDB2dztcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMiwgMTAwLCAxMDAsIDAuNjAzKTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4ubG9hZGVyLW92ZXJsYXkgLmxvYWRlciB7XG4gIGJvcmRlcjogN3B4IHNvbGlkICNmM2YzZjM7IC8qIExpZ2h0IGdyZXkgKi9cbiAgYm9yZGVyLXRvcDogN3B4IHNvbGlkICMyZWEyY2M7IC8qIEJsdWUgKi9cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogNzBweDtcbiAgaGVpZ2h0OiA3MHB4O1xuICBhbmltYXRpb246IHNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xufVxuLmxvYWRlci1vdmVybGF5IC5sb2FkZXItdGV4dCB7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMjVweDtcbiAgY29sb3I6ICMyZWEyY2M7XG59XG5Aa2V5ZnJhbWVzIHNwaW4ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG4uY2FyZC1wYW5lbCB7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4yNXM7XG4gIHBhZGRpbmc6IDI0cHg7XG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuLmNhcmQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4yNXM7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cbi5jYXJkIC5jYXJkLXRpdGxlIHtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogMzAwO1xufVxuLmNhcmQgLmNhcmQtdGl0bGUuYWN0aXZhdG9yIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmNhcmQuc21hbGwsIC5jYXJkLm1lZGl1bSwgLmNhcmQubGFyZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY2FyZC5zbWFsbCAuY2FyZC1pbWFnZSwgLmNhcmQubWVkaXVtIC5jYXJkLWltYWdlLCAuY2FyZC5sYXJnZSAuY2FyZC1pbWFnZSB7XG4gIG1heC1oZWlnaHQ6IDYwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jYXJkLnNtYWxsIC5jYXJkLWltYWdlICsgLmNhcmQtY29udGVudCwgLmNhcmQubWVkaXVtIC5jYXJkLWltYWdlICsgLmNhcmQtY29udGVudCwgLmNhcmQubGFyZ2UgLmNhcmQtaW1hZ2UgKyAuY2FyZC1jb250ZW50IHtcbiAgbWF4LWhlaWdodDogNDAlO1xufVxuLmNhcmQuc21hbGwgLmNhcmQtY29udGVudCwgLmNhcmQubWVkaXVtIC5jYXJkLWNvbnRlbnQsIC5jYXJkLmxhcmdlIC5jYXJkLWNvbnRlbnQge1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNhcmQuc21hbGwgLmNhcmQtYWN0aW9uLCAuY2FyZC5tZWRpdW0gLmNhcmQtYWN0aW9uLCAuY2FyZC5sYXJnZSAuY2FyZC1hY3Rpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG59XG4uY2FyZC5zbWFsbCB7XG4gIGhlaWdodDogMzAwcHg7XG59XG4uY2FyZC5tZWRpdW0ge1xuICBoZWlnaHQ6IDQwMHB4O1xufVxuLmNhcmQubGFyZ2Uge1xuICBoZWlnaHQ6IDUwMHB4O1xufVxuLmNhcmQuaG9yaXpvbnRhbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uY2FyZC5ob3Jpem9udGFsLnNtYWxsIC5jYXJkLWltYWdlLCAuY2FyZC5ob3Jpem9udGFsLm1lZGl1bSAuY2FyZC1pbWFnZSwgLmNhcmQuaG9yaXpvbnRhbC5sYXJnZSAuY2FyZC1pbWFnZSB7XG4gIGhlaWdodDogMTAwJTtcbiAgbWF4LWhlaWdodDogbm9uZTtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uY2FyZC5ob3Jpem9udGFsLnNtYWxsIC5jYXJkLWltYWdlIGltZywgLmNhcmQuaG9yaXpvbnRhbC5tZWRpdW0gLmNhcmQtaW1hZ2UgaW1nLCAuY2FyZC5ob3Jpem9udGFsLmxhcmdlIC5jYXJkLWltYWdlIGltZyB7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5jYXJkLmhvcml6b250YWwgLmNhcmQtaW1hZ2Uge1xuICBtYXgtd2lkdGg6IDUwJTtcbn1cbi5jYXJkLmhvcml6b250YWwgLmNhcmQtaW1hZ2UgaW1nIHtcbiAgYm9yZGVyLXJhZGl1czogMnB4IDAgMCAycHg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgd2lkdGg6IGF1dG87XG59XG4uY2FyZC5ob3Jpem9udGFsIC5jYXJkLXN0YWNrZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4OiAxO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY2FyZC5ob3Jpem9udGFsIC5jYXJkLXN0YWNrZWQgLmNhcmQtY29udGVudCB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5jYXJkLnN0aWNreS1hY3Rpb24gLmNhcmQtYWN0aW9uIHtcbiAgei1pbmRleDogMjtcbn1cbi5jYXJkLnN0aWNreS1hY3Rpb24gLmNhcmQtcmV2ZWFsIHtcbiAgei1pbmRleDogMTtcbiAgcGFkZGluZy1ib3R0b206IDY0cHg7XG59XG4uY2FyZCAuY2FyZC1pbWFnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jYXJkIC5jYXJkLWltYWdlIGltZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3JkZXItcmFkaXVzOiAycHggMnB4IDAgMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmNhcmQgLmNhcmQtaW1hZ2UgLmNhcmQtdGl0bGUge1xuICBjb2xvcjogI2ZmZjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMjRweDtcbn1cbi5jYXJkIC5jYXJkLWNvbnRlbnQge1xuICBwYWRkaW5nOiAyNHB4O1xuICBib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDtcbn1cbi5jYXJkIC5jYXJkLWNvbnRlbnQgcCB7XG4gIG1hcmdpbjogMDtcbn1cbi5jYXJkIC5jYXJkLWNvbnRlbnQgLmNhcmQtdGl0bGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGluZS1oZWlnaHQ6IDMycHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cbi5jYXJkIC5jYXJkLWNvbnRlbnQgLmNhcmQtdGl0bGUgaSB7XG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xufVxuLmNhcmQgLmNhcmQtYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTYwLCAxNjAsIDE2MCwgMC4yKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAxNnB4IDI0cHg7XG59XG4uY2FyZCAuY2FyZC1hY3Rpb246bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4O1xufVxuLmNhcmQgLmNhcmQtYWN0aW9uIGE6bm90KC5idG4pOm5vdCguYnRuLWxhcmdlKTpub3QoLmJ0bi1zbWFsbCk6bm90KC5idG4tbGFyZ2UpOm5vdCguYnRuLWZsb2F0aW5nKSB7XG4gIGNvbG9yOiAjZmZhYjQwO1xuICBtYXJnaW4tcmlnaHQ6IDI0cHg7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbi5jYXJkIC5jYXJkLWFjdGlvbiBhOm5vdCguYnRuKTpub3QoLmJ0bi1sYXJnZSk6bm90KC5idG4tc21hbGwpOm5vdCguYnRuLWxhcmdlKTpub3QoLmJ0bi1mbG9hdGluZyk6aG92ZXIge1xuICBjb2xvcjogI2ZmZDhhNjtcbn1cbi5jYXJkIC5jYXJkLXJldmVhbCB7XG4gIHBhZGRpbmc6IDI0cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGxlZnQ6IDA7XG4gIHRvcDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAzO1xuICBkaXNwbGF5OiBub25lO1xufVxuLmNhcmQgLmNhcmQtcmV2ZWFsIC5jYXJkLXRpdGxlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAgICBAbGljZW5zZVxuICAgIENvcHlyaWdodCAoYykgMjAxNCBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dFxuICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0XG4gICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0XG4gICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc29cbiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dFxuICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBTVFlMRVMgRk9SIFRIRSBTUElOTkVSICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuICogQ29uc3RhbnRzOlxuICogICAgICBTVFJPS0VXSURUSCA9IDNweFxuICogICAgICBBUkNTSVpFICAgICA9IDI3MCBkZWdyZWVzIChhbW91bnQgb2YgY2lyY2xlIHRoZSBhcmMgdGFrZXMgdXApXG4gKiAgICAgIEFSQ1RJTUUgICAgID0gMTMzM21zICh0aW1lIGl0IHRha2VzIHRvIGV4cGFuZCBhbmQgY29udHJhY3QgYXJjKVxuICogICAgICBBUkNTVEFSVFJPVCA9IDIxNiBkZWdyZWVzIChob3cgbXVjaCB0aGUgc3RhcnQgbG9jYXRpb24gb2YgdGhlIGFyY1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCByb3RhdGUgZWFjaCB0aW1lLCAyMTYgZ2l2ZXMgdXMgYVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgcG9pbnRlZCBzdGFyIHNoYXBlIChpdCdzIDM2MC81ICogMykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgNyBwb2ludGVkIHN0YXIsIHdlIG1pZ2h0IGRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYwLzcgKiAzID0gMTU0LjI4NilcbiAqICAgICAgQ09OVEFJTkVSV0lEVEggPSAyOHB4XG4gKiAgICAgIFNIUklOS19USU1FID0gNDAwbXNcbiAqL1xuLnByZWxvYWRlci13cmFwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG59XG4ucHJlbG9hZGVyLXdyYXBwZXIuc21hbGwge1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xufVxuLnByZWxvYWRlci13cmFwcGVyLmJpZyB7XG4gIHdpZHRoOiA2NHB4O1xuICBoZWlnaHQ6IDY0cHg7XG59XG4ucHJlbG9hZGVyLXdyYXBwZXIuYWN0aXZlIHtcbiAgLyogZHVyYXRpb246IDM2MCAqIEFSQ1RJTUUgLyAoQVJDU1RBUlRST1QgKyAoMzYwLUFSQ1NJWkUpKSAqL1xuICAtd2Via2l0LWFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSAxNTY4bXMgbGluZWFyIGluZmluaXRlO1xuICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgMTU2OG1zIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGNvbnRhaW5lci1yb3RhdGUge1xuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIGNvbnRhaW5lci1yb3RhdGUge1xuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuLnNwaW5uZXItbGF5ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9wYWNpdHk6IDA7XG4gIGJvcmRlci1jb2xvcjogIzI2YTY5YTtcbn1cblxuLnNwaW5uZXItYmx1ZSxcbi5zcGlubmVyLWJsdWUtb25seSB7XG4gIGJvcmRlci1jb2xvcjogIzQyODVmNDtcbn1cblxuLnNwaW5uZXItcmVkLFxuLnNwaW5uZXItcmVkLW9ubHkge1xuICBib3JkZXItY29sb3I6ICNkYjQ0Mzc7XG59XG5cbi5zcGlubmVyLXllbGxvdyxcbi5zcGlubmVyLXllbGxvdy1vbmx5IHtcbiAgYm9yZGVyLWNvbG9yOiAjZjRiNDAwO1xufVxuXG4uc3Bpbm5lci1ncmVlbixcbi5zcGlubmVyLWdyZWVuLW9ubHkge1xuICBib3JkZXItY29sb3I6ICMwZjlkNTg7XG59XG5cbi8qKlxuICogSU1QT1JUQU5UIE5PVEUgQUJPVVQgQ1NTIEFOSU1BVElPTiBQUk9QRVJUSUVTIChrZWFudWxlZSk6XG4gKlxuICogaU9TIFNhZmFyaSAodGVzdGVkIG9uIGlPUyA4LjEpIGRvZXMgbm90IGhhbmRsZSBhbmltYXRpb24tZGVsYXkgdmVyeSB3ZWxsIC0gaXQgZG9lc24ndFxuICogZ3VhcmFudGVlIHRoYXQgdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0IF9leGFjdGx5XyBhZnRlciB0aGF0IHZhbHVlLiBTbyB3ZSBhdm9pZCB1c2luZ1xuICogYW5pbWF0aW9uLWRlbGF5IGFuZCBpbnN0ZWFkIHNldCBjdXN0b20ga2V5ZnJhbWVzIGZvciBlYWNoIGNvbG9yIChhcyByZWR1bmRhbnQgYXMgaXRcbiAqIHNlZW1zKS5cbiAqXG4gKiBXZSB3cml0ZSBvdXQgZWFjaCBhbmltYXRpb24gaW4gZnVsbCAoaW5zdGVhZCBvZiBzZXBhcmF0aW5nIGFuaW1hdGlvbi1uYW1lLFxuICogYW5pbWF0aW9uLWR1cmF0aW9uLCBldGMuKSBiZWNhdXNlIHVuZGVyIHRoZSBwb2x5ZmlsbCwgU2FmYXJpIGRvZXMgbm90IHJlY29nbml6ZSB0aG9zZVxuICogc3BlY2lmaWMgcHJvcGVydGllcyBwcm9wZXJseSwgdHJlYXRzIHRoZW0gYXMgLXdlYmtpdC1hbmltYXRpb24sIGFuZCBvdmVycmlkZXMgdGhlXG4gKiBvdGhlciBhbmltYXRpb24gcnVsZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vUG9seW1lci9wbGF0Zm9ybS9pc3N1ZXMvNTMuXG4gKi9cbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1ibHVlIHtcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGJsdWUtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgYmx1ZS1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xufVxuXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItcmVkIHtcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIHJlZC1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCByZWQtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbn1cblxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXllbGxvdyB7XG4gIC8qIGR1cmF0aW9uczogNCAqIEFSQ1RJTUUgKi9cbiAgLXdlYmtpdC1hbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCB5ZWxsb3ctZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgeWVsbG93LWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG59XG5cbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1ncmVlbiB7XG4gIC8qIGR1cmF0aW9uczogNCAqIEFSQ1RJTUUgKi9cbiAgLXdlYmtpdC1hbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBncmVlbi1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBncmVlbi1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xufVxuXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLWJsdWUtb25seSxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1yZWQtb25seSxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci15ZWxsb3ctb25seSxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1ncmVlbi1vbmx5IHtcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xuICBvcGFjaXR5OiAxO1xuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBmaWxsLXVuZmlsbC1yb3RhdGUge1xuICAxMi41JSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpO1xuICB9IC8qIDAuNSAqIEFSQ1NJWkUgKi9cbiAgMjUlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XG4gIH0gLyogMSAgICogQVJDU0laRSAqL1xuICAzNy41JSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0MDVkZWcpO1xuICB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDU0MGRlZyk7XG4gIH0gLyogMiAgICogQVJDU0laRSAqL1xuICA2Mi41JSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2NzVkZWcpO1xuICB9IC8qIDIuNSAqIEFSQ1NJWkUgKi9cbiAgNzUlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDgxMGRlZyk7XG4gIH0gLyogMyAgICogQVJDU0laRSAqL1xuICA4Ny41JSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5NDVkZWcpO1xuICB9IC8qIDMuNSAqIEFSQ1NJWkUgKi9cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZyk7XG4gIH0gLyogNCAgICogQVJDU0laRSAqL1xufVxuQGtleWZyYW1lcyBmaWxsLXVuZmlsbC1yb3RhdGUge1xuICAxMi41JSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTtcbiAgfSAvKiAwLjUgKiBBUkNTSVpFICovXG4gIDI1JSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcbiAgfSAvKiAxICAgKiBBUkNTSVpFICovXG4gIDM3LjUlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0MDVkZWcpO1xuICB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpO1xuICB9IC8qIDIgICAqIEFSQ1NJWkUgKi9cbiAgNjIuNSUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDY3NWRlZyk7XG4gIH0gLyogMi41ICogQVJDU0laRSAqL1xuICA3NSUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDgxMGRlZyk7XG4gIH0gLyogMyAgICogQVJDU0laRSAqL1xuICA4Ny41JSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTQ1ZGVnKTtcbiAgfSAvKiAzLjUgKiBBUkNTSVpFICovXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKTtcbiAgfSAvKiA0ICAgKiBBUkNTSVpFICovXG59XG5ALXdlYmtpdC1rZXlmcmFtZXMgYmx1ZS1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMjUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDI2JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA4OSUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgOTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbkBrZXlmcmFtZXMgYmx1ZS1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMjUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDI2JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA4OSUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgOTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbkAtd2Via2l0LWtleWZyYW1lcyByZWQtZmFkZS1pbi1vdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDE1JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAyNSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDUxJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuQGtleWZyYW1lcyByZWQtZmFkZS1pbi1vdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDE1JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAyNSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDUxJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuQC13ZWJraXQta2V5ZnJhbWVzIHllbGxvdy1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA3NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNzYlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHllbGxvdy1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA3NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNzYlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5ALXdlYmtpdC1rZXlmcmFtZXMgZ3JlZW4tZmFkZS1pbi1vdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDY1JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA3NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgOTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbkBrZXlmcmFtZXMgZ3JlZW4tZmFkZS1pbi1vdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDY1JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA3NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgOTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbi8qKlxuICogUGF0Y2ggdGhlIGdhcCB0aGF0IGFwcGVhciBiZXR3ZWVuIHRoZSB0d28gYWRqYWNlbnQgZGl2LmNpcmNsZS1jbGlwcGVyIHdoaWxlIHRoZVxuICogc3Bpbm5lciBpcyByb3RhdGluZyAoYXBwZWFycyBvbiBDaHJvbWUgMzgsIFNhZmFyaSA3LjEsIGFuZCBJRSAxMSkuXG4gKi9cbi5nYXAtcGF0Y2gge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogNDUlO1xuICB3aWR0aDogMTAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcbn1cblxuLmdhcC1wYXRjaCAuY2lyY2xlIHtcbiAgd2lkdGg6IDEwMDAlO1xuICBsZWZ0OiAtNDUwJTtcbn1cblxuLmNpcmNsZS1jbGlwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiA1MCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xufVxuLmNpcmNsZS1jbGlwcGVyIC5jaXJjbGUge1xuICB3aWR0aDogMjAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXItd2lkdGg6IDNweDsgLyogU1RST0tFV0lEVEggKi9cbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xuICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBub25lO1xuICBhbmltYXRpb246IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xufVxuLmNpcmNsZS1jbGlwcGVyLmxlZnQgLmNpcmNsZSB7XG4gIGxlZnQ6IDA7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xufVxuLmNpcmNsZS1jbGlwcGVyLnJpZ2h0IC5jaXJjbGUge1xuICBsZWZ0OiAtMTAwJTtcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKC0xMjlkZWcpO1xufVxuXG4uYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUge1xuICAvKiBkdXJhdGlvbjogQVJDVElNRSAqL1xuICAtd2Via2l0LWFuaW1hdGlvbjogbGVmdC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG4gIGFuaW1hdGlvbjogbGVmdC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG59XG5cbi5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLnJpZ2h0IC5jaXJjbGUge1xuICAvKiBkdXJhdGlvbjogQVJDVElNRSAqL1xuICAtd2Via2l0LWFuaW1hdGlvbjogcmlnaHQtc3BpbiAxMzMzbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xuICBhbmltYXRpb246IHJpZ2h0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGxlZnQtc3BpbiB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTtcbiAgfVxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpO1xuICB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzMGRlZyk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgbGVmdC1zcGluIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTtcbiAgfVxufVxuQC13ZWJraXQta2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpO1xuICB9XG4gIDUwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKTtcbiAgfVxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTtcbiAgfVxufVxuQGtleWZyYW1lcyByaWdodC1zcGluIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZyk7XG4gIH1cbn1cbiNzcGlubmVyQ29udGFpbmVyLmNvb2xkb3duIHtcbiAgLyogZHVyYXRpb246IFNIUklOS19USU1FICovXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIGFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSAxNTY4bXMgbGluZWFyIGluZmluaXRlLCBmYWRlLW91dCA0MDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZS1vdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5Aa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuLnByb2dyZXNzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDRweDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWNlY2U2O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ucHJvZ3Jlc3MgLmRldGVybWluYXRlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBsaW5lYXI7XG59XG4ucHJvZ3Jlc3MgLmluZGV0ZXJtaW5hdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xufVxuLnByb2dyZXNzIC5pbmRldGVybWluYXRlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHdpbGwtY2hhbmdlOiBsZWZ0LCByaWdodDtcbiAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlIDIuMXMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuODE1LCAwLjczNSwgMC4zOTUpIGluZmluaXRlO1xufVxuLnByb2dyZXNzIC5pbmRldGVybWluYXRlOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lsbC1jaGFuZ2U6IGxlZnQsIHJpZ2h0O1xuICBhbmltYXRpb246IGluZGV0ZXJtaW5hdGUtc2hvcnQgMi4xcyBjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpIGluZmluaXRlO1xuICBhbmltYXRpb24tZGVsYXk6IDEuMTVzO1xufVxuXG5Aa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUge1xuICAwJSB7XG4gICAgbGVmdDogLTM1JTtcbiAgICByaWdodDogMTAwJTtcbiAgfVxuICA2MCUge1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgcmlnaHQ6IC05MCU7XG4gIH1cbiAgMTAwJSB7XG4gICAgbGVmdDogMTAwJTtcbiAgICByaWdodDogLTkwJTtcbiAgfVxufVxuQGtleWZyYW1lcyBpbmRldGVybWluYXRlLXNob3J0IHtcbiAgMCUge1xuICAgIGxlZnQ6IC0yMDAlO1xuICAgIHJpZ2h0OiAxMDAlO1xuICB9XG4gIDYwJSB7XG4gICAgbGVmdDogMTA3JTtcbiAgICByaWdodDogLTglO1xuICB9XG4gIDEwMCUge1xuICAgIGxlZnQ6IDEwNyU7XG4gICAgcmlnaHQ6IC04JTtcbiAgfVxufVxuLmZsYXNoLW1lc3NhZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6IDJweCAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIHotaW5kZXg6IDk5OTk5O1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBmb250LXNpemU6IDE0cHg7XG59XG4uZmxhc2gtbWVzc2FnZS5pbmZvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JlZGRiZTtcbiAgYm9yZGVyOiAxcHggc29saWQgIzcyOGY3Mjtcbn1cbi5mbGFzaC1tZXNzYWdlLndhcm4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVlNmQwO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWE3ZDE3O1xufVxuLmZsYXNoLW1lc3NhZ2UuZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTViMmJjO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTMzMjU3O1xufVxuXG5Aa2V5ZnJhbWVzIG1lc3NhZ2VJbiB7XG4gIGZyb20ge1xuICAgIHJpZ2h0OiA4MCU7XG4gIH1cbiAgdG8ge1xuICAgIHJpZ2h0OiAwO1xuICB9XG59XG4ucHVsc2Uge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnB1bHNlOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG4gIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcywgdHJhbnNmb3JtIDAuM3M7XG4gIGFuaW1hdGlvbjogcHVsc2UtYW5pbWF0aW9uIDFzIGN1YmljLWJlemllcigwLjI0LCAwLCAwLjM4LCAxKSBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZS1hbmltYXRpb24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XG4gIH1cbn1cbi5kcm9wZG93bi1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgbWFyZ2luOiAwO1xuICBkaXNwbGF5OiBmbG93O1xuICBtaW4td2lkdGg6IDEwMHB4O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgei1pbmRleDogOTk5OTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xufVxuLmRyb3Bkb3duLWNvbnRlbnQ6Zm9jdXMge1xuICBvdXRsaW5lOiAwO1xufVxuLmRyb3Bkb3duLWNvbnRlbnQgbGkge1xuICBjbGVhcjogYm90aDtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbWluLWhlaWdodDogNTBweDtcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4uZHJvcGRvd24tY29udGVudCBsaTpob3ZlciwgLmRyb3Bkb3duLWNvbnRlbnQgbGkuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbn1cbi5kcm9wZG93bi1jb250ZW50IGxpOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbi5kcm9wZG93bi1jb250ZW50IGxpLmRpdmlkZXIge1xuICBtaW4taGVpZ2h0OiAwO1xuICBoZWlnaHQ6IDFweDtcbn1cbi5kcm9wZG93bi1jb250ZW50IGxpID4gYSwgLmRyb3Bkb3duLWNvbnRlbnQgbGkgPiBzcGFuIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogIzI2YTY5YTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBwYWRkaW5nOiAxNHB4IDE2cHg7XG59XG4uZHJvcGRvd24tY29udGVudCBsaSA+IHNwYW4gPiBsYWJlbCB7XG4gIHRvcDogMXB4O1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDE4cHg7XG59XG4uZHJvcGRvd24tY29udGVudCBsaSA+IGEgPiBpIHtcbiAgaGVpZ2h0OiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1hcmdpbjogMCAyNHB4IDAgMDtcbiAgd2lkdGg6IDI0cHg7XG59XG5cbmJvZHkua2V5Ym9hcmQtZm9jdXNlZCAuZHJvcGRvd24tY29udGVudCBsaTpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYWRhZGE7XG59XG5cbi5pbnB1dC1maWVsZC5jb2wgLmRyb3Bkb3duLWNvbnRlbnQgW3R5cGU9Y2hlY2tib3hdICsgbGFiZWwge1xuICB0b3A6IDFweDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAxOHB4O1xuICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi5kcm9wZG93bi10cmlnZ2VyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5uYXYge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwY2FmOTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTZweDtcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XG59XG5uYXYubmF2LWV4dGVuZGVkIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxubmF2Lm5hdi1leHRlbmRlZCAubmF2LXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4taGVpZ2h0OiA1NnB4O1xuICBoZWlnaHQ6IGF1dG87XG59XG5uYXYubmF2LWV4dGVuZGVkIC5uYXYtY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbm5hdiBhIHtcbiAgY29sb3I6ICNmZmY7XG59XG5uYXYgaSxcbm5hdiBbY2xhc3NePW1kaS1dLCBuYXYgW2NsYXNzKj1tZGktXSxcbm5hdiBpLnMtaWNvbnMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAyNHB4O1xuICBoZWlnaHQ6IDU2cHg7XG4gIGxpbmUtaGVpZ2h0OiA1NnB4O1xufVxubmF2IC5uYXYtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcbiAgbmF2IGEuc2lkZW5hdi10cmlnZ2VyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5uYXYgLnNpZGVuYXYtdHJpZ2dlciB7XG4gIGZsb2F0OiBsZWZ0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGhlaWdodDogNTZweDtcbiAgbWFyZ2luOiAwIDE4cHg7XG59XG5uYXYgLnNpZGVuYXYtdHJpZ2dlciBpIHtcbiAgaGVpZ2h0OiA1NnB4O1xuICBsaW5lLWhlaWdodDogNTZweDtcbn1cbm5hdiAuYnJhbmQtbG9nbyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAyLjFyZW07XG4gIHBhZGRpbmc6IDA7XG59XG5uYXYgLmJyYW5kLWxvZ28gaW1nLmNpcmNsZSB7XG4gIGhlaWdodDogMzJweDtcbiAgd2lkdGg6IDMycHg7XG59XG5uYXYgLmJyYW5kLWxvZ28uY2VudGVyIHtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xuICBuYXYgLmJyYW5kLWxvZ28ge1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cbiAgbmF2IC5icmFuZC1sb2dvLmxlZnQsIG5hdiAuYnJhbmQtbG9nby5yaWdodCB7XG4gICAgcGFkZGluZzogMDtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgbmF2IC5icmFuZC1sb2dvLmxlZnQge1xuICAgIGxlZnQ6IDAuNXJlbTtcbiAgfVxuICBuYXYgLmJyYW5kLWxvZ28ucmlnaHQge1xuICAgIHJpZ2h0OiAwLjVyZW07XG4gICAgbGVmdDogYXV0bztcbiAgfVxufVxubmF2IC5icmFuZC1sb2dvLnJpZ2h0IHtcbiAgcmlnaHQ6IDAuNXJlbTtcbiAgcGFkZGluZzogMDtcbn1cbm5hdiAuYnJhbmQtbG9nbyBpLFxubmF2IC5icmFuZC1sb2dvIFtjbGFzc149bWRpLV0sIG5hdiAuYnJhbmQtbG9nbyBbY2xhc3MqPW1kaS1dLFxubmF2IC5icmFuZC1sb2dvIGkucy1pY29ucyB7XG4gIGZsb2F0OiBsZWZ0O1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG59XG5uYXYgLm5hdi10aXRsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAzMnB4O1xuICBwYWRkaW5nOiAyOHB4IDA7XG59XG5uYXYgdWwge1xuICBtYXJnaW46IDA7XG59XG5uYXYgdWwgbGkge1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XG4gIGZsb2F0OiBsZWZ0O1xuICBwYWRkaW5nOiAwO1xufVxubmF2IHVsIGxpLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cbm5hdiB1bCBhIHtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xuICBmb250LXNpemU6IDFyZW07XG4gIGNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMCAxNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5uYXYgdWwgYS5idG4sIG5hdiB1bCBhLmJ0bi1zbWFsbCwgbmF2IHVsIGEuYnRuLWxhcmdlLCBuYXYgdWwgYS5idG4tZmxhdCwgbmF2IHVsIGEuYnRuLWZsb2F0aW5nIHtcbiAgbWFyZ2luLXRvcDogLTJweDtcbiAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbn1cbm5hdiB1bCBhLmJ0biA+IC5tYXRlcmlhbC1pY29ucywgbmF2IHVsIGEuYnRuLXNtYWxsID4gLm1hdGVyaWFsLWljb25zLCBuYXYgdWwgYS5idG4tbGFyZ2UgPiAubWF0ZXJpYWwtaWNvbnMsIG5hdiB1bCBhLmJ0bi1mbGF0ID4gLm1hdGVyaWFsLWljb25zLCBuYXYgdWwgYS5idG4tZmxvYXRpbmcgPiAubWF0ZXJpYWwtaWNvbnMge1xuICBoZWlnaHQ6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxubmF2IHVsIGE6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5uYXYgdWwubGVmdCB7XG4gIGZsb2F0OiBsZWZ0O1xufVxubmF2IGZvcm0ge1xuICBoZWlnaHQ6IDEwMCU7XG59XG5uYXYgLmlucHV0LWZpZWxkIHtcbiAgbWFyZ2luOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5uYXYgLmlucHV0LWZpZWxkIGlucHV0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmb250LXNpemU6IDEuMnJlbTtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDJyZW07XG59XG5uYXYgLmlucHV0LWZpZWxkIGlucHV0OmZvY3VzLCBuYXYgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9dGV4dF06dmFsaWQsIG5hdiAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1wYXNzd29yZF06dmFsaWQsIG5hdiAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1lbWFpbF06dmFsaWQsIG5hdiAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT11cmxdOnZhbGlkLCBuYXYgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9ZGF0ZV06dmFsaWQge1xuICBib3JkZXI6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5uYXYgLmlucHV0LWZpZWxkIGxhYmVsIHtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xufVxubmF2IC5pbnB1dC1maWVsZCBsYWJlbCBpIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4zcztcbn1cbm5hdiAuaW5wdXQtZmllbGQgbGFiZWwuYWN0aXZlIGkge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLm5hdmJhci1maXhlZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiA1NnB4O1xuICB6LWluZGV4OiA5OTc7XG59XG4ubmF2YmFyLWZpeGVkIG5hdiB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogNjAxcHgpIHtcbiAgbmF2Lm5hdi1leHRlbmRlZCAubmF2LXdyYXBwZXIge1xuICAgIG1pbi1oZWlnaHQ6IDY0cHg7XG4gIH1cbiAgbmF2LCBuYXYgLm5hdi13cmFwcGVyIGksIG5hdiBhLnNpZGVuYXYtdHJpZ2dlciwgbmF2IGEuc2lkZW5hdi10cmlnZ2VyIGkge1xuICAgIGhlaWdodDogNjRweDtcbiAgICBsaW5lLWhlaWdodDogNjRweDtcbiAgfVxuICAubmF2YmFyLWZpeGVkIHtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gIH1cbn1gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL2QzdjRwcC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fY29sb3JzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19jb2RlLWRhcmsuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3Rlcm1pbmFsLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL190b29sdGlwLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19zaGFkb3dzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL193YXZlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fbW9kYWwuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2dsb2JhbC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fdmFyaWFibGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19iYWRnZXMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2NoaXBzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19jb2xsYXBzaWJsZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fY29sbGVjdGlvbi5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9mb3Jtcy9fZm9ybXMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvZm9ybXMvX2lucHV0LWZpZWxkcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9mb3Jtcy9fcmFkaW8tYnV0dG9ucy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9mb3Jtcy9fY2hlY2tib3hlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9mb3Jtcy9fc3dpdGNoZXMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvZm9ybXMvX3NlbGVjdC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9mb3Jtcy9fZmlsZS1pbnB1dC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9mb3Jtcy9fcmFuZ2Uuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3BhcmFsYXguc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2N1YmUuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2dyaWQuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3NpZGVuYXYuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2J1dHRvbnMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3RhYnMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2xvYWRlci5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fY2FyZHMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3ByZWxvYWRlci5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fcHJvZ3Jlc3Muc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2ZsYXNoLW1lc3NhZ2Uuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3B1bHNlLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19kcm9wZG93bi5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fbmF2YmFyLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDS1Y7RUFDRSxvQ0FBQTtBREZSOztBQ0lNO0VBQ0UseUJBQUE7QUREUjs7QUNHTTtFQUNFLG9DQUFBO0FEQVI7O0FDR007RUFDRSxvQ0FBQTtBREFSOztBQ0VNO0VBQ0UseUJBQUE7QURDUjs7QUNDTTtFQUNFLG9DQUFBO0FERVI7O0FDVE07RUFDRSxvQ0FBQTtBRFlSOztBQ1ZNO0VBQ0UseUJBQUE7QURhUjs7QUNYTTtFQUNFLG9DQUFBO0FEY1I7O0FDckJNO0VBQ0Usb0NBQUE7QUR3QlI7O0FDdEJNO0VBQ0UseUJBQUE7QUR5QlI7O0FDdkJNO0VBQ0Usb0NBQUE7QUQwQlI7O0FDakNNO0VBQ0Usb0NBQUE7QURvQ1I7O0FDbENNO0VBQ0UseUJBQUE7QURxQ1I7O0FDbkNNO0VBQ0Usb0NBQUE7QURzQ1I7O0FDN0NNO0VBQ0Usb0NBQUE7QURnRFI7O0FDOUNNO0VBQ0UseUJBQUE7QURpRFI7O0FDL0NNO0VBQ0Usb0NBQUE7QURrRFI7O0FDekRNO0VBQ0Usb0NBQUE7QUQ0RFI7O0FDMURNO0VBQ0UseUJBQUE7QUQ2RFI7O0FDM0RNO0VBQ0Usb0NBQUE7QUQ4RFI7O0FDckVNO0VBQ0Usb0NBQUE7QUR3RVI7O0FDdEVNO0VBQ0UseUJBQUE7QUR5RVI7O0FDdkVNO0VBQ0Usb0NBQUE7QUQwRVI7O0FDakZNO0VBQ0Usb0NBQUE7QURvRlI7O0FDbEZNO0VBQ0UseUJBQUE7QURxRlI7O0FDbkZNO0VBQ0Usb0NBQUE7QURzRlI7O0FDN0ZNO0VBQ0Usb0NBQUE7QURnR1I7O0FDOUZNO0VBQ0UseUJBQUE7QURpR1I7O0FDL0ZNO0VBQ0Usb0NBQUE7QURrR1I7O0FDekdNO0VBQ0Usb0NBQUE7QUQ0R1I7O0FDMUdNO0VBQ0UseUJBQUE7QUQ2R1I7O0FDM0dNO0VBQ0Usb0NBQUE7QUQ4R1I7O0FDckhNO0VBQ0Usb0NBQUE7QUR3SFI7O0FDdEhNO0VBQ0UseUJBQUE7QUR5SFI7O0FDdkhNO0VBQ0Usb0NBQUE7QUQwSFI7O0FDaklNO0VBQ0Usb0NBQUE7QURvSVI7O0FDbElNO0VBQ0UseUJBQUE7QURxSVI7O0FDbklNO0VBQ0Usb0NBQUE7QURzSVI7O0FDN0lNO0VBQ0Usb0NBQUE7QURnSlI7O0FDOUlNO0VBQ0UseUJBQUE7QURpSlI7O0FDL0lNO0VBQ0Usb0NBQUE7QURrSlI7O0FDbktNO0VBQ0Usb0NBQUE7QURzS1I7O0FDcEtNO0VBQ0UseUJBQUE7QUR1S1I7O0FDcktNO0VBQ0Usb0NBQUE7QUR3S1I7O0FDcktNO0VBQ0Usb0NBQUE7QUR3S1I7O0FDdEtNO0VBQ0UseUJBQUE7QUR5S1I7O0FDdktNO0VBQ0Usb0NBQUE7QUQwS1I7O0FDakxNO0VBQ0Usb0NBQUE7QURvTFI7O0FDbExNO0VBQ0UseUJBQUE7QURxTFI7O0FDbkxNO0VBQ0Usb0NBQUE7QURzTFI7O0FDN0xNO0VBQ0Usb0NBQUE7QURnTVI7O0FDOUxNO0VBQ0UseUJBQUE7QURpTVI7O0FDL0xNO0VBQ0Usb0NBQUE7QURrTVI7O0FDek1NO0VBQ0Usb0NBQUE7QUQ0TVI7O0FDMU1NO0VBQ0UseUJBQUE7QUQ2TVI7O0FDM01NO0VBQ0Usb0NBQUE7QUQ4TVI7O0FDck5NO0VBQ0Usb0NBQUE7QUR3TlI7O0FDdE5NO0VBQ0UseUJBQUE7QUR5TlI7O0FDdk5NO0VBQ0Usb0NBQUE7QUQwTlI7O0FDak9NO0VBQ0Usb0NBQUE7QURvT1I7O0FDbE9NO0VBQ0UseUJBQUE7QURxT1I7O0FDbk9NO0VBQ0Usb0NBQUE7QURzT1I7O0FDN09NO0VBQ0Usb0NBQUE7QURnUFI7O0FDOU9NO0VBQ0UseUJBQUE7QURpUFI7O0FDL09NO0VBQ0Usb0NBQUE7QURrUFI7O0FDelBNO0VBQ0Usb0NBQUE7QUQ0UFI7O0FDMVBNO0VBQ0UseUJBQUE7QUQ2UFI7O0FDM1BNO0VBQ0Usb0NBQUE7QUQ4UFI7O0FDclFNO0VBQ0Usb0NBQUE7QUR3UVI7O0FDdFFNO0VBQ0UseUJBQUE7QUR5UVI7O0FDdlFNO0VBQ0Usb0NBQUE7QUQwUVI7O0FDalJNO0VBQ0Usb0NBQUE7QURvUlI7O0FDbFJNO0VBQ0UseUJBQUE7QURxUlI7O0FDblJNO0VBQ0Usb0NBQUE7QURzUlI7O0FDN1JNO0VBQ0Usb0NBQUE7QURnU1I7O0FDOVJNO0VBQ0UseUJBQUE7QURpU1I7O0FDL1JNO0VBQ0Usb0NBQUE7QURrU1I7O0FDelNNO0VBQ0Usb0NBQUE7QUQ0U1I7O0FDMVNNO0VBQ0UseUJBQUE7QUQ2U1I7O0FDM1NNO0VBQ0Usb0NBQUE7QUQ4U1I7O0FDclRNO0VBQ0Usb0NBQUE7QUR3VFI7O0FDdFRNO0VBQ0UseUJBQUE7QUR5VFI7O0FDdlRNO0VBQ0Usb0NBQUE7QUQwVFI7O0FDM1VNO0VBQ0Usb0NBQUE7QUQ4VVI7O0FDNVVNO0VBQ0UseUJBQUE7QUQrVVI7O0FDN1VNO0VBQ0Usb0NBQUE7QURnVlI7O0FDN1VNO0VBQ0Usb0NBQUE7QURnVlI7O0FDOVVNO0VBQ0UseUJBQUE7QURpVlI7O0FDL1VNO0VBQ0Usb0NBQUE7QURrVlI7O0FDelZNO0VBQ0Usb0NBQUE7QUQ0VlI7O0FDMVZNO0VBQ0UseUJBQUE7QUQ2VlI7O0FDM1ZNO0VBQ0Usb0NBQUE7QUQ4VlI7O0FDcldNO0VBQ0Usb0NBQUE7QUR3V1I7O0FDdFdNO0VBQ0UseUJBQUE7QUR5V1I7O0FDdldNO0VBQ0Usb0NBQUE7QUQwV1I7O0FDalhNO0VBQ0Usb0NBQUE7QURvWFI7O0FDbFhNO0VBQ0UseUJBQUE7QURxWFI7O0FDblhNO0VBQ0Usb0NBQUE7QURzWFI7O0FDN1hNO0VBQ0Usb0NBQUE7QURnWVI7O0FDOVhNO0VBQ0UseUJBQUE7QURpWVI7O0FDL1hNO0VBQ0Usb0NBQUE7QURrWVI7O0FDellNO0VBQ0Usb0NBQUE7QUQ0WVI7O0FDMVlNO0VBQ0UseUJBQUE7QUQ2WVI7O0FDM1lNO0VBQ0Usb0NBQUE7QUQ4WVI7O0FDclpNO0VBQ0Usb0NBQUE7QUR3WlI7O0FDdFpNO0VBQ0UseUJBQUE7QUR5WlI7O0FDdlpNO0VBQ0Usb0NBQUE7QUQwWlI7O0FDamFNO0VBQ0Usb0NBQUE7QURvYVI7O0FDbGFNO0VBQ0UseUJBQUE7QURxYVI7O0FDbmFNO0VBQ0Usb0NBQUE7QURzYVI7O0FDN2FNO0VBQ0Usb0NBQUE7QURnYlI7O0FDOWFNO0VBQ0UseUJBQUE7QURpYlI7O0FDL2FNO0VBQ0Usb0NBQUE7QURrYlI7O0FDemJNO0VBQ0Usb0NBQUE7QUQ0YlI7O0FDMWJNO0VBQ0UseUJBQUE7QUQ2YlI7O0FDM2JNO0VBQ0Usb0NBQUE7QUQ4YlI7O0FDcmNNO0VBQ0Usb0NBQUE7QUR3Y1I7O0FDdGNNO0VBQ0UseUJBQUE7QUR5Y1I7O0FDdmNNO0VBQ0Usb0NBQUE7QUQwY1I7O0FDamRNO0VBQ0Usb0NBQUE7QURvZFI7O0FDbGRNO0VBQ0UseUJBQUE7QURxZFI7O0FDbmRNO0VBQ0Usb0NBQUE7QURzZFI7O0FDN2RNO0VBQ0Usb0NBQUE7QURnZVI7O0FDOWRNO0VBQ0UseUJBQUE7QURpZVI7O0FDL2RNO0VBQ0Usb0NBQUE7QURrZVI7O0FDbmZNO0VBQ0Usb0NBQUE7QURzZlI7O0FDcGZNO0VBQ0UseUJBQUE7QUR1ZlI7O0FDcmZNO0VBQ0Usb0NBQUE7QUR3ZlI7O0FDcmZNO0VBQ0Usb0NBQUE7QUR3ZlI7O0FDdGZNO0VBQ0UseUJBQUE7QUR5ZlI7O0FDdmZNO0VBQ0Usb0NBQUE7QUQwZlI7O0FDamdCTTtFQUNFLG9DQUFBO0FEb2dCUjs7QUNsZ0JNO0VBQ0UseUJBQUE7QURxZ0JSOztBQ25nQk07RUFDRSxvQ0FBQTtBRHNnQlI7O0FDN2dCTTtFQUNFLG9DQUFBO0FEZ2hCUjs7QUM5Z0JNO0VBQ0UseUJBQUE7QURpaEJSOztBQy9nQk07RUFDRSxvQ0FBQTtBRGtoQlI7O0FDemhCTTtFQUNFLG9DQUFBO0FENGhCUjs7QUMxaEJNO0VBQ0UseUJBQUE7QUQ2aEJSOztBQzNoQk07RUFDRSxvQ0FBQTtBRDhoQlI7O0FDcmlCTTtFQUNFLG9DQUFBO0FEd2lCUjs7QUN0aUJNO0VBQ0UseUJBQUE7QUR5aUJSOztBQ3ZpQk07RUFDRSxvQ0FBQTtBRDBpQlI7O0FDampCTTtFQUNFLG9DQUFBO0FEb2pCUjs7QUNsakJNO0VBQ0UseUJBQUE7QURxakJSOztBQ25qQk07RUFDRSxvQ0FBQTtBRHNqQlI7O0FDN2pCTTtFQUNFLG9DQUFBO0FEZ2tCUjs7QUM5akJNO0VBQ0UseUJBQUE7QURpa0JSOztBQy9qQk07RUFDRSxvQ0FBQTtBRGtrQlI7O0FDemtCTTtFQUNFLG9DQUFBO0FENGtCUjs7QUMxa0JNO0VBQ0UseUJBQUE7QUQ2a0JSOztBQzNrQk07RUFDRSxvQ0FBQTtBRDhrQlI7O0FDcmxCTTtFQUNFLG9DQUFBO0FEd2xCUjs7QUN0bEJNO0VBQ0UseUJBQUE7QUR5bEJSOztBQ3ZsQk07RUFDRSxvQ0FBQTtBRDBsQlI7O0FDam1CTTtFQUNFLG9DQUFBO0FEb21CUjs7QUNsbUJNO0VBQ0UseUJBQUE7QURxbUJSOztBQ25tQk07RUFDRSxvQ0FBQTtBRHNtQlI7O0FDN21CTTtFQUNFLG9DQUFBO0FEZ25CUjs7QUM5bUJNO0VBQ0UseUJBQUE7QURpbkJSOztBQy9tQk07RUFDRSxvQ0FBQTtBRGtuQlI7O0FDem5CTTtFQUNFLG9DQUFBO0FENG5CUjs7QUMxbkJNO0VBQ0UseUJBQUE7QUQ2bkJSOztBQzNuQk07RUFDRSxvQ0FBQTtBRDhuQlI7O0FDcm9CTTtFQUNFLG9DQUFBO0FEd29CUjs7QUN0b0JNO0VBQ0UseUJBQUE7QUR5b0JSOztBQ3ZvQk07RUFDRSxvQ0FBQTtBRDBvQlI7O0FDM3BCTTtFQUNFLG9DQUFBO0FEOHBCUjs7QUM1cEJNO0VBQ0UseUJBQUE7QUQrcEJSOztBQzdwQk07RUFDRSxvQ0FBQTtBRGdxQlI7O0FDN3BCTTtFQUNFLG9DQUFBO0FEZ3FCUjs7QUM5cEJNO0VBQ0UseUJBQUE7QURpcUJSOztBQy9wQk07RUFDRSxvQ0FBQTtBRGtxQlI7O0FDenFCTTtFQUNFLG9DQUFBO0FENHFCUjs7QUMxcUJNO0VBQ0UseUJBQUE7QUQ2cUJSOztBQzNxQk07RUFDRSxvQ0FBQTtBRDhxQlI7O0FDcnJCTTtFQUNFLG9DQUFBO0FEd3JCUjs7QUN0ckJNO0VBQ0UseUJBQUE7QUR5ckJSOztBQ3ZyQk07RUFDRSxvQ0FBQTtBRDByQlI7O0FDanNCTTtFQUNFLG9DQUFBO0FEb3NCUjs7QUNsc0JNO0VBQ0UseUJBQUE7QURxc0JSOztBQ25zQk07RUFDRSxvQ0FBQTtBRHNzQlI7O0FDN3NCTTtFQUNFLG9DQUFBO0FEZ3RCUjs7QUM5c0JNO0VBQ0UseUJBQUE7QURpdEJSOztBQy9zQk07RUFDRSxvQ0FBQTtBRGt0QlI7O0FDenRCTTtFQUNFLG9DQUFBO0FENHRCUjs7QUMxdEJNO0VBQ0UseUJBQUE7QUQ2dEJSOztBQzN0Qk07RUFDRSxvQ0FBQTtBRDh0QlI7O0FDcnVCTTtFQUNFLG9DQUFBO0FEd3VCUjs7QUN0dUJNO0VBQ0UseUJBQUE7QUR5dUJSOztBQ3Z1Qk07RUFDRSxvQ0FBQTtBRDB1QlI7O0FDanZCTTtFQUNFLG9DQUFBO0FEb3ZCUjs7QUNsdkJNO0VBQ0UseUJBQUE7QURxdkJSOztBQ252Qk07RUFDRSxvQ0FBQTtBRHN2QlI7O0FDN3ZCTTtFQUNFLG9DQUFBO0FEZ3dCUjs7QUM5dkJNO0VBQ0UseUJBQUE7QURpd0JSOztBQy92Qk07RUFDRSxvQ0FBQTtBRGt3QlI7O0FDendCTTtFQUNFLG9DQUFBO0FENHdCUjs7QUMxd0JNO0VBQ0UseUJBQUE7QUQ2d0JSOztBQzN3Qk07RUFDRSxvQ0FBQTtBRDh3QlI7O0FDcnhCTTtFQUNFLG9DQUFBO0FEd3hCUjs7QUN0eEJNO0VBQ0UseUJBQUE7QUR5eEJSOztBQ3Z4Qk07RUFDRSxvQ0FBQTtBRDB4QlI7O0FDanlCTTtFQUNFLG9DQUFBO0FEb3lCUjs7QUNseUJNO0VBQ0UseUJBQUE7QURxeUJSOztBQ255Qk07RUFDRSxvQ0FBQTtBRHN5QlI7O0FDN3lCTTtFQUNFLG9DQUFBO0FEZ3pCUjs7QUM5eUJNO0VBQ0UseUJBQUE7QURpekJSOztBQy95Qk07RUFDRSxvQ0FBQTtBRGt6QlI7O0FDbjBCTTtFQUNFLG9DQUFBO0FEczBCUjs7QUNwMEJNO0VBQ0UseUJBQUE7QUR1MEJSOztBQ3IwQk07RUFDRSxvQ0FBQTtBRHcwQlI7O0FDcjBCTTtFQUNFLG9DQUFBO0FEdzBCUjs7QUN0MEJNO0VBQ0UseUJBQUE7QUR5MEJSOztBQ3YwQk07RUFDRSxvQ0FBQTtBRDAwQlI7O0FDajFCTTtFQUNFLG9DQUFBO0FEbzFCUjs7QUNsMUJNO0VBQ0UseUJBQUE7QURxMUJSOztBQ24xQk07RUFDRSxvQ0FBQTtBRHMxQlI7O0FDNzFCTTtFQUNFLG9DQUFBO0FEZzJCUjs7QUM5MUJNO0VBQ0UseUJBQUE7QURpMkJSOztBQy8xQk07RUFDRSxvQ0FBQTtBRGsyQlI7O0FDejJCTTtFQUNFLG9DQUFBO0FENDJCUjs7QUMxMkJNO0VBQ0UseUJBQUE7QUQ2MkJSOztBQzMyQk07RUFDRSxvQ0FBQTtBRDgyQlI7O0FDcjNCTTtFQUNFLG9DQUFBO0FEdzNCUjs7QUN0M0JNO0VBQ0UseUJBQUE7QUR5M0JSOztBQ3YzQk07RUFDRSxvQ0FBQTtBRDAzQlI7O0FDajRCTTtFQUNFLG9DQUFBO0FEbzRCUjs7QUNsNEJNO0VBQ0UseUJBQUE7QURxNEJSOztBQ240Qk07RUFDRSxvQ0FBQTtBRHM0QlI7O0FDNzRCTTtFQUNFLG9DQUFBO0FEZzVCUjs7QUM5NEJNO0VBQ0UseUJBQUE7QURpNUJSOztBQy80Qk07RUFDRSxvQ0FBQTtBRGs1QlI7O0FDejVCTTtFQUNFLG9DQUFBO0FENDVCUjs7QUMxNUJNO0VBQ0UseUJBQUE7QUQ2NUJSOztBQzM1Qk07RUFDRSxvQ0FBQTtBRDg1QlI7O0FDcjZCTTtFQUNFLG9DQUFBO0FEdzZCUjs7QUN0NkJNO0VBQ0UseUJBQUE7QUR5NkJSOztBQ3Y2Qk07RUFDRSxvQ0FBQTtBRDA2QlI7O0FDajdCTTtFQUNFLG9DQUFBO0FEbzdCUjs7QUNsN0JNO0VBQ0UseUJBQUE7QURxN0JSOztBQ243Qk07RUFDRSxvQ0FBQTtBRHM3QlI7O0FDNzdCTTtFQUNFLG9DQUFBO0FEZzhCUjs7QUM5N0JNO0VBQ0UseUJBQUE7QURpOEJSOztBQy83Qk07RUFDRSxvQ0FBQTtBRGs4QlI7O0FDejhCTTtFQUNFLG9DQUFBO0FENDhCUjs7QUMxOEJNO0VBQ0UseUJBQUE7QUQ2OEJSOztBQzM4Qk07RUFDRSxvQ0FBQTtBRDg4QlI7O0FDcjlCTTtFQUNFLG9DQUFBO0FEdzlCUjs7QUN0OUJNO0VBQ0UseUJBQUE7QUR5OUJSOztBQ3Y5Qk07RUFDRSxvQ0FBQTtBRDA5QlI7O0FDMytCTTtFQUNFLG9DQUFBO0FEOCtCUjs7QUM1K0JNO0VBQ0UseUJBQUE7QUQrK0JSOztBQzcrQk07RUFDRSxvQ0FBQTtBRGcvQlI7O0FDNytCTTtFQUNFLG9DQUFBO0FEZy9CUjs7QUM5K0JNO0VBQ0UseUJBQUE7QURpL0JSOztBQy8rQk07RUFDRSxvQ0FBQTtBRGsvQlI7O0FDei9CTTtFQUNFLG9DQUFBO0FENC9CUjs7QUMxL0JNO0VBQ0UseUJBQUE7QUQ2L0JSOztBQzMvQk07RUFDRSxvQ0FBQTtBRDgvQlI7O0FDcmdDTTtFQUNFLG9DQUFBO0FEd2dDUjs7QUN0Z0NNO0VBQ0UseUJBQUE7QUR5Z0NSOztBQ3ZnQ007RUFDRSxvQ0FBQTtBRDBnQ1I7O0FDamhDTTtFQUNFLG9DQUFBO0FEb2hDUjs7QUNsaENNO0VBQ0UseUJBQUE7QURxaENSOztBQ25oQ007RUFDRSxvQ0FBQTtBRHNoQ1I7O0FDN2hDTTtFQUNFLG9DQUFBO0FEZ2lDUjs7QUM5aENNO0VBQ0UseUJBQUE7QURpaUNSOztBQy9oQ007RUFDRSxvQ0FBQTtBRGtpQ1I7O0FDemlDTTtFQUNFLG9DQUFBO0FENGlDUjs7QUMxaUNNO0VBQ0UseUJBQUE7QUQ2aUNSOztBQzNpQ007RUFDRSxvQ0FBQTtBRDhpQ1I7O0FDcmpDTTtFQUNFLG9DQUFBO0FEd2pDUjs7QUN0akNNO0VBQ0UseUJBQUE7QUR5akNSOztBQ3ZqQ007RUFDRSxvQ0FBQTtBRDBqQ1I7O0FDamtDTTtFQUNFLG9DQUFBO0FEb2tDUjs7QUNsa0NNO0VBQ0UseUJBQUE7QURxa0NSOztBQ25rQ007RUFDRSxvQ0FBQTtBRHNrQ1I7O0FDN2tDTTtFQUNFLG9DQUFBO0FEZ2xDUjs7QUM5a0NNO0VBQ0UseUJBQUE7QURpbENSOztBQy9rQ007RUFDRSxvQ0FBQTtBRGtsQ1I7O0FDemxDTTtFQUNFLG9DQUFBO0FENGxDUjs7QUMxbENNO0VBQ0UseUJBQUE7QUQ2bENSOztBQzNsQ007RUFDRSxvQ0FBQTtBRDhsQ1I7O0FDcm1DTTtFQUNFLG9DQUFBO0FEd21DUjs7QUN0bUNNO0VBQ0UseUJBQUE7QUR5bUNSOztBQ3ZtQ007RUFDRSxvQ0FBQTtBRDBtQ1I7O0FDam5DTTtFQUNFLG9DQUFBO0FEb25DUjs7QUNsbkNNO0VBQ0UseUJBQUE7QURxbkNSOztBQ25uQ007RUFDRSxvQ0FBQTtBRHNuQ1I7O0FDN25DTTtFQUNFLG9DQUFBO0FEZ29DUjs7QUM5bkNNO0VBQ0UseUJBQUE7QURpb0NSOztBQy9uQ007RUFDRSxvQ0FBQTtBRGtvQ1I7O0FDbnBDTTtFQUNFLG9DQUFBO0FEc3BDUjs7QUNwcENNO0VBQ0UseUJBQUE7QUR1cENSOztBQ3JwQ007RUFDRSxvQ0FBQTtBRHdwQ1I7O0FDcnBDTTtFQUNFLG9DQUFBO0FEd3BDUjs7QUN0cENNO0VBQ0UseUJBQUE7QUR5cENSOztBQ3ZwQ007RUFDRSxvQ0FBQTtBRDBwQ1I7O0FDanFDTTtFQUNFLG9DQUFBO0FEb3FDUjs7QUNscUNNO0VBQ0UseUJBQUE7QURxcUNSOztBQ25xQ007RUFDRSxvQ0FBQTtBRHNxQ1I7O0FDN3FDTTtFQUNFLG9DQUFBO0FEZ3JDUjs7QUM5cUNNO0VBQ0UseUJBQUE7QURpckNSOztBQy9xQ007RUFDRSxvQ0FBQTtBRGtyQ1I7O0FDenJDTTtFQUNFLG9DQUFBO0FENHJDUjs7QUMxckNNO0VBQ0UseUJBQUE7QUQ2ckNSOztBQzNyQ007RUFDRSxvQ0FBQTtBRDhyQ1I7O0FDcnNDTTtFQUNFLG9DQUFBO0FEd3NDUjs7QUN0c0NNO0VBQ0UseUJBQUE7QUR5c0NSOztBQ3ZzQ007RUFDRSxvQ0FBQTtBRDBzQ1I7O0FDanRDTTtFQUNFLG9DQUFBO0FEb3RDUjs7QUNsdENNO0VBQ0UseUJBQUE7QURxdENSOztBQ250Q007RUFDRSxvQ0FBQTtBRHN0Q1I7O0FDN3RDTTtFQUNFLG9DQUFBO0FEZ3VDUjs7QUM5dENNO0VBQ0UseUJBQUE7QURpdUNSOztBQy90Q007RUFDRSxvQ0FBQTtBRGt1Q1I7O0FDenVDTTtFQUNFLG9DQUFBO0FENHVDUjs7QUMxdUNNO0VBQ0UseUJBQUE7QUQ2dUNSOztBQzN1Q007RUFDRSxvQ0FBQTtBRDh1Q1I7O0FDcnZDTTtFQUNFLG9DQUFBO0FEd3ZDUjs7QUN0dkNNO0VBQ0UseUJBQUE7QUR5dkNSOztBQ3Z2Q007RUFDRSxvQ0FBQTtBRDB2Q1I7O0FDandDTTtFQUNFLG9DQUFBO0FEb3dDUjs7QUNsd0NNO0VBQ0UseUJBQUE7QURxd0NSOztBQ253Q007RUFDRSxvQ0FBQTtBRHN3Q1I7O0FDN3dDTTtFQUNFLG9DQUFBO0FEZ3hDUjs7QUM5d0NNO0VBQ0UseUJBQUE7QURpeENSOztBQy93Q007RUFDRSxvQ0FBQTtBRGt4Q1I7O0FDenhDTTtFQUNFLG9DQUFBO0FENHhDUjs7QUMxeENNO0VBQ0UseUJBQUE7QUQ2eENSOztBQzN4Q007RUFDRSxvQ0FBQTtBRDh4Q1I7O0FDcnlDTTtFQUNFLG9DQUFBO0FEd3lDUjs7QUN0eUNNO0VBQ0UseUJBQUE7QUR5eUNSOztBQ3Z5Q007RUFDRSxvQ0FBQTtBRDB5Q1I7O0FDM3pDTTtFQUNFLG9DQUFBO0FEOHpDUjs7QUM1ekNNO0VBQ0UseUJBQUE7QUQrekNSOztBQzd6Q007RUFDRSxvQ0FBQTtBRGcwQ1I7O0FDN3pDTTtFQUNFLG9DQUFBO0FEZzBDUjs7QUM5ekNNO0VBQ0UseUJBQUE7QURpMENSOztBQy96Q007RUFDRSxvQ0FBQTtBRGswQ1I7O0FDejBDTTtFQUNFLG9DQUFBO0FENDBDUjs7QUMxMENNO0VBQ0UseUJBQUE7QUQ2MENSOztBQzMwQ007RUFDRSxvQ0FBQTtBRDgwQ1I7O0FDcjFDTTtFQUNFLG9DQUFBO0FEdzFDUjs7QUN0MUNNO0VBQ0UseUJBQUE7QUR5MUNSOztBQ3YxQ007RUFDRSxvQ0FBQTtBRDAxQ1I7O0FDajJDTTtFQUNFLG9DQUFBO0FEbzJDUjs7QUNsMkNNO0VBQ0UseUJBQUE7QURxMkNSOztBQ24yQ007RUFDRSxvQ0FBQTtBRHMyQ1I7O0FDNzJDTTtFQUNFLG9DQUFBO0FEZzNDUjs7QUM5MkNNO0VBQ0UseUJBQUE7QURpM0NSOztBQy8yQ007RUFDRSxvQ0FBQTtBRGszQ1I7O0FDejNDTTtFQUNFLG9DQUFBO0FENDNDUjs7QUMxM0NNO0VBQ0UseUJBQUE7QUQ2M0NSOztBQzMzQ007RUFDRSxvQ0FBQTtBRDgzQ1I7O0FDcjRDTTtFQUNFLG9DQUFBO0FEdzRDUjs7QUN0NENNO0VBQ0UseUJBQUE7QUR5NENSOztBQ3Y0Q007RUFDRSxvQ0FBQTtBRDA0Q1I7O0FDajVDTTtFQUNFLG9DQUFBO0FEbzVDUjs7QUNsNUNNO0VBQ0UseUJBQUE7QURxNUNSOztBQ241Q007RUFDRSxvQ0FBQTtBRHM1Q1I7O0FDNzVDTTtFQUNFLG9DQUFBO0FEZzZDUjs7QUM5NUNNO0VBQ0UseUJBQUE7QURpNkNSOztBQy81Q007RUFDRSxvQ0FBQTtBRGs2Q1I7O0FDejZDTTtFQUNFLG9DQUFBO0FENDZDUjs7QUMxNkNNO0VBQ0UseUJBQUE7QUQ2NkNSOztBQzM2Q007RUFDRSxvQ0FBQTtBRDg2Q1I7O0FDcjdDTTtFQUNFLG9DQUFBO0FEdzdDUjs7QUN0N0NNO0VBQ0UseUJBQUE7QUR5N0NSOztBQ3Y3Q007RUFDRSxvQ0FBQTtBRDA3Q1I7O0FDajhDTTtFQUNFLG9DQUFBO0FEbzhDUjs7QUNsOENNO0VBQ0UseUJBQUE7QURxOENSOztBQ244Q007RUFDRSxvQ0FBQTtBRHM4Q1I7O0FDNzhDTTtFQUNFLG9DQUFBO0FEZzlDUjs7QUM5OENNO0VBQ0UseUJBQUE7QURpOUNSOztBQy84Q007RUFDRSxvQ0FBQTtBRGs5Q1I7O0FDbitDTTtFQUNFLG9DQUFBO0FEcytDUjs7QUNwK0NNO0VBQ0UseUJBQUE7QUR1K0NSOztBQ3IrQ007RUFDRSxvQ0FBQTtBRHcrQ1I7O0FDcitDTTtFQUNFLG9DQUFBO0FEdytDUjs7QUN0K0NNO0VBQ0UseUJBQUE7QUR5K0NSOztBQ3YrQ007RUFDRSxvQ0FBQTtBRDArQ1I7O0FDai9DTTtFQUNFLG9DQUFBO0FEby9DUjs7QUNsL0NNO0VBQ0UseUJBQUE7QURxL0NSOztBQ24vQ007RUFDRSxvQ0FBQTtBRHMvQ1I7O0FDNy9DTTtFQUNFLG9DQUFBO0FEZ2dEUjs7QUM5L0NNO0VBQ0UseUJBQUE7QURpZ0RSOztBQy8vQ007RUFDRSxvQ0FBQTtBRGtnRFI7O0FDemdETTtFQUNFLG9DQUFBO0FENGdEUjs7QUMxZ0RNO0VBQ0UseUJBQUE7QUQ2Z0RSOztBQzNnRE07RUFDRSxvQ0FBQTtBRDhnRFI7O0FDcmhETTtFQUNFLG9DQUFBO0FEd2hEUjs7QUN0aERNO0VBQ0UseUJBQUE7QUR5aERSOztBQ3ZoRE07RUFDRSxvQ0FBQTtBRDBoRFI7O0FDamlETTtFQUNFLG9DQUFBO0FEb2lEUjs7QUNsaURNO0VBQ0UseUJBQUE7QURxaURSOztBQ25pRE07RUFDRSxvQ0FBQTtBRHNpRFI7O0FDN2lETTtFQUNFLG9DQUFBO0FEZ2pEUjs7QUM5aURNO0VBQ0UseUJBQUE7QURpakRSOztBQy9pRE07RUFDRSxvQ0FBQTtBRGtqRFI7O0FDempETTtFQUNFLG9DQUFBO0FENGpEUjs7QUMxakRNO0VBQ0UseUJBQUE7QUQ2akRSOztBQzNqRE07RUFDRSxvQ0FBQTtBRDhqRFI7O0FDcmtETTtFQUNFLG9DQUFBO0FEd2tEUjs7QUN0a0RNO0VBQ0UseUJBQUE7QUR5a0RSOztBQ3ZrRE07RUFDRSxvQ0FBQTtBRDBrRFI7O0FDamxETTtFQUNFLG9DQUFBO0FEb2xEUjs7QUNsbERNO0VBQ0UseUJBQUE7QURxbERSOztBQ25sRE07RUFDRSxvQ0FBQTtBRHNsRFI7O0FDN2xETTtFQUNFLG9DQUFBO0FEZ21EUjs7QUM5bERNO0VBQ0UseUJBQUE7QURpbURSOztBQy9sRE07RUFDRSxvQ0FBQTtBRGttRFI7O0FDem1ETTtFQUNFLG9DQUFBO0FENG1EUjs7QUMxbURNO0VBQ0UseUJBQUE7QUQ2bURSOztBQzNtRE07RUFDRSxvQ0FBQTtBRDhtRFI7O0FDcm5ETTtFQUNFLG9DQUFBO0FEd25EUjs7QUN0bkRNO0VBQ0UseUJBQUE7QUR5bkRSOztBQ3ZuRE07RUFDRSxvQ0FBQTtBRDBuRFI7O0FDM29ETTtFQUNFLG9DQUFBO0FEOG9EUjs7QUM1b0RNO0VBQ0UseUJBQUE7QUQrb0RSOztBQzdvRE07RUFDRSxvQ0FBQTtBRGdwRFI7O0FDN29ETTtFQUNFLG9DQUFBO0FEZ3BEUjs7QUM5b0RNO0VBQ0UseUJBQUE7QURpcERSOztBQy9vRE07RUFDRSxvQ0FBQTtBRGtwRFI7O0FDenBETTtFQUNFLG9DQUFBO0FENHBEUjs7QUMxcERNO0VBQ0UseUJBQUE7QUQ2cERSOztBQzNwRE07RUFDRSxvQ0FBQTtBRDhwRFI7O0FDcnFETTtFQUNFLG9DQUFBO0FEd3FEUjs7QUN0cURNO0VBQ0UseUJBQUE7QUR5cURSOztBQ3ZxRE07RUFDRSxvQ0FBQTtBRDBxRFI7O0FDanJETTtFQUNFLG9DQUFBO0FEb3JEUjs7QUNsckRNO0VBQ0UseUJBQUE7QURxckRSOztBQ25yRE07RUFDRSxvQ0FBQTtBRHNyRFI7O0FDN3JETTtFQUNFLG9DQUFBO0FEZ3NEUjs7QUM5ckRNO0VBQ0UseUJBQUE7QURpc0RSOztBQy9yRE07RUFDRSxvQ0FBQTtBRGtzRFI7O0FDenNETTtFQUNFLG9DQUFBO0FENHNEUjs7QUMxc0RNO0VBQ0UseUJBQUE7QUQ2c0RSOztBQzNzRE07RUFDRSxvQ0FBQTtBRDhzRFI7O0FDcnRETTtFQUNFLG9DQUFBO0FEd3REUjs7QUN0dERNO0VBQ0UseUJBQUE7QUR5dERSOztBQ3Z0RE07RUFDRSxvQ0FBQTtBRDB0RFI7O0FDanVETTtFQUNFLG9DQUFBO0FEb3VEUjs7QUNsdURNO0VBQ0UseUJBQUE7QURxdURSOztBQ251RE07RUFDRSxvQ0FBQTtBRHN1RFI7O0FDN3VETTtFQUNFLG9DQUFBO0FEZ3ZEUjs7QUM5dURNO0VBQ0UseUJBQUE7QURpdkRSOztBQy91RE07RUFDRSxvQ0FBQTtBRGt2RFI7O0FDenZETTtFQUNFLG9DQUFBO0FENHZEUjs7QUMxdkRNO0VBQ0UseUJBQUE7QUQ2dkRSOztBQzN2RE07RUFDRSxvQ0FBQTtBRDh2RFI7O0FDcndETTtFQUNFLG9DQUFBO0FEd3dEUjs7QUN0d0RNO0VBQ0UseUJBQUE7QUR5d0RSOztBQ3Z3RE07RUFDRSxvQ0FBQTtBRDB3RFI7O0FDanhETTtFQUNFLG9DQUFBO0FEb3hEUjs7QUNseERNO0VBQ0UseUJBQUE7QURxeERSOztBQ254RE07RUFDRSxvQ0FBQTtBRHN4RFI7O0FDN3hETTtFQUNFLG9DQUFBO0FEZ3lEUjs7QUM5eERNO0VBQ0UseUJBQUE7QURpeURSOztBQy94RE07RUFDRSxvQ0FBQTtBRGt5RFI7O0FDbnpETTtFQUNFLG9DQUFBO0FEc3pEUjs7QUNwekRNO0VBQ0UseUJBQUE7QUR1ekRSOztBQ3J6RE07RUFDRSxvQ0FBQTtBRHd6RFI7O0FDcnpETTtFQUNFLG9DQUFBO0FEd3pEUjs7QUN0ekRNO0VBQ0UseUJBQUE7QUR5ekRSOztBQ3Z6RE07RUFDRSxvQ0FBQTtBRDB6RFI7O0FDajBETTtFQUNFLG9DQUFBO0FEbzBEUjs7QUNsMERNO0VBQ0UseUJBQUE7QURxMERSOztBQ24wRE07RUFDRSxvQ0FBQTtBRHMwRFI7O0FDNzBETTtFQUNFLG9DQUFBO0FEZzFEUjs7QUM5MERNO0VBQ0UseUJBQUE7QURpMURSOztBQy8wRE07RUFDRSxvQ0FBQTtBRGsxRFI7O0FDejFETTtFQUNFLG9DQUFBO0FENDFEUjs7QUMxMURNO0VBQ0UseUJBQUE7QUQ2MURSOztBQzMxRE07RUFDRSxvQ0FBQTtBRDgxRFI7O0FDcjJETTtFQUNFLG9DQUFBO0FEdzJEUjs7QUN0MkRNO0VBQ0UseUJBQUE7QUR5MkRSOztBQ3YyRE07RUFDRSxvQ0FBQTtBRDAyRFI7O0FDajNETTtFQUNFLG9DQUFBO0FEbzNEUjs7QUNsM0RNO0VBQ0UseUJBQUE7QURxM0RSOztBQ24zRE07RUFDRSxvQ0FBQTtBRHMzRFI7O0FDNzNETTtFQUNFLG9DQUFBO0FEZzREUjs7QUM5M0RNO0VBQ0UseUJBQUE7QURpNERSOztBQy8zRE07RUFDRSxvQ0FBQTtBRGs0RFI7O0FDejRETTtFQUNFLG9DQUFBO0FENDREUjs7QUMxNERNO0VBQ0UseUJBQUE7QUQ2NERSOztBQzM0RE07RUFDRSxvQ0FBQTtBRDg0RFI7O0FDcjVETTtFQUNFLG9DQUFBO0FEdzVEUjs7QUN0NURNO0VBQ0UseUJBQUE7QUR5NURSOztBQ3Y1RE07RUFDRSxvQ0FBQTtBRDA1RFI7O0FDajZETTtFQUNFLG9DQUFBO0FEbzZEUjs7QUNsNkRNO0VBQ0UseUJBQUE7QURxNkRSOztBQ242RE07RUFDRSxvQ0FBQTtBRHM2RFI7O0FDNzZETTtFQUNFLG9DQUFBO0FEZzdEUjs7QUM5NkRNO0VBQ0UseUJBQUE7QURpN0RSOztBQy82RE07RUFDRSxvQ0FBQTtBRGs3RFI7O0FDejdETTtFQUNFLG9DQUFBO0FENDdEUjs7QUMxN0RNO0VBQ0UseUJBQUE7QUQ2N0RSOztBQzM3RE07RUFDRSxvQ0FBQTtBRDg3RFI7O0FDcjhETTtFQUNFLG9DQUFBO0FEdzhEUjs7QUN0OERNO0VBQ0UseUJBQUE7QUR5OERSOztBQ3Y4RE07RUFDRSxvQ0FBQTtBRDA4RFI7O0FDMzlETTtFQUNFLG9DQUFBO0FEODlEUjs7QUM1OURNO0VBQ0UseUJBQUE7QUQrOURSOztBQzc5RE07RUFDRSxvQ0FBQTtBRGcrRFI7O0FDNzlETTtFQUNFLG9DQUFBO0FEZytEUjs7QUM5OURNO0VBQ0UseUJBQUE7QURpK0RSOztBQy85RE07RUFDRSxvQ0FBQTtBRGsrRFI7O0FDeitETTtFQUNFLG9DQUFBO0FENCtEUjs7QUMxK0RNO0VBQ0UseUJBQUE7QUQ2K0RSOztBQzMrRE07RUFDRSxvQ0FBQTtBRDgrRFI7O0FDci9ETTtFQUNFLG9DQUFBO0FEdy9EUjs7QUN0L0RNO0VBQ0UseUJBQUE7QUR5L0RSOztBQ3YvRE07RUFDRSxvQ0FBQTtBRDAvRFI7O0FDamdFTTtFQUNFLG9DQUFBO0FEb2dFUjs7QUNsZ0VNO0VBQ0UseUJBQUE7QURxZ0VSOztBQ25nRU07RUFDRSxvQ0FBQTtBRHNnRVI7O0FDN2dFTTtFQUNFLG9DQUFBO0FEZ2hFUjs7QUM5Z0VNO0VBQ0UseUJBQUE7QURpaEVSOztBQy9nRU07RUFDRSxvQ0FBQTtBRGtoRVI7O0FDemhFTTtFQUNFLG9DQUFBO0FENGhFUjs7QUMxaEVNO0VBQ0UseUJBQUE7QUQ2aEVSOztBQzNoRU07RUFDRSxvQ0FBQTtBRDhoRVI7O0FDcmlFTTtFQUNFLG9DQUFBO0FEd2lFUjs7QUN0aUVNO0VBQ0UseUJBQUE7QUR5aUVSOztBQ3ZpRU07RUFDRSxvQ0FBQTtBRDBpRVI7O0FDampFTTtFQUNFLG9DQUFBO0FEb2pFUjs7QUNsakVNO0VBQ0UseUJBQUE7QURxakVSOztBQ25qRU07RUFDRSxvQ0FBQTtBRHNqRVI7O0FDN2pFTTtFQUNFLG9DQUFBO0FEZ2tFUjs7QUM5akVNO0VBQ0UseUJBQUE7QURpa0VSOztBQy9qRU07RUFDRSxvQ0FBQTtBRGtrRVI7O0FDemtFTTtFQUNFLG9DQUFBO0FENGtFUjs7QUMxa0VNO0VBQ0UseUJBQUE7QUQ2a0VSOztBQzNrRU07RUFDRSxvQ0FBQTtBRDhrRVI7O0FDcmxFTTtFQUNFLG9DQUFBO0FEd2xFUjs7QUN0bEVNO0VBQ0UseUJBQUE7QUR5bEVSOztBQ3ZsRU07RUFDRSxvQ0FBQTtBRDBsRVI7O0FDam1FTTtFQUNFLG9DQUFBO0FEb21FUjs7QUNsbUVNO0VBQ0UseUJBQUE7QURxbUVSOztBQ25tRU07RUFDRSxvQ0FBQTtBRHNtRVI7O0FDN21FTTtFQUNFLG9DQUFBO0FEZ25FUjs7QUM5bUVNO0VBQ0UseUJBQUE7QURpbkVSOztBQy9tRU07RUFDRSxvQ0FBQTtBRGtuRVI7O0FDbm9FTTtFQUNFLG9DQUFBO0FEc29FUjs7QUNwb0VNO0VBQ0UseUJBQUE7QUR1b0VSOztBQ3JvRU07RUFDRSxvQ0FBQTtBRHdvRVI7O0FDcm9FTTtFQUNFLG9DQUFBO0FEd29FUjs7QUN0b0VNO0VBQ0UseUJBQUE7QUR5b0VSOztBQ3ZvRU07RUFDRSxvQ0FBQTtBRDBvRVI7O0FDanBFTTtFQUNFLG9DQUFBO0FEb3BFUjs7QUNscEVNO0VBQ0UseUJBQUE7QURxcEVSOztBQ25wRU07RUFDRSxvQ0FBQTtBRHNwRVI7O0FDN3BFTTtFQUNFLG9DQUFBO0FEZ3FFUjs7QUM5cEVNO0VBQ0UseUJBQUE7QURpcUVSOztBQy9wRU07RUFDRSxvQ0FBQTtBRGtxRVI7O0FDenFFTTtFQUNFLG9DQUFBO0FENHFFUjs7QUMxcUVNO0VBQ0UseUJBQUE7QUQ2cUVSOztBQzNxRU07RUFDRSxvQ0FBQTtBRDhxRVI7O0FDcnJFTTtFQUNFLG9DQUFBO0FEd3JFUjs7QUN0ckVNO0VBQ0UseUJBQUE7QUR5ckVSOztBQ3ZyRU07RUFDRSxvQ0FBQTtBRDByRVI7O0FDanNFTTtFQUNFLG9DQUFBO0FEb3NFUjs7QUNsc0VNO0VBQ0UseUJBQUE7QURxc0VSOztBQ25zRU07RUFDRSxvQ0FBQTtBRHNzRVI7O0FDN3NFTTtFQUNFLG9DQUFBO0FEZ3RFUjs7QUM5c0VNO0VBQ0UseUJBQUE7QURpdEVSOztBQy9zRU07RUFDRSxvQ0FBQTtBRGt0RVI7O0FDenRFTTtFQUNFLG9DQUFBO0FENHRFUjs7QUMxdEVNO0VBQ0UseUJBQUE7QUQ2dEVSOztBQzN0RU07RUFDRSxvQ0FBQTtBRDh0RVI7O0FDcnVFTTtFQUNFLG9DQUFBO0FEd3VFUjs7QUN0dUVNO0VBQ0UseUJBQUE7QUR5dUVSOztBQ3Z1RU07RUFDRSxvQ0FBQTtBRDB1RVI7O0FDanZFTTtFQUNFLG9DQUFBO0FEb3ZFUjs7QUNsdkVNO0VBQ0UseUJBQUE7QURxdkVSOztBQ252RU07RUFDRSxvQ0FBQTtBRHN2RVI7O0FDN3ZFTTtFQUNFLG9DQUFBO0FEZ3dFUjs7QUM5dkVNO0VBQ0UseUJBQUE7QURpd0VSOztBQy92RU07RUFDRSxvQ0FBQTtBRGt3RVI7O0FDendFTTtFQUNFLG9DQUFBO0FENHdFUjs7QUMxd0VNO0VBQ0UseUJBQUE7QUQ2d0VSOztBQzN3RU07RUFDRSxvQ0FBQTtBRDh3RVI7O0FDcnhFTTtFQUNFLG9DQUFBO0FEd3hFUjs7QUN0eEVNO0VBQ0UseUJBQUE7QUR5eEVSOztBQ3Z4RU07RUFDRSxvQ0FBQTtBRDB4RVI7O0FDM3lFTTtFQUNFLG9DQUFBO0FEOHlFUjs7QUM1eUVNO0VBQ0UseUJBQUE7QUQreUVSOztBQzd5RU07RUFDRSxvQ0FBQTtBRGd6RVI7O0FDN3lFTTtFQUNFLG9DQUFBO0FEZ3pFUjs7QUM5eUVNO0VBQ0UseUJBQUE7QURpekVSOztBQy95RU07RUFDRSxvQ0FBQTtBRGt6RVI7O0FDenpFTTtFQUNFLG9DQUFBO0FENHpFUjs7QUMxekVNO0VBQ0UseUJBQUE7QUQ2ekVSOztBQzN6RU07RUFDRSxvQ0FBQTtBRDh6RVI7O0FDcjBFTTtFQUNFLG9DQUFBO0FEdzBFUjs7QUN0MEVNO0VBQ0UseUJBQUE7QUR5MEVSOztBQ3YwRU07RUFDRSxvQ0FBQTtBRDAwRVI7O0FDajFFTTtFQUNFLG9DQUFBO0FEbzFFUjs7QUNsMUVNO0VBQ0UseUJBQUE7QURxMUVSOztBQ24xRU07RUFDRSxvQ0FBQTtBRHMxRVI7O0FDNzFFTTtFQUNFLG9DQUFBO0FEZzJFUjs7QUM5MUVNO0VBQ0UseUJBQUE7QURpMkVSOztBQy8xRU07RUFDRSxvQ0FBQTtBRGsyRVI7O0FDejJFTTtFQUNFLG9DQUFBO0FENDJFUjs7QUMxMkVNO0VBQ0UseUJBQUE7QUQ2MkVSOztBQzMyRU07RUFDRSxvQ0FBQTtBRDgyRVI7O0FDcjNFTTtFQUNFLG9DQUFBO0FEdzNFUjs7QUN0M0VNO0VBQ0UseUJBQUE7QUR5M0VSOztBQ3YzRU07RUFDRSxvQ0FBQTtBRDAzRVI7O0FDajRFTTtFQUNFLG9DQUFBO0FEbzRFUjs7QUNsNEVNO0VBQ0UseUJBQUE7QURxNEVSOztBQ240RU07RUFDRSxvQ0FBQTtBRHM0RVI7O0FDNzRFTTtFQUNFLG9DQUFBO0FEZzVFUjs7QUM5NEVNO0VBQ0UseUJBQUE7QURpNUVSOztBQy80RU07RUFDRSxvQ0FBQTtBRGs1RVI7O0FDejVFTTtFQUNFLG9DQUFBO0FENDVFUjs7QUMxNUVNO0VBQ0UseUJBQUE7QUQ2NUVSOztBQzM1RU07RUFDRSxvQ0FBQTtBRDg1RVI7O0FDcjZFTTtFQUNFLG9DQUFBO0FEdzZFUjs7QUN0NkVNO0VBQ0UseUJBQUE7QUR5NkVSOztBQ3Y2RU07RUFDRSxvQ0FBQTtBRDA2RVI7O0FDajdFTTtFQUNFLG9DQUFBO0FEbzdFUjs7QUNsN0VNO0VBQ0UseUJBQUE7QURxN0VSOztBQ243RU07RUFDRSxvQ0FBQTtBRHM3RVI7O0FDNzdFTTtFQUNFLG9DQUFBO0FEZzhFUjs7QUM5N0VNO0VBQ0UseUJBQUE7QURpOEVSOztBQy83RU07RUFDRSxvQ0FBQTtBRGs4RVI7O0FDbjlFTTtFQUNFLG9DQUFBO0FEczlFUjs7QUNwOUVNO0VBQ0UseUJBQUE7QUR1OUVSOztBQ3I5RU07RUFDRSxvQ0FBQTtBRHc5RVI7O0FDcjlFTTtFQUNFLG9DQUFBO0FEdzlFUjs7QUN0OUVNO0VBQ0UseUJBQUE7QUR5OUVSOztBQ3Y5RU07RUFDRSxvQ0FBQTtBRDA5RVI7O0FDaitFTTtFQUNFLG9DQUFBO0FEbytFUjs7QUNsK0VNO0VBQ0UseUJBQUE7QURxK0VSOztBQ24rRU07RUFDRSxvQ0FBQTtBRHMrRVI7O0FDNytFTTtFQUNFLG9DQUFBO0FEZy9FUjs7QUM5K0VNO0VBQ0UseUJBQUE7QURpL0VSOztBQy8rRU07RUFDRSxvQ0FBQTtBRGsvRVI7O0FDei9FTTtFQUNFLG9DQUFBO0FENC9FUjs7QUMxL0VNO0VBQ0UseUJBQUE7QUQ2L0VSOztBQzMvRU07RUFDRSxvQ0FBQTtBRDgvRVI7O0FDcmdGTTtFQUNFLG9DQUFBO0FEd2dGUjs7QUN0Z0ZNO0VBQ0UseUJBQUE7QUR5Z0ZSOztBQ3ZnRk07RUFDRSxvQ0FBQTtBRDBnRlI7O0FDamhGTTtFQUNFLG9DQUFBO0FEb2hGUjs7QUNsaEZNO0VBQ0UseUJBQUE7QURxaEZSOztBQ25oRk07RUFDRSxvQ0FBQTtBRHNoRlI7O0FDN2hGTTtFQUNFLG9DQUFBO0FEZ2lGUjs7QUM5aEZNO0VBQ0UseUJBQUE7QURpaUZSOztBQy9oRk07RUFDRSxvQ0FBQTtBRGtpRlI7O0FDemlGTTtFQUNFLG9DQUFBO0FENGlGUjs7QUMxaUZNO0VBQ0UseUJBQUE7QUQ2aUZSOztBQzNpRk07RUFDRSxvQ0FBQTtBRDhpRlI7O0FDcmpGTTtFQUNFLG9DQUFBO0FEd2pGUjs7QUN0akZNO0VBQ0UseUJBQUE7QUR5akZSOztBQ3ZqRk07RUFDRSxvQ0FBQTtBRDBqRlI7O0FDamtGTTtFQUNFLG9DQUFBO0FEb2tGUjs7QUNsa0ZNO0VBQ0UseUJBQUE7QURxa0ZSOztBQ25rRk07RUFDRSxvQ0FBQTtBRHNrRlI7O0FDN2tGTTtFQUNFLG9DQUFBO0FEZ2xGUjs7QUM5a0ZNO0VBQ0UseUJBQUE7QURpbEZSOztBQy9rRk07RUFDRSxvQ0FBQTtBRGtsRlI7O0FDemxGTTtFQUNFLG9DQUFBO0FENGxGUjs7QUMxbEZNO0VBQ0UseUJBQUE7QUQ2bEZSOztBQzNsRk07RUFDRSxvQ0FBQTtBRDhsRlI7O0FDcm1GTTtFQUNFLG9DQUFBO0FEd21GUjs7QUN0bUZNO0VBQ0UseUJBQUE7QUR5bUZSOztBQ3ZtRk07RUFDRSxvQ0FBQTtBRDBtRlI7O0FDM25GTTtFQUNFLG9DQUFBO0FEOG5GUjs7QUM1bkZNO0VBQ0UseUJBQUE7QUQrbkZSOztBQzduRk07RUFDRSxvQ0FBQTtBRGdvRlI7O0FDN25GTTtFQUNFLG9DQUFBO0FEZ29GUjs7QUM5bkZNO0VBQ0UseUJBQUE7QURpb0ZSOztBQy9uRk07RUFDRSxvQ0FBQTtBRGtvRlI7O0FDem9GTTtFQUNFLG9DQUFBO0FENG9GUjs7QUMxb0ZNO0VBQ0UseUJBQUE7QUQ2b0ZSOztBQzNvRk07RUFDRSxvQ0FBQTtBRDhvRlI7O0FDcnBGTTtFQUNFLG9DQUFBO0FEd3BGUjs7QUN0cEZNO0VBQ0UseUJBQUE7QUR5cEZSOztBQ3ZwRk07RUFDRSxvQ0FBQTtBRDBwRlI7O0FDanFGTTtFQUNFLG9DQUFBO0FEb3FGUjs7QUNscUZNO0VBQ0UseUJBQUE7QURxcUZSOztBQ25xRk07RUFDRSxvQ0FBQTtBRHNxRlI7O0FDN3FGTTtFQUNFLG9DQUFBO0FEZ3JGUjs7QUM5cUZNO0VBQ0UseUJBQUE7QURpckZSOztBQy9xRk07RUFDRSxvQ0FBQTtBRGtyRlI7O0FDenJGTTtFQUNFLG9DQUFBO0FENHJGUjs7QUMxckZNO0VBQ0UseUJBQUE7QUQ2ckZSOztBQzNyRk07RUFDRSxvQ0FBQTtBRDhyRlI7O0FDcnNGTTtFQUNFLG9DQUFBO0FEd3NGUjs7QUN0c0ZNO0VBQ0UseUJBQUE7QUR5c0ZSOztBQ3ZzRk07RUFDRSxvQ0FBQTtBRDBzRlI7O0FDanRGTTtFQUNFLG9DQUFBO0FEb3RGUjs7QUNsdEZNO0VBQ0UseUJBQUE7QURxdEZSOztBQ250Rk07RUFDRSxvQ0FBQTtBRHN0RlI7O0FDN3RGTTtFQUNFLG9DQUFBO0FEZ3VGUjs7QUM5dEZNO0VBQ0UseUJBQUE7QURpdUZSOztBQy90Rk07RUFDRSxvQ0FBQTtBRGt1RlI7O0FDenVGTTtFQUNFLG9DQUFBO0FENHVGUjs7QUMxdUZNO0VBQ0UseUJBQUE7QUQ2dUZSOztBQzN1Rk07RUFDRSxvQ0FBQTtBRDh1RlI7O0FDcnZGTTtFQUNFLG9DQUFBO0FEd3ZGUjs7QUN0dkZNO0VBQ0UseUJBQUE7QUR5dkZSOztBQ3Z2Rk07RUFDRSxvQ0FBQTtBRDB2RlI7O0FDandGTTtFQUNFLG9DQUFBO0FEb3dGUjs7QUNsd0ZNO0VBQ0UseUJBQUE7QURxd0ZSOztBQ253Rk07RUFDRSxvQ0FBQTtBRHN3RlI7O0FDN3dGTTtFQUNFLG9DQUFBO0FEZ3hGUjs7QUM5d0ZNO0VBQ0UseUJBQUE7QURpeEZSOztBQy93Rk07RUFDRSxvQ0FBQTtBRGt4RlI7O0FDbnlGTTtFQUNFLG9DQUFBO0FEc3lGUjs7QUNweUZNO0VBQ0UseUJBQUE7QUR1eUZSOztBQ3J5Rk07RUFDRSxvQ0FBQTtBRHd5RlI7O0FDcnlGTTtFQUNFLG9DQUFBO0FEd3lGUjs7QUN0eUZNO0VBQ0UseUJBQUE7QUR5eUZSOztBQ3Z5Rk07RUFDRSxvQ0FBQTtBRDB5RlI7O0FDanpGTTtFQUNFLG9DQUFBO0FEb3pGUjs7QUNsekZNO0VBQ0UseUJBQUE7QURxekZSOztBQ256Rk07RUFDRSxvQ0FBQTtBRHN6RlI7O0FDN3pGTTtFQUNFLG9DQUFBO0FEZzBGUjs7QUM5ekZNO0VBQ0UseUJBQUE7QURpMEZSOztBQy96Rk07RUFDRSxvQ0FBQTtBRGswRlI7O0FDejBGTTtFQUNFLG9DQUFBO0FENDBGUjs7QUMxMEZNO0VBQ0UseUJBQUE7QUQ2MEZSOztBQzMwRk07RUFDRSxvQ0FBQTtBRDgwRlI7O0FDcjFGTTtFQUNFLG9DQUFBO0FEdzFGUjs7QUN0MUZNO0VBQ0UseUJBQUE7QUR5MUZSOztBQ3YxRk07RUFDRSxvQ0FBQTtBRDAxRlI7O0FDajJGTTtFQUNFLG9DQUFBO0FEbzJGUjs7QUNsMkZNO0VBQ0UseUJBQUE7QURxMkZSOztBQ24yRk07RUFDRSxvQ0FBQTtBRHMyRlI7O0FDNzJGTTtFQUNFLG9DQUFBO0FEZzNGUjs7QUM5MkZNO0VBQ0UseUJBQUE7QURpM0ZSOztBQy8yRk07RUFDRSxvQ0FBQTtBRGszRlI7O0FDejNGTTtFQUNFLG9DQUFBO0FENDNGUjs7QUMxM0ZNO0VBQ0UseUJBQUE7QUQ2M0ZSOztBQzMzRk07RUFDRSxvQ0FBQTtBRDgzRlI7O0FDcjRGTTtFQUNFLG9DQUFBO0FEdzRGUjs7QUN0NEZNO0VBQ0UseUJBQUE7QUR5NEZSOztBQ3Y0Rk07RUFDRSxvQ0FBQTtBRDA0RlI7O0FDMzVGTTtFQUNFLG9DQUFBO0FEODVGUjs7QUM1NUZNO0VBQ0UseUJBQUE7QUQrNUZSOztBQzc1Rk07RUFDRSxvQ0FBQTtBRGc2RlI7O0FDNzVGTTtFQUNFLG9DQUFBO0FEZzZGUjs7QUM5NUZNO0VBQ0UseUJBQUE7QURpNkZSOztBQy81Rk07RUFDRSxvQ0FBQTtBRGs2RlI7O0FDejZGTTtFQUNFLG9DQUFBO0FENDZGUjs7QUMxNkZNO0VBQ0UseUJBQUE7QUQ2NkZSOztBQzM2Rk07RUFDRSxvQ0FBQTtBRDg2RlI7O0FDcjdGTTtFQUNFLG9DQUFBO0FEdzdGUjs7QUN0N0ZNO0VBQ0UseUJBQUE7QUR5N0ZSOztBQ3Y3Rk07RUFDRSxvQ0FBQTtBRDA3RlI7O0FDajhGTTtFQUNFLG9DQUFBO0FEbzhGUjs7QUNsOEZNO0VBQ0UseUJBQUE7QURxOEZSOztBQ244Rk07RUFDRSxvQ0FBQTtBRHM4RlI7O0FDNzhGTTtFQUNFLG9DQUFBO0FEZzlGUjs7QUM5OEZNO0VBQ0UseUJBQUE7QURpOUZSOztBQy84Rk07RUFDRSxvQ0FBQTtBRGs5RlI7O0FDejlGTTtFQUNFLG9DQUFBO0FENDlGUjs7QUMxOUZNO0VBQ0UseUJBQUE7QUQ2OUZSOztBQzM5Rk07RUFDRSxvQ0FBQTtBRDg5RlI7O0FDcitGTTtFQUNFLG9DQUFBO0FEdytGUjs7QUN0K0ZNO0VBQ0UseUJBQUE7QUR5K0ZSOztBQ3YrRk07RUFDRSxvQ0FBQTtBRDArRlI7O0FDai9GTTtFQUNFLG9DQUFBO0FEby9GUjs7QUNsL0ZNO0VBQ0UseUJBQUE7QURxL0ZSOztBQ24vRk07RUFDRSxvQ0FBQTtBRHMvRlI7O0FDNy9GTTtFQUNFLG9DQUFBO0FEZ2dHUjs7QUM5L0ZNO0VBQ0UseUJBQUE7QURpZ0dSOztBQy8vRk07RUFDRSxvQ0FBQTtBRGtnR1I7O0FDbmhHTTtFQUNFLG9DQUFBO0FEc2hHUjs7QUNwaEdNO0VBQ0UseUJBQUE7QUR1aEdSOztBQ3JoR007RUFDRSxvQ0FBQTtBRHdoR1I7O0FDcmhHTTtFQUNFLG9DQUFBO0FEd2hHUjs7QUN0aEdNO0VBQ0UseUJBQUE7QUR5aEdSOztBQ3ZoR007RUFDRSxvQ0FBQTtBRDBoR1I7O0FDamlHTTtFQUNFLG9DQUFBO0FEb2lHUjs7QUNsaUdNO0VBQ0UseUJBQUE7QURxaUdSOztBQ25pR007RUFDRSxvQ0FBQTtBRHNpR1I7O0FDN2lHTTtFQUNFLG9DQUFBO0FEZ2pHUjs7QUM5aUdNO0VBQ0UseUJBQUE7QURpakdSOztBQy9pR007RUFDRSxvQ0FBQTtBRGtqR1I7O0FDempHTTtFQUNFLG9DQUFBO0FENGpHUjs7QUMxakdNO0VBQ0UseUJBQUE7QUQ2akdSOztBQzNqR007RUFDRSxvQ0FBQTtBRDhqR1I7O0FDcmtHTTtFQUNFLG9DQUFBO0FEd2tHUjs7QUN0a0dNO0VBQ0UseUJBQUE7QUR5a0dSOztBQ3ZrR007RUFDRSxvQ0FBQTtBRDBrR1I7O0FDamxHTTtFQUNFLG9DQUFBO0FEb2xHUjs7QUNsbEdNO0VBQ0UseUJBQUE7QURxbEdSOztBQ25sR007RUFDRSxvQ0FBQTtBRHNsR1I7O0FDN2xHTTtFQUNFLG9DQUFBO0FEZ21HUjs7QUM5bEdNO0VBQ0UseUJBQUE7QURpbUdSOztBQy9sR007RUFDRSxvQ0FBQTtBRGttR1I7O0FDem1HTTtFQUNFLG9DQUFBO0FENG1HUjs7QUMxbUdNO0VBQ0UseUJBQUE7QUQ2bUdSOztBQzNtR007RUFDRSxvQ0FBQTtBRDhtR1I7O0FDcm5H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QWJpdUlSO0FhOXRJSTtFQUNFLFlBQUE7RUFDQSxjSnhHWTtBVHcwSWxCOztBYzUwSUE7RUFDRSwwQkx5RmE7QVRzdklmOztBYzUwSUE7RUFDRSxhQUFBO0VBQ0EseUJMNEt3QjtBVG1xSTFCOztBYzUwSUE7RUFDRSxpQkwyRGdCO0VLMURoQixjTGdEbUI7QVQreElyQjs7QWUzMUlBOytFQUFBO0FBR0EsdUJBQUE7QUFFQTtFQUNFLGNOc0V1QjtBVHN4SXpCOztBZXoxSUEsZ0JBQUE7QUFFQTs7Ozs7Ozs7Ozs7OztFQWVFLDZCQUFBO0VBQ0EsWUFBQTtFQUNBLGdDTmlDYTtFTWhDYixnQkFBQTtFQUNBLGFBQUE7RUFDQSxZTmNhO0VNYmIsV0FBQTtFQUNBLGVOaUNnQjtFTWhDaEIsaUJOa0NhO0VNakNiLFVOa0NjO0VNakNkLGdCQUFBO0VBQ0EsdUJBQUE7RUFDQSx3Q0FBQTtBZnkxSUY7QWV0MUlFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBRUUsMEJONEJtQjtFTTNCbkIsNkNONkJvQjtBVGsxSXhCO0FlMzJJRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUVFLDBCTnFCbUI7QVQrMkl2QjtBZWg0SUU7Ozs7Ozs7Ozs7Ozs7RUFDRSxnQ0FBQTtFQUNBLDZCQUFBO0FmODRJSjtBZTE0SUU7Ozs7Ozs7Ozs7Ozs7RUFDRSxjTnhEYztBVGc5SWxCO0FlbDRJRTs7Ozs7Ozs7Ozs7OztFQUNFLGNOOUVZO0FUODlJaEI7QWVsNElFOzs7Ozs7Ozs7Ozs7O0VBQ0UsY041RlU7QVQ0K0lkO0FlNTRJRTs7Ozs7Ozs7Ozs7OztFQUNFLFdBQUE7QWYwNUlKO0FlaDVJQSxpQ0FBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQ0UsZ0NBQUE7RUFDQSw2QkFBQTtBZjA2SUY7O0FleDZJQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUNFLGdDTjlDcUI7RU0rQ3JCLDZCQUFBO0FmbThJRjs7QWVqOElBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQ0Us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aUJqQmtJb0I7RWlCaklwQixvQkFBQTtBMUIrbU5KOztBMEJ4bU5FOztFQUNFLHlCQUFBO0ExQjRtTko7O0EwQnZtTkE7RUFDRSxxQkFBQTtFQUNBLFdqQmlGb0I7RWlCaEZwQix5QmpCa0Z5QjtFaUJqRnpCLGtCQUFBO0VBQ0EscUJBQUE7RUFFQSwwQ0FBQTtFQUNBLGVBQUE7QTFCeW1ORjtBMEJ4bU5FO0VBQ0UseUJqQnFINkI7QVRxL01qQzs7QTBCcG1OQTtFQXdDRSxxQkFBQTtFQUNBLFdqQjRGc0I7RWlCM0Z0QixrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLFdqQnlGcUI7RWlCeEZyQixZakJ3RnFCO0VpQnZGckIsaUJqQnVGcUI7RWlCdEZyQixVQUFBO0VBQ0EseUJqQjdIZ0I7RWlCOEhoQixrQmpCcUZ1QjtFaUJuRnZCLGlDQUFBO0VBQ0EsZUFBQTtFQUNBLHNCQUFBO0ExQitqTkY7QTBCcG5ORTtFQUNFLHlCakI5RWM7QVRvc05sQjtBMEJubk5FO0VBQ0UsZ0JBQUE7QTFCcW5OSjtBMEJubk5FO0VBSUUsV2pCMEd5QjtFaUJ6R3pCLFlqQnlHeUI7RWlCeEd6QixVQUFBO0ExQmtuTko7QTBCdm5OSTtFQUNFLFlBQUE7QTFCeW5OTjtBMEJwbk5JO0VBQ0UsaUJqQnNHdUI7QVRnaE43QjtBMEJsbk5FO0VBSUUsYWpCb0d5QjtFaUJuR3pCLGNqQm1HeUI7QVQ4Z043QjtBMEJybk5JO0VBQ0UsY0FBQTtBMUJ1bk5OO0EwQm5uTkk7RUFDRSxtQmpCaUd1QjtBVG9oTjdCO0EwQmpuTkU7RUFLRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0ExQittTko7QTBCcm5OSTtFQUNFLFdBQUE7RUFDQSxVQUFBO0ExQnVuTk47QTBCbG1ORTtFQUNFLGNBQUE7RUFDQSxxQkFBQTtFQUNBLGtCQUFBO0VBQ0EsV2pCMEVvQjtFaUJ6RXBCLGlCakJ3RDBCO0VpQnZEMUIsaUJqQnlFbUI7QVQyaE52Qjs7QTBCL2xOQTtFQUNFLFlqQjhCYztBVG9rTmhCOztBMEI5bE5BO0VBdUZFLGVBQUE7RUFDQSxX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KzNQZDtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7XFxuQGltcG9ydCAnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVVidW50dSc7XFxuLndlYm8ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJkNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0IHtcXG4gIGNvbG9yOiAjMDA2MmQ2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJkNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby5zZWNvbmQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNzdGQSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtc2Vjb25kIHtcXG4gIGNvbG9yOiAjMDA3N0ZBICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLXNlY29uZCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc3RkEgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8udGhpcmQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA5YmRkZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtdGhpcmQge1xcbiAgY29sb3I6ICMwOWJkZGQgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtdGhpcmQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDliZGRkICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLmZvdXJ0aCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2JlN2ZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC1mb3VydGgge1xcbiAgY29sb3I6ICNjYmU3ZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtZm91cnRoIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JiZGVmYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjYmJkZWZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiYmRlZmIgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8ubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjUgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8tdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc5ODZjYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxMmRhOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjNTEyZGE4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTJkYTggIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8ubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8tdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogIzI4MzU5MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkMDE4MWUgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8tdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjZDAxODFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwMTgxZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjkxNTFiICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogI2I5MTUxYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiOTE1MWIgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8uZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2EyMTMxOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICNhMjEzMTggIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTIxMzE4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLmItIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0OWNlNWYgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8tdGV4dC50ZXh0LWItIHtcXG4gIGNvbG9yOiAjNDljZTVmICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLWItIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ5Y2U1ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGIxMDE0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogIzhiMTAxNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4YjEwMTQgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dCB7XFxuICBjb2xvcjogI2Y0NDMzNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYmVlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2ZmZWJlZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmViZWUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2RkMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNmZmNkZDIgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjZGQyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjlhOWEgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjZWY5YTlhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmOWE5YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTU3MzczICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2U1NzM3MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTczNzMgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmNTM1MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICNlZjUzNTAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY1MzUwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MzkzNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogI2U1MzkzNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MzkzNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkMzJmMmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICNkMzJmMmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkMzJmMmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzYyODI4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjYzYyODI4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzYyODI4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I3MWMxYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogI2I3MWMxYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I3MWMxYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhhODAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNmZjhhODAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhhODAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjZmY1MjUyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMTc0NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogI2ZmMTc0NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMTc0NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkNTAwMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICNkNTAwMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkNTAwMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5MWU2MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0IHtcXG4gIGNvbG9yOiAjZTkxZTYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5MWU2MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZTRlYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZmNlNGVjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmY2U0ZWMgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGJiZDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2Y4YmJkMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhiYmQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ4ZmIxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICNmNDhmYjEgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0OGZiMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwNjI5MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjZjA2MjkyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMDYyOTIgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlYzQwN2EgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogI2VjNDA3YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWM0MDdhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkODFiNjAgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjZDgxYjYwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4MWI2MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzIxODViICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogI2MyMTg1YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjMjE4NWIgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FkMTQ1NyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICNhZDE0NTcgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWQxNDU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4ODBlNGYgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjODgwZTRmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg4MGU0ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY4MGFiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogI2ZmODBhYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjgwYWIgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsuYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICNmZjQwODEgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTAwNTcgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjZjUwMDU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1MDA1NyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzUxMTYyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogI2M1MTE2MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjNTExNjIgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWMyN2IwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dCB7XFxuICBjb2xvcjogIzljMjdiMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzljMjdiMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNlNWY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2YzZTVmNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2U1ZjUgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxYmVlNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNlMWJlZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFiZWU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjZTkzZDggIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjY2U5M2Q4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NlOTNkOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmE2OGM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2JhNjhjOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiYTY4YzggIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FiNDdiYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICNhYjQ3YmMgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWI0N2JjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhlMjRhYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogIzhlMjRhYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhlMjRhYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3YjFmYTIgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICM3YjFmYTIgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3YjFmYTIgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmExYjlhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjNmExYjlhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmExYjlhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRhMTQ4YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogIzRhMTQ4YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRhMTQ4YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlYTgwZmMgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNlYTgwZmMgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlYTgwZmMgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTA0MGZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjZTA0MGZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTA0MGZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q1MDBmOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogI2Q1MDBmOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q1MDBmOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhYTAwZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICNhYTAwZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhYTAwZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2NzNhYjcgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQge1xcbiAgY29sb3I6ICM2NzNhYjcgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY3M2FiNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGU3ZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNlZGU3ZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGU3ZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFjNGU5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjZDFjNGU5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFjNGU5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzOWRkYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2IzOWRkYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzOWRkYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5NTc1Y2QgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICM5NTc1Y2QgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5NTc1Y2QgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2U1N2MyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjN2U1N2MyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2U1N2MyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWUzNWIxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICM1ZTM1YjEgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVlMzViMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxMmRhOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjNTEyZGE4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTJkYTggIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0NTI3YTAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzQ1MjdhMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDUyN2EwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzExYjkyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMzMTFiOTIgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMxMWI5MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUuYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzODhmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjYjM4OGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiMzg4ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3YzRkZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogIzdjNGRmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2M0ZGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjUxZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICM2NTFmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY1MWZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUuYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYyMDBlYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjNjIwMGVhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2MjAwZWEgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnbyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dCB7XFxuICBjb2xvcjogIzNmNTFiNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlYWY2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2U4ZWFmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGVhZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M1Y2FlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNjNWNhZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzVjYWU5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28ubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZmE4ZGEgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjOWZhOGRhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzlmYThkYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogIzc5ODZjYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjNmJjMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICM1YzZiYzAgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWM2YmMwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28uZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM5NDlhYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogIzM5NDlhYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM5NDlhYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDNmOWYgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICMzMDNmOWYgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDNmOWYgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28uZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFhMjM3ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogIzFhMjM3ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFhMjM3ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4YzllZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICM4YzllZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4YzllZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTM2ZGZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjNTM2ZGZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTM2ZGZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28uYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNkNWFmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogIzNkNWFmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNkNWFmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDRmZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICMzMDRmZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDRmZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxOTZmMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0IHtcXG4gIGNvbG9yOiAjMjE5NmYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxOTZmMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzZjJmZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZTNmMmZkICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlM2YyZmQgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiYmRlZmIgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2JiZGVmYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmJkZWZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBjYWY5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICM5MGNhZjkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwY2FmOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0YjVmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjNjRiNWY2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2NGI1ZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxZTg4ZTUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjMWU4OGU1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTk3NmQyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogIzE5NzZkMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxOTc2ZDIgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE1NjVjMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICMxNTY1YzAgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU2NWMwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwZDQ3YTEgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjMGQ0N2ExICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzBkNDdhMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODJiMWZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogIzgyYjFmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MmIxZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUuYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OGFmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICM0NDhhZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ4YWZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTc5ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjMjk3OWZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5NzlmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk2MmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogIzI5NjJmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTYyZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzYTlmNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0IHtcXG4gIGNvbG9yOiAjMDNhOWY0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzYTlmNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZjVmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZTFmNWZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWY1ZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiM2U1ZmMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2IzZTVmYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNlNWZjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFkNGZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICM4MWQ0ZmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxZDRmYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRmYzNmNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjNGZjM2Y3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZmMzZjcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyOWI2ZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogIzI5YjZmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjliNmY2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMzliZTUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjMDM5YmU1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzOWJlNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDI4OGQxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogIzAyODhkMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMjg4ZDEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAyNzdiZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICMwMjc3YmQgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDI3N2JkICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMTU3OWIgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjMDE1NzliICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAxNTc5YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBkOGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogIzgwZDhmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGQ4ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUuYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQwYzRmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICM0MGM0ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDBjNGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGIwZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjMDBiMGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYjBmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MWVhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogIzAwOTFlYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDkxZWEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYmNkNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0IHtcXG4gIGNvbG9yOiAjMDBiY2Q0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYmNkNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZjdmYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZTBmN2ZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGY3ZmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4ubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmViZjIgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2IyZWJmMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjJlYmYyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBkZWVhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICM4MGRlZWEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwZGVlYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkZDBlMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjNGRkMGUxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGQwZTEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4ubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmM2ZGEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogIzI2YzZkYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZjNmRhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGFjYzEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjMDBhY2MxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYWNjMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5N2E3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogIzAwOTdhNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDk3YTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4uZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODM4ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICMwMDgzOGYgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4MzhmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDYwNjQgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjMDA2MDY0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjA2NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODRmZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogIzg0ZmZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4NGZmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4uYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4ZmZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICMxOGZmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMThmZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGU1ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjMDBlNWZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTVmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiOGQ0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogIzAwYjhkNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGI4ZDQgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTY4OCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0IHtcXG4gIGNvbG9yOiAjMDA5Njg4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTY4OCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZjJmMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZTBmMmYxICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGYyZjEgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmRmZGIgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2IyZGZkYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjJkZmRiICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBjYmM0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICM4MGNiYzQgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwY2JjNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjZhYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjNGRiNmFjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGI2YWMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWEgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogIzI2YTY5YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDg5N2IgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjMDA4OTdiICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODk3YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3OTZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogIzAwNzk2YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc5NmIgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjk1YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICMwMDY5NWMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OTVjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDRkNDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjMDA0ZDQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNGQ0MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTdmZmViICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogI2E3ZmZlYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhN2ZmZWIgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwuYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0ZmZkYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICM2NGZmZGEgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRmZmRhICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGU5YjYgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjMWRlOWI2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkZTliNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiZmE1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogIzAwYmZhNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGJmYTUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0Y2FmNTAgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQge1xcbiAgY29sb3I6ICM0Y2FmNTAgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRjYWY1MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4ubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGY1ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNlOGY1ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGY1ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhlNmM5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjYzhlNmM5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhlNmM5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E1ZDZhNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2E1ZDZhNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E1ZDZhNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4ubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MWM3ODQgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICM4MWM3ODQgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MWM3ODQgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjZiYjZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjNjZiYjZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjZiYjZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDNhMDQ3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICM0M2EwNDcgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQzYTA0NyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4uZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM4OGUzYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjMzg4ZTNjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzODhlM2MgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyZTdkMzIgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzJlN2QzMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmU3ZDMyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWI1ZTIwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMxYjVlMjAgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFiNWUyMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4uYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I5ZjZjYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjYjlmNmNhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiOWY2Y2EgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2OWYwYWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogIzY5ZjBhZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjlmMGFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBlNjc2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICMwMGU2NzYgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTY3NiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4uYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjMDBjODUzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGM4NTMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4YmMzNGEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQge1xcbiAgY29sb3I6ICM4YmMzNGEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhiYzM0YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4ubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMWY4ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNmMWY4ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMWY4ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNlZGM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjZGNlZGM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNlZGM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M1ZTFhNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2M1ZTFhNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M1ZTFhNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4ubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhZWQ1ODEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICNhZWQ1ODEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhZWQ1ODEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNjYzY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjOWNjYzY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNjYzY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2NiMzQyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICM3Y2IzNDIgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdjYjM0MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4uZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY4OWYzOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjNjg5ZjM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2ODlmMzggIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1NThiMmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzU1OGIyZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU4YjJmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM2OTFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMzMzY5MWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzNjkxZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4uYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZmY5MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjY2NmZjkwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2ZmOTAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmZmNTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogI2IyZmY1OSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjJmZjU5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzZmZjAzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICM3NmZmMDMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc2ZmYwMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4uYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0ZGQxNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjNjRkZDE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2NGRkMTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NkZGMzOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0IHtcXG4gIGNvbG9yOiAjY2RkYzM5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NkZGMzOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmJlNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZjlmYmU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWZiZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGY0YzMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2YwZjRjMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmNGMzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlZTljICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICNlNmVlOWMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZWU5YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZTc3NSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjZGNlNzc1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2U3NzUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkNGUxNTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogI2Q0ZTE1NyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDRlMTU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjMGNhMzMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjYzBjYTMzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MwY2EzMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWZiNDJiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogI2FmYjQyYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhZmI0MmIgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWQyNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICM5ZTlkMjQgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWU5ZDI0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4Mjc3MTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjODI3NzE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgyNzcxNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmZjgxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogI2Y0ZmY4MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGZmODEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUuYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZmY0MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICNlZWZmNDEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmZjQxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjNmZmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjYzZmZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2ZmYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWVlYTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogI2FlZWEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhZWVhMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYjNiICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dCB7XFxuICBjb2xvcjogI2ZmZWIzYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWIzYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZGU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2ZmZmRlNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZkZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjljNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNmZmY5YzQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOWM0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY1OWQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjZmZmNTlkICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjU5ZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMTc2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2ZmZjE3NiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxNzYgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWU1OCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICNmZmVlNTggIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZTU4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDgzNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogI2ZkZDgzNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDgzNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmMwMmQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICNmYmMwMmQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmMwMmQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlhODI1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjZjlhODI1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlhODI1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2YxNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogI2Y1N2YxNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2YxNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmOGQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNmZmZmOGQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmOGQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjZmZmZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogI2ZmZWEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ2MDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICNmZmQ2MDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ2MDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQge1xcbiAgY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTEgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNmZmY4ZTEgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTEgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlY2IzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjZmZlY2IzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlY2IzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTA4MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2ZmZTA4MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTA4MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ1NGYgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICNmZmQ1NGYgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ1NGYgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYTI4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjZmZjYTI4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYTI4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiMzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICNmZmIzMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYjMwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTAwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjZmZhMDAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmEwMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogI2ZmOGYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY4ZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICNmZjZmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIuYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTU3ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjZmZlNTdmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmU1N2YgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ3NDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogI2ZmZDc0MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkNzQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjNDAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICNmZmM0MDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzQwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIuYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWIwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjZmZhYjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmFiMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5ODAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dCB7XFxuICBjb2xvcjogI2ZmOTgwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTgwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2UwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2ZmZjNlMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYzZTAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTBiMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNmZmUwYjIgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlMGIyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNjODAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjZmZjYzgwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2M4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiNzRkICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2ZmYjc0ZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmI3NGQgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTcyNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICNmZmE3MjYgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhNzI2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiOGMwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogI2ZiOGMwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiOGMwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTdjMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICNmNTdjMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTdjMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY2YzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjZWY2YzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY2YzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2NTEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogI2U2NTEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2NTEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQxODAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNmZmQxODAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQxODAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjZmZhYjQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogI2ZmOTEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZkMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICNmZjZkMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZkMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjU3MjIgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQge1xcbiAgY29sb3I6ICNmZjU3MjIgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTcyMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmU5ZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNmYmU5ZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmU5ZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjY2JjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjZmZjY2JjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjY2JjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWI5MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2ZmYWI5MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWI5MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhhNjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICNmZjhhNjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhhNjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3MDQzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjZmY3MDQzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3MDQzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ1MTFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICNmNDUxMWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NTExZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2NGExOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjZTY0YTE5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNjRhMTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkODQzMTUgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogI2Q4NDMxNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDg0MzE1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmYzNjBjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICNiZjM2MGMgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JmMzYwYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UuYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOWU4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjZmY5ZTgwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjllODAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZlNDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogI2ZmNmU0MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZTQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYzZDAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICNmZjNkMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmM2QwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UuYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkMmMwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjZGQyYzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZDJjMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTU1NDggIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXRleHQge1xcbiAgY29sb3I6ICM3OTU1NDggIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc5NTU0OCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24ubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZmViZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNlZmViZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZmViZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDdjY2M4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjZDdjY2M4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDdjY2M4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JjYWFhNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2JjYWFhNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24td2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JjYWFhNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24ubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhMTg4N2YgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICNhMTg4N2YgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhMTg4N2YgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGQ2ZTYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjOGQ2ZTYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGQ2ZTYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmQ0YzQxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICM2ZDRjNDEgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZkNGM0MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24uZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVkNDAzNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24tdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjNWQ0MDM3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1ZDQwMzcgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZTM0MmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzRlMzQyZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24td2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGUzNDJlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2UyNzIzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMzZTI3MjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNlMjcyMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2MDdkOGIgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS10ZXh0IHtcXG4gIGNvbG9yOiAjNjA3ZDhiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3ZDhiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXkubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2VmZjEgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZWNlZmYxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWZmMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2ZkOGRjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2NmZDhkYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjZmQ4ZGMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IwYmVjNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICNiMGJlYzUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjBiZWM1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXkubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MGE0YWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjOTBhNGFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwYTRhZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzg5MDljICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogIzc4OTA5YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3ODkwOWMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2ZTdhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjNTQ2ZTdhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2ZTdhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXkuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ1NWE2NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogIzQ1NWE2NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ1NWE2NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzQ3NGYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICMzNzQ3NGYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzQ3NGYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYzMjM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjMjYzMjM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYzMjM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZTllOWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktdGV4dCB7XFxuICBjb2xvcjogIzllOWU5ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZTllOWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXkubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2ZhZmFmYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNmNWY1ZjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjZWVlZWVlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXkubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiZGJkICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICNiZGJkYmQgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkYmRiZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzU3NTc1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogIzc1NzU3NSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3NTc1NzUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXkuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYxNjE2MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICM2MTYxNjEgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjE2MTYxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0MjQyNDIgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjNDI0MjQyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyNDI0MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyMTIxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogIzIxMjEyMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTIxMjEgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsYWNrIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsYWNrLXRleHQge1xcbiAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLndoaXRlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLndoaXRlLXRleHQge1xcbiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnRyYW5zcGFyZW50IHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50cmFuc3BhcmVudC10ZXh0IHtcXG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbn1cXG5cXG4vKipcXG4gKiBwcmlzbS5qcyBUd2lsaWdodCB0aGVtZVxcbiAqIEJhc2VkIChtb3JlIG9yIGxlc3MpIG9uIHRoZSBUd2lsaWdodCB0aGVtZSBvcmlnaW5hbGx5IG9mIFRleHRtYXRlIGZhbWUuXFxuICogQGF1dGhvciBSZW15IEJhY2hcXG4gKi9cXG5jb2RlW2NsYXNzKj1sYW5ndWFnZS1dLFxcbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XFxuICBjb2xvcjogd2hpdGU7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgZm9udC1mYW1pbHk6IENvbnNvbGFzLCBNb25hY28sIFxcXCJBbmRhbGUgTW9ub1xcXCIsIFxcXCJVYnVudHUgTW9ub1xcXCIsIG1vbm9zcGFjZTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICB0ZXh0LXNoYWRvdzogMCAtMC4xZW0gMC4yZW0gYmxhY2s7XFxuICB3aGl0ZS1zcGFjZTogcHJlO1xcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XFxuICB3b3JkLWJyZWFrOiBub3JtYWw7XFxuICB3b3JkLXdyYXA6IG5vcm1hbDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAtbW96LXRhYi1zaXplOiA0O1xcbiAgLW8tdGFiLXNpemU6IDQ7XFxuICB0YWItc2l6ZTogNDtcXG4gIC13ZWJraXQtaHlwaGVuczogbm9uZTtcXG4gIC1tb3otaHlwaGVuczogbm9uZTtcXG4gIC1tcy1oeXBoZW5zOiBub25lO1xcbiAgaHlwaGVuczogbm9uZTtcXG59XFxuXFxucHJlW2NsYXNzKj1sYW5ndWFnZS1dLFxcbjpub3QocHJlKSA+IGNvZGVbY2xhc3MqPWxhbmd1YWdlLV0ge1xcbiAgYmFja2dyb3VuZDogaHNsKDAsIDAlLCA4JSk7IC8qICMxNDE0MTQgKi9cXG59XFxuXFxuLyogQ29kZSBibG9ja3MgKi9cXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV0ge1xcbiAgYm9yZGVyLXJhZGl1czogMC41ZW07XFxuICBib3JkZXI6IDAuM2VtIHNvbGlkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzI4MkEyQiAqL1xcbiAgYm94LXNoYWRvdzogMXB4IDFweCAwLjVlbSBibGFjayBpbnNldDtcXG4gIG1hcmdpbjogMC41ZW0gMDtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbiAgcGFkZGluZzogMWVtO1xcbn1cXG5cXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV06Oi1tb3otc2VsZWN0aW9uIHtcXG4gIC8qIEZpcmVmb3ggKi9cXG4gIGJhY2tncm91bmQ6IGhzbCgyMDAsIDQlLCAxNiUpOyAvKiAjMjgyQTJCICovXFxufVxcblxcbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6c2VsZWN0aW9uIHtcXG4gIC8qIFNhZmFyaSAqL1xcbiAgYmFja2dyb3VuZDogaHNsKDIwMCwgNCUsIDE2JSk7IC8qICMyODJBMkIgKi9cXG59XFxuXFxuLyogVGV4dCBTZWxlY3Rpb24gY29sb3VyICovXFxucHJlW2NsYXNzKj1sYW5ndWFnZS1dOjotbW96LXNlbGVjdGlvbiwgcHJlW2NsYXNzKj1sYW5ndWFnZS1dIDo6LW1vei1zZWxlY3Rpb24sXFxuY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6LW1vei1zZWxlY3Rpb24sIGNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbiB7XFxuICB0ZXh0LXNoYWRvdzogbm9uZTtcXG4gIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDkzJSwgMC4xNSk7IC8qICNFREVERUQgKi9cXG59XFxuXFxucHJlW2NsYXNzKj1sYW5ndWFnZS1dOjpzZWxlY3Rpb24sIHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6OnNlbGVjdGlvbixcXG5jb2RlW2NsYXNzKj1sYW5ndWFnZS1dOjpzZWxlY3Rpb24sIGNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjpzZWxlY3Rpb24ge1xcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XFxuICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCA5MyUsIDAuMTUpOyAvKiAjRURFREVEICovXFxufVxcblxcbi8qIElubGluZSBjb2RlICovXFxuOm5vdChwcmUpID4gY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XFxuICBib3JkZXItcmFkaXVzOiAwLjNlbTtcXG4gIGJvcmRlcjogMC4xM2VtIHNvbGlkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzU0NTQ1NCAqL1xcbiAgYm94LXNoYWRvdzogMXB4IDFweCAwLjNlbSAtMC4xZW0gYmxhY2sgaW5zZXQ7XFxuICBwYWRkaW5nOiAwLjE1ZW0gMC4yZW0gMC4wNWVtO1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXG59XFxuXFxuLnRva2VuLmNvbW1lbnQsXFxuLnRva2VuLnByb2xvZyxcXG4udG9rZW4uZG9jdHlwZSxcXG4udG9rZW4uY2RhdGEge1xcbiAgY29sb3I6IGhzbCgwLCAwJSwgNDclKTsgLyogIzc3Nzc3NyAqL1xcbn1cXG5cXG4udG9rZW4ucHVuY3R1YXRpb24ge1xcbiAgb3BhY2l0eTogMC43O1xcbn1cXG5cXG4ubmFtZXNwYWNlIHtcXG4gIG9wYWNpdHk6IDAuNztcXG59XFxuXFxuLnRva2VuLnRhZyxcXG4udG9rZW4uYm9vbGVhbixcXG4udG9rZW4ubnVtYmVyLFxcbi50b2tlbi5kZWxldGVkIHtcXG4gIGNvbG9yOiBoc2woMTQsIDU4JSwgNTUlKTsgLyogI0NGNkE0QyAqL1xcbn1cXG5cXG4udG9rZW4ua2V5d29yZCxcXG4udG9rZW4ucHJvcGVydHksXFxuLnRva2VuLnNlbGVjdG9yLFxcbi50b2tlbi5jb25zdGFudCxcXG4udG9rZW4uc3ltYm9sLFxcbi50b2tlbi5idWlsdGluIHtcXG4gIGNvbG9yOiBoc2woNTMsIDg5JSwgNzklKTsgLyogI0Y5RUU5OCAqL1xcbn1cXG5cXG4udG9rZW4uYXR0ci1uYW1lLFxcbi50b2tlbi5hdHRyLXZhbHVlLFxcbi50b2tlbi5zdHJpbmcsXFxuLnRva2VuLmNoYXIsXFxuLnRva2VuLm9wZXJhdG9yLFxcbi50b2tlbi5lbnRpdHksXFxuLnRva2VuLnVybCxcXG4ubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmcsXFxuLnN0eWxlIC50b2tlbi5zdHJpbmcsXFxuLnRva2VuLnZhcmlhYmxlLFxcbi50b2tlbi5pbnNlcnRlZCB7XFxuICBjb2xvcjogaHNsKDc2LCAyMSUsIDUyJSk7IC8qICM4RjlENkEgKi9cXG59XFxuXFxuLnRva2VuLmF0cnVsZSB7XFxuICBjb2xvcjogaHNsKDIxOCwgMjIlLCA1NSUpOyAvKiAjNzU4N0E2ICovXFxufVxcblxcbi50b2tlbi5yZWdleCxcXG4udG9rZW4uaW1wb3J0YW50IHtcXG4gIGNvbG9yOiBoc2woNDIsIDc1JSwgNjUlKTsgLyogI0U5QzA2MiAqL1xcbn1cXG5cXG4udG9rZW4uaW1wb3J0YW50LFxcbi50b2tlbi5ib2xkIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbn1cXG5cXG4udG9rZW4uaXRhbGljIHtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG59XFxuXFxuLnRva2VuLmVudGl0eSB7XFxuICBjdXJzb3I6IGhlbHA7XFxufVxcblxcbnByZVtkYXRhLWxpbmVdIHtcXG4gIHBhZGRpbmc6IDFlbSAwIDFlbSAzZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcblxcbi8qIE1hcmt1cCAqL1xcbi5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnRhZyxcXG4ubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi5hdHRyLW5hbWUsXFxuLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4ucHVuY3R1YXRpb24ge1xcbiAgY29sb3I6IGhzbCgzMywgMzMlLCA1MiUpOyAvKiAjQUM4ODVCICovXFxufVxcblxcbi8qIE1ha2UgdGhlIHRva2VucyBzaXQgYWJvdmUgdGhlIGxpbmUgaGlnaGxpZ2h0IHNvIHRoZSBjb2xvdXJzIGRvbid0IGxvb2sgZmFkZWQuICovXFxuLnRva2VuIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5saW5lLWhpZ2hsaWdodCB7XFxuICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCAzMyUsIDAuMjUpOyAvKiAjNTQ1NDU0ICovXFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIGhzbGEoMCwgMCUsIDMzJSwgMC4xKSA3MCUsIGhzbGEoMCwgMCUsIDMzJSwgMCkpOyAvKiAjNTQ1NDU0ICovXFxuICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzU0NTQ1NCAqL1xcbiAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCBoc2woMCwgMCUsIDMzJSk7IC8qICM1NDU0NTQgKi9cXG4gIGxlZnQ6IDA7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIG1hcmdpbi10b3A6IDAuNzVlbTsgLyogU2FtZSBhcyAucHJpc23igJlzIHBhZGRpbmctdG9wICovXFxuICBwYWRkaW5nOiBpbmhlcml0IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAwO1xcbiAgd2hpdGUtc3BhY2U6IHByZTtcXG4gIHotaW5kZXg6IDA7XFxufVxcblxcbi5saW5lLWhpZ2hsaWdodDpiZWZvcmUsXFxuLmxpbmUtaGlnaGxpZ2h0W2RhdGEtZW5kXTphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjE1LCAxNSUsIDU5JSk7IC8qICM4Nzk0QTYgKi9cXG4gIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xcbiAgYm94LXNoYWRvdzogMCAxcHggd2hpdGU7XFxuICBjb2xvcjogaHNsKDI0LCAyMCUsIDk1JSk7IC8qICNGNUYyRjAgKi9cXG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxuICBmb250OiBib2xkIDY1JS8xLjUgc2Fucy1zZXJpZjtcXG4gIGxlZnQ6IDAuNmVtO1xcbiAgbWluLXdpZHRoOiAxZW07XFxuICBwYWRkaW5nOiAwIDAuNWVtO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XFxuICB0b3A6IDAuNGVtO1xcbiAgdmVydGljYWwtYWxpZ246IDAuM2VtO1xcbn1cXG5cXG4ubGluZS1oaWdobGlnaHRbZGF0YS1lbmRdOmFmdGVyIHtcXG4gIGJvdHRvbTogMC40ZW07XFxuICBjb250ZW50OiBhdHRyKGRhdGEtZW5kKTtcXG4gIHRvcDogYXV0bztcXG59XFxuXFxuLndpbmRvdyB7XFxuICBmb250LWZhbWlseTogXFxcIlVidW50dVxcXCIsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemU6IDE3cHg7XFxuICB3aWR0aDogNjAwcHg7XFxuICBtYXJnaW46IDc1cHggYXV0bztcXG4gIGJhY2tncm91bmQ6ICMyYzNlNTA7XFxuICBoZWlnaHQ6IDM1MHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgZGlzcGxheTogcmVsYXRpdmU7XFxuICBib3gtc2hhZG93OiAxMHB4IDEwcHggMTBweCAjODg4ODg4O1xcbn1cXG5cXG4uYWZ0ZXJjbG9zZSB7XFxuICBjb2xvcjogIzM0NDk1ZTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcblxcbi5vcGVuIHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgcGFkZGluZzogMTVweDtcXG4gIGJhY2tncm91bmQ6ICMyZWNjNzE7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcblxcbi5iYXNoIHtcXG4gIHdpZHRoOiA2MDBweDtcXG4gIGJhY2tncm91bmQ6ICMzNDQ5NWU7XFxuICBoZWlnaHQ6IDMxMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgdG9wOiA0MHB4O1xcbiAgZGlzcGxheTogYWJzb2x1dGU7XFxuICBjb2xvcjogI2ZmZjtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxufVxcbi5iYXNoIC5jb21tYW5kOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcInVzZXJAbWFjaGluZSAkIDogXFxcIjtcXG4gIGNvbG9yOiAjMmVjYzcxO1xcbn1cXG4uYmFzaCAucmVzdWx0YTo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCI+PlxcXCI7XFxuICBjb2xvcjogIzJlY2M3MTtcXG59XFxuXFxuLyogZWZmZWN0ZWQgYnkgY29udHJvbGxlcnMgKi9cXG4ud2luZG93bWF4IHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgYmFja2dyb3VuZDogIzJjM2U1MDtcXG4gIGhlaWdodDogMTAwMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgZGlzcGxheTogcmVsYXRpdmU7XFxufVxcblxcbi53aW5kb3dtaW4ge1xcbiAgd2lkdGg6IDMwMHB4O1xcbiAgaGVpZ2h0OiA0NXB4O1xcbiAgYmFja2dyb3VuZDogIzJjM2U1MDtcXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gIGJvdHRvbTogMDtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG59XFxuXFxuLmJhc2htYXgge1xcbiAgZGlzcGxheTogYWJzb2x1dGU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQ6ICMzNDQ5NWU7XFxuICBoZWlnaHQ6IDk2MHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgYm90dG9tOiAwO1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi8qICEtLWVuZC0tISAqL1xcbi5idXR0b25zIHtcXG4gIHdpZHRoOiAxNXB4O1xcbiAgaGVpZ2h0OiAxNXB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgZmxvYXQ6IHJpZ2h0O1xcbiAgbWFyZ2luOiAxM3B4IDRweDtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuXFxuLmNsb3NlIHtcXG4gIGJhY2tncm91bmQ6ICNlNzRjM2M7XFxufVxcblxcbi5tYXhpbWl6ZSB7XFxuICBiYWNrZ3JvdW5kOiAjZjFjNDBmO1xcbn1cXG5cXG4ubWluaW1pemUge1xcbiAgYmFja2dyb3VuZDogIzJlY2M3MTtcXG59XFxuXFxuLnJlc3VsdCB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4uY29udHJvbHMge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4udGl0bGUge1xcbiAgY29sb3I6ICNmZmY7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIHBhZGRpbmc6IDEwcHg7XFxufVxcblxcbi5tYXRlcmlhbC10b29sdGlwIHtcXG4gIHBhZGRpbmc6IDEwcHggOHB4O1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgei1pbmRleDogMjAwMDtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgbWluLWhlaWdodDogMzZweDtcXG4gIGxpbmUtaGVpZ2h0OiAxMjAlO1xcbiAgb3BhY2l0eTogMDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gNHB4KTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMjMyO1xcbn1cXG5cXG4uYmFja2Ryb3Age1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogN3B4O1xcbiAgd2lkdGg6IDE0cHg7XFxuICBib3JkZXItcmFkaXVzOiAwIDAgNTAlIDUwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7XFxuICB6LWluZGV4OiAtMTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAwJTtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG59XFxuXFxuLnNoYWRvdy0wIHtcXG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLyogMmRwIGVsZXZhdGlvbiBtb2RpZmllZCovXFxuLnNoYWRvdy0xLCBuYXYsIC5kcm9wZG93bi1jb250ZW50LCAuY2FyZCwgLmNhcmQtcGFuZWwsIC5idG4tZmxvYXRpbmcsIC5idG4sIC5idG4tc21hbGwsIC5idG4tbGFyZ2UsIC5jb2xsYXBzaWJsZSB7XFxuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XFxufVxcblxcbi5zaGFkb3ctMS1oYWxmLCAuYnRuLWZsb2F0aW5nOmhvdmVyLCAuYnRuOmhvdmVyLCAuYnRuLXNtYWxsOmhvdmVyLCAuYnRuLWxhcmdlOmhvdmVyIHtcXG4gIGJveC1zaGFkb3c6IDAgM3B4IDNweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDdweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgM3B4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLyogNmRwIGVsZXZhdGlvbiBtb2RpZmllZCovXFxuLnNoYWRvdy0yIHtcXG4gIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMyk7XFxufVxcblxcbi8qIDEyZHAgZWxldmF0aW9uIG1vZGlmaWVkKi9cXG4uc2hhZG93LTMge1xcbiAgYm94LXNoYWRvdzogMCA4cHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcbn1cXG5cXG4vKiAxNmRwIGVsZXZhdGlvbiAqL1xcbi5zaGFkb3ctNCB7XFxuICBib3gtc2hhZG93OiAwIDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCA4cHggMTBweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLyogMjRkcCBlbGV2YXRpb24gKi9cXG4uc2hhZG93LTUsIC5tb2RhbCB7XFxuICBib3gtc2hhZG93OiAwIDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxufVxcblxcbi8qIDI0ZHAgZWxldmF0aW9uICovXFxuLmludmVydC1zaGFkb3ctNSB7XFxuICBib3gtc2hhZG93OiAzOHB4IDAgMCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDQ2cHggMCAwIDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMTVweCAwIDAgMCByZ2JhKDAsIDAsIDAsIDAuMik7XFxufVxcblxcbi5ob3ZlcmFibGUge1xcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjI1cztcXG59XFxuLmhvdmVyYWJsZTpob3ZlciB7XFxuICBib3gtc2hhZG93OiAwIDhweCAxN3B4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDZweCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE5KTtcXG59XFxuXFxuLyohXFxuICogV2F2ZXMgdjAuNi4wXFxuICogaHR0cDovL2ZpYW4ubXkuaWQvV2F2ZXNcXG4gKlxcbiAqIENvcHlyaWdodCAyMDE0IEFsZmlhbmEgRS4gU2lidWVhIGFuZCBvdGhlciBjb250cmlidXRvcnNcXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmlhbnMvV2F2ZXMvYmxvYi9tYXN0ZXIvTElDRU5TRVxcbiAqL1xcbi53YXZlcy1lZmZlY3Qge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICB6LWluZGV4OiAxO1xcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLW91dDtcXG59XFxuLndhdmVzLWVmZmVjdCAud2F2ZXMtcmlwcGxlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgbWFyZ2luLXRvcDogLTEwcHg7XFxuICBtYXJnaW4tbGVmdDogLTEwcHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuN3MgZWFzZS1vdXQ7XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi53YXZlcy1lZmZlY3Qud2F2ZXMtbGlnaHQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDUpO1xcbn1cXG4ud2F2ZXMtZWZmZWN0LndhdmVzLXJlZCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQ0LCA2NywgNTQsIDAuNyk7XFxufVxcbi53YXZlcy1lZmZlY3Qud2F2ZXMteWVsbG93IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIzNSwgNTksIDAuNyk7XFxufVxcbi53YXZlcy1lZmZlY3Qud2F2ZXMtb3JhbmdlIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDE1MiwgMCwgMC43KTtcXG59XFxuLndhdmVzLWVmZmVjdC53YXZlcy1wdXJwbGUgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NiwgMzksIDE3NiwgMC43KTtcXG59XFxuLndhdmVzLWVmZmVjdC53YXZlcy1ncmVlbiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzYsIDE3NSwgODAsIDAuNyk7XFxufVxcbi53YXZlcy1lZmZlY3Qud2F2ZXMtdGVhbCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTUwLCAxMzYsIDAuNyk7XFxufVxcbi53YXZlcy1lZmZlY3QgaW5wdXRbdHlwZT1idXR0b25dLCAud2F2ZXMtZWZmZWN0IGlucHV0W3R5cGU9cmVzZXRdLCAud2F2ZXMtZWZmZWN0IGlucHV0W3R5cGU9c3VibWl0XSB7XFxuICBib3JkZXI6IDA7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXNpemU6IGluaGVyaXQ7XFxuICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxufVxcbi53YXZlcy1lZmZlY3QgaW1nIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IC0xO1xcbn1cXG5cXG4ud2F2ZXMtbm90cmFuc2l0aW9uIHtcXG4gIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLndhdmVzLWNpcmNsZSB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XFxuICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgd2hpdGUgMTAwJSwgYmxhY2sgMTAwJSk7XFxufVxcblxcbi53YXZlcy1pbnB1dC13cmFwcGVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMmVtO1xcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcXG59XFxuLndhdmVzLWlucHV0LXdyYXBwZXIgLndhdmVzLWJ1dHRvbi1pbnB1dCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTtcXG59XFxuXFxuLndhdmVzLWNpcmNsZSB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB3aWR0aDogMi41ZW07XFxuICBoZWlnaHQ6IDIuNWVtO1xcbiAgbGluZS1oZWlnaHQ6IDIuNWVtO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiBub25lO1xcbn1cXG5cXG4ud2F2ZXMtYmxvY2sge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbi8qIEZpcmVmb3ggQnVnOiBsaW5rIG5vdCB0cmlnZ2VyZWQgKi9cXG4ud2F2ZXMtZWZmZWN0IC53YXZlcy1yaXBwbGUge1xcbiAgei1pbmRleDogLTE7XFxufVxcblxcbi5tb2RhbCB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xcbiAgcGFkZGluZzogMDtcXG4gIG1heC1oZWlnaHQ6IDcwJTtcXG4gIHdpZHRoOiA1NSU7XFxuICBtYXJnaW46IGF1dG87XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgd2lsbC1jaGFuZ2U6IHRvcCwgb3BhY2l0eTtcXG59XFxuLm1vZGFsOmZvY3VzIHtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDk5MnB4KSB7XFxuICAubW9kYWwge1xcbiAgICB3aWR0aDogODAlO1xcbiAgfVxcbn1cXG4ubW9kYWwgaDEsIC5tb2RhbCBoMiwgLm1vZGFsIGgzLCAubW9kYWwgaDQge1xcbiAgbWFyZ2luLXRvcDogMDtcXG59XFxuLm1vZGFsIC5tb2RhbC1jb250ZW50IHtcXG4gIHBhZGRpbmc6IDI0cHg7XFxufVxcbi5tb2RhbCAubW9kYWwtY2xvc2Uge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4ubW9kYWwgLm1vZGFsLWZvb3RlciB7XFxuICBib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XFxuICBwYWRkaW5nOiA0cHggNnB4O1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG59XFxuLm1vZGFsIC5tb2RhbC1mb290ZXIgLmJ0biwgLm1vZGFsIC5tb2RhbC1mb290ZXIgLmJ0bi1zbWFsbCwgLm1vZGFsIC5tb2RhbC1mb290ZXIgLmJ0bi1sYXJnZSwgLm1vZGFsIC5tb2RhbC1mb290ZXIgLmJ0bi1mbGF0IHtcXG4gIG1hcmdpbjogNnB4IDA7XFxufVxcbi5tb2RhbCAubW9kYWwtaGVhZGVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDJweCAycHggMCAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcXG4gIHBhZGRpbmc6IDZweCA0cHg7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xcbn1cXG4ubW9kYWwgLm1vZGFsLWhlYWRlciAuYnRuLCAubW9kYWwgLm1vZGFsLWhlYWRlciAuYnRuLXNtYWxsLCAubW9kYWwgLm1vZGFsLWhlYWRlciAuYnRuLWxhcmdlLCAubW9kYWwgLm1vZGFsLWhlYWRlciAuYnRuLWZsYXQge1xcbiAgbWFyZ2luOiA2cHggMDtcXG59XFxuXFxuLm1vZGFsLW92ZXJsYXkge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgei1pbmRleDogOTk5O1xcbiAgdG9wOiAtMjUlO1xcbiAgbGVmdDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgaGVpZ2h0OiAxMjUlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiAjMDAwO1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIHdpbGwtY2hhbmdlOiBvcGFjaXR5O1xcbn1cXG5cXG4ubW9kYWwubW9kYWwtZml4ZWQtZm9vdGVyIHtcXG4gIHBhZGRpbmc6IDA7XFxuICBoZWlnaHQ6IDcwJTtcXG59XFxuLm1vZGFsLm1vZGFsLWZpeGVkLWZvb3RlciAubW9kYWwtY29udGVudCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDU2cHgpO1xcbiAgbWF4LWhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3ZlcmZsb3cteTogYXV0bztcXG59XFxuLm1vZGFsLm1vZGFsLWZpeGVkLWZvb3RlciAubW9kYWwtZm9vdGVyIHtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDA7XFxufVxcblxcbi5tb2RhbC5ib3R0b20tc2hlZXQge1xcbiAgdG9wOiBhdXRvO1xcbiAgYm90dG9tOiAtMTAwJTtcXG4gIG1hcmdpbjogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWF4LWhlaWdodDogNDUlO1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIHdpbGwtY2hhbmdlOiBib3R0b20sIG9wYWNpdHk7XFxufVxcblxcbmh0bWwsXFxuYm9keSxcXG4jcm9vdCB7XFxuICBtYXJnaW46IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcblxcbioge1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcblxcbi5ub3NlbGVjdCB7XFxuICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7IC8qIGlPUyBTYWZhcmkgKi9cXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IC8qIFNhZmFyaSAqL1xcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOyAvKiBLb25xdWVyb3IgSFRNTCAqL1xcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsgLyogT2xkIHZlcnNpb25zIG9mIEZpcmVmb3ggKi9cXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTsgLyogSW50ZXJuZXQgRXhwbG9yZXIvRWRnZSAqL1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAvKiBOb24tcHJlZml4ZWQgdmVyc2lvbiwgY3VycmVudGx5XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgYnkgQ2hyb21lLCBFZGdlLCBPcGVyYSBhbmQgRmlyZWZveCAqL1xcbn1cXG5cXG51bDpub3QoLmJyb3dzZXItZGVmYXVsdCkge1xcbiAgcGFkZGluZy1sZWZ0OiAwO1xcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xcbn1cXG51bDpub3QoLmJyb3dzZXItZGVmYXVsdCkgPiBsaSB7XFxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XFxufVxcblxcbmEge1xcbiAgY29sb3I6ICMwMzliZTU7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG5cXG4udy0xMDAge1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcblxcbi5yaWdodC1hbGlnbiB7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG59XFxuXFxuLmNlbnRlci1hbGlnbiB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcblxcbi52LWNlbnRlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuXFxuLm1iMSB7XFxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xcbn1cXG5cXG4uY29sbGVjdGlvbiB7XFxuICBtYXJnaW46IDAuMzMzMzMzMzMzM3JlbSAwIDAuNjY2NjY2NjY2N3JlbSAwO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxuICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxuICBtYXJnaW46IDA7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5ob3Zlcjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciB7XFxuICBtaW4taGVpZ2h0OiA4NHB4O1xcbiAgcGFkZGluZy1sZWZ0OiA3MnB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhcjpub3QoLmNpcmNsZS1jbGlwcGVyKSA+IC5jaXJjbGUsXFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogNDJweDtcXG4gIGhlaWdodDogNDJweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBsZWZ0OiAxNXB4O1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgaS5jaXJjbGUge1xcbiAgZm9udC1zaXplOiAxOHB4O1xcbiAgbGluZS1oZWlnaHQ6IDQycHg7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5OTk7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIC50aXRsZSB7XFxuICBmb250LXNpemU6IDE2cHg7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHAge1xcbiAgbWFyZ2luOiAwO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciAuc2Vjb25kYXJ5LWNvbnRlbnQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAxNnB4O1xcbiAgcmlnaHQ6IDE2cHg7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW06bGFzdC1jaGlsZCB7XFxuICBib3JkZXItYm90dG9tOiBub25lO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbiAgY29sb3I6ICNlYWZhZjk7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYWN0aXZlIC5zZWNvbmRhcnktY29udGVudCB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuLmNvbGxlY3Rpb24gYS5jb2xsZWN0aW9uLWl0ZW0ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB0cmFuc2l0aW9uOiAwLjI1cztcXG4gIGNvbG9yOiAjMjZhNjlhO1xcbn1cXG4uY29sbGVjdGlvbiBhLmNvbGxlY3Rpb24taXRlbTpub3QoLmFjdGl2ZSk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcXG59XFxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG59XFxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taXRlbSB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxufVxcbi5jb2xsZWN0aW9uLndpdGgtaGVhZGVyIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHtcXG4gIHBhZGRpbmctbGVmdDogNzJweDtcXG59XFxuXFxuLnNlY29uZGFyeS1jb250ZW50IHtcXG4gIGZsb2F0OiByaWdodDtcXG4gIGNvbG9yOiAjMjZhNjlhO1xcbn1cXG5cXG4uY29sbGFwc2libGUgLmNvbGxlY3Rpb24ge1xcbiAgbWFyZ2luOiAwO1xcbiAgYm9yZGVyOiBub25lO1xcbn1cXG5cXG4ubW9kYWwtb3ZlcmxheSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBoZWlnaHQ6IDEwMHZoO1xcbiAgd2lkdGg6IDEwMHZ3O1xcbiAgcGFkZGluZzogMjBweCAwIDIwcHggMDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcXG4gIHotaW5kZXg6IDk5OTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLm1vZGFsLW92ZXJsYXkgLmlubmVyZm9ybSB7XFxuICBtYXgtd2lkdGg6IDY1MHB4O1xcbn1cXG4ubW9kYWwtb3ZlcmxheSAuaW5uZXJmb3JtIGZvcm0ge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKlxcbiAgTWVkaWEgUXVlcnkgQ2xhc3Nlc1xcbioqKioqKioqKioqKioqKioqKioqKiovXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogNjAwcHgpIHtcXG4gIC5oaWRlLW9uLXNtYWxsLW9ubHksIC5oaWRlLW9uLXNtYWxsLWFuZC1kb3duIHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xcbiAgLmhpZGUtb24tbWVkLWFuZC1kb3duIHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xcbiAgLmhpZGUtb24tbWVkLWFuZC11cCB7XFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7XFxuICAuaGlkZS1vbi1tZWQtb25seSB7XFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcXG4gIC5oaWRlLW9uLWxhcmdlLW9ubHkge1xcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFxuICB9XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDEyMDFweCkge1xcbiAgLmhpZGUtb24tZXh0cmEtbGFyZ2Utb25seSB7XFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogMTIwMXB4KSB7XFxuICAuc2hvdy1vbi1leHRyYS1sYXJnZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxuICB9XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDk5M3B4KSB7XFxuICAuc2hvdy1vbi1sYXJnZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxuICB9XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA5OTJweCkge1xcbiAgLnNob3ctb24tbWVkaXVtIHtcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogNjAwcHgpIHtcXG4gIC5zaG93LW9uLXNtYWxsIHtcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogNjAxcHgpIHtcXG4gIC5zaG93LW9uLW1lZGl1bS1hbmQtdXAge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xcbiAgLnNob3ctb24tbWVkaXVtLWFuZC1kb3duIHtcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogNjAwcHgpIHtcXG4gIC5jZW50ZXItb24tc21hbGwtb25seSB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKipcXG4gIFV0aWxpdHkgQ2xhc3Nlc1xcbioqKioqKioqKioqKioqKioqKiovXFxuLmhpZGUge1xcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGVmdC1hbGlnbiB7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbn1cXG5cXG4ucmlnaHQtYWxpZ24ge1xcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxufVxcblxcbi5jZW50ZXIsIC5jZW50ZXItYWxpZ24ge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG4ubGVmdCB7XFxuICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmlnaHQge1xcbiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5uby1zZWxlY3Qge1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblxcbi5jaXJjbGUge1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG5cXG4uY2VudGVyLWJsb2NrIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxufVxcblxcbi50cnVuY2F0ZSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcblxcbi5uby1wYWRkaW5nIHtcXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuc3Bhbi5iYWRnZSB7XFxuICBtaW4td2lkdGg6IDNyZW07XFxuICBwYWRkaW5nOiAwIDZweDtcXG4gIG1hcmdpbi1sZWZ0OiAxNHB4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgbGluZS1oZWlnaHQ6IDIycHg7XFxuICBoZWlnaHQ6IDIycHg7XFxuICBjb2xvcjogIzc1NzU3NTtcXG4gIGZsb2F0OiByaWdodDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbnNwYW4uYmFkZ2UubmV3IHtcXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxuICBmb250LXNpemU6IDAuOHJlbTtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG59XFxuc3Bhbi5iYWRnZS5uZXc6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIiBuZXdcXFwiO1xcbn1cXG5zcGFuLmJhZGdlW2RhdGEtYmFkZ2UtY2FwdGlvbl06OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCIgXFxcIiBhdHRyKGRhdGEtYmFkZ2UtY2FwdGlvbik7XFxufVxcblxcbm5hdiB1bCBhIHNwYW4uYmFkZ2Uge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgZmxvYXQ6IG5vbmU7XFxuICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgbGluZS1oZWlnaHQ6IDIycHg7XFxuICBoZWlnaHQ6IDIycHg7XFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhdXRvO1xcbn1cXG5cXG4uY29sbGVjdGlvbi1pdGVtIHNwYW4uYmFkZ2Uge1xcbiAgbWFyZ2luLXRvcDogY2FsYygwLjc1cmVtIC0gMTFweCk7XFxufVxcblxcbi5jb2xsYXBzaWJsZSBzcGFuLmJhZGdlIHtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbn1cXG5cXG4uc2lkZW5hdiBzcGFuLmJhZGdlIHtcXG4gIG1hcmdpbi10b3A6IDExLjVweDtcXG59XFxuXFxudGFibGUgc3Bhbi5iYWRnZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmbG9hdDogbm9uZTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbn1cXG5cXG4uY2hpcCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBoZWlnaHQ6IDMycHg7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTtcXG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xcbiAgcGFkZGluZzogMCAxMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNGU0ZTQ7XFxuICBtYXJnaW4tYm90dG9tOiA1cHg7XFxuICBtYXJnaW4tcmlnaHQ6IDVweDtcXG59XFxuLmNoaXA6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuLmNoaXAgPiBpbWcge1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBtYXJnaW46IDAgOHB4IDAgLTEycHg7XFxuICBoZWlnaHQ6IDMycHg7XFxuICB3aWR0aDogMzJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG59XFxuLmNoaXAgLmNsb3NlIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGZsb2F0OiByaWdodDtcXG4gIGZvbnQtc2l6ZTogMTZweDtcXG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XFxufVxcblxcbi5jaGlwcyB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzllOWU5ZTtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBtYXJnaW46IDAgMCA4cHggMDtcXG4gIG1pbi1oZWlnaHQ6IDQ1cHg7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XFxufVxcbi5jaGlwcy5mb2N1cyB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzI2YTY5YTtcXG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgMCAjMjZhNjlhO1xcbn1cXG4uY2hpcHM6aG92ZXIge1xcbiAgY3Vyc29yOiB0ZXh0O1xcbn1cXG4uY2hpcHMgLmlucHV0IHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICBib3JkZXI6IDA7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgZm9udC1zaXplOiAxNnB4O1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgbGluZS1oZWlnaHQ6IDMycHg7XFxuICBvdXRsaW5lOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgd2lkdGg6IDEyMHB4ICFpbXBvcnRhbnQ7XFxufVxcbi5jaGlwcyAuaW5wdXQ6Zm9jdXMge1xcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XFxuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XFxufVxcbi5jaGlwcyAuYXV0b2NvbXBsZXRlLWNvbnRlbnQge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxufVxcblxcbi5wcmVmaXggfiAuY2hpcHMge1xcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XFxuICB3aWR0aDogOTIlO1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xcbn1cXG5cXG4uY2hpcHM6ZW1wdHkgfiBsYWJlbCB7XFxuICBmb250LXNpemU6IDAuOHJlbTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQwJSk7XFxufVxcblxcbi5jb2xsYXBzaWJsZSB7XFxuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcXG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7XFxuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7XFxuICBtYXJnaW46IDAuMzMzMzMzMzMzM3JlbSAwIDAuNjY2NjY2NjY2N3JlbSAwO1xcbn1cXG5cXG4uY29sbGFwc2libGUtaGVhZGVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XFxufVxcbi5jb2xsYXBzaWJsZS1oZWFkZXI6Zm9jdXMge1xcbiAgb3V0bGluZTogMDtcXG59XFxuLmNvbGxhcHNpYmxlLWhlYWRlciBpIHtcXG4gIHdpZHRoOiAycmVtO1xcbiAgZm9udC1zaXplOiAxLjZyZW07XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBtYXJnaW4tcmlnaHQ6IDFyZW07XFxufVxcblxcbi5rZXlib2FyZC1mb2N1c2VkIC5jb2xsYXBzaWJsZS1oZWFkZXI6Zm9jdXMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcXG59XFxuXFxuLmNvbGxhcHNpYmxlLWJvZHkge1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBhZGRpbmc6IDJyZW07XFxufVxcblxcbi5zaWRlbmF2IC5jb2xsYXBzaWJsZSxcXG4uc2lkZW5hdi5maXhlZCAuY29sbGFwc2libGUge1xcbiAgYm9yZGVyOiBub25lO1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlIGxpLFxcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZSBsaSB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG4uc2lkZW5hdiAuY29sbGFwc2libGUtaGVhZGVyLFxcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZS1oZWFkZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IG5vbmU7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIGhlaWdodDogaW5oZXJpdDtcXG4gIHBhZGRpbmc6IDAgMTVweDtcXG59XFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWhlYWRlcjpob3ZlcixcXG4uc2lkZW5hdi5maXhlZCAuY29sbGFwc2libGUtaGVhZGVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxufVxcbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1oZWFkZXIgaSxcXG4uc2lkZW5hdi5maXhlZCAuY29sbGFwc2libGUtaGVhZGVyIGkge1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxufVxcbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1ib2R5LFxcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZS1ib2R5IHtcXG4gIGJvcmRlcjogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxufVxcbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1ib2R5IGxpIGEsXFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlLWJvZHkgbGkgYSB7XFxuICBwYWRkaW5nOiAwIDIyLjVweCAwIDMwcHg7XFxufVxcblxcbi5jb2xsYXBzaWJsZS5wb3BvdXQge1xcbiAgYm9yZGVyOiBub25lO1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuLmNvbGxhcHNpYmxlLnBvcG91dCA+IGxpIHtcXG4gIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNiksIDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgbWFyZ2luOiAwIDI0cHg7XFxuICB0cmFuc2l0aW9uOiBtYXJnaW4gMC4zNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xcbn1cXG4uY29sbGFwc2libGUucG9wb3V0ID4gbGkuYWN0aXZlIHtcXG4gIGJveC1zaGFkb3c6IDAgNXB4IDExcHggMCByZ2JhKDAsIDAsIDAsIDAuMTgpLCAwIDRweCAxNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTtcXG4gIG1hcmdpbjogMTZweCAwO1xcbn1cXG5cXG4uY29sbGVjdGlvbiB7XFxuICBtYXJnaW46IDAuMzMzMzMzMzMzM3JlbSAwIDAuNjY2NjY2NjY2N3JlbSAwO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxuICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxuICBtYXJnaW46IDA7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIge1xcbiAgbWluLWhlaWdodDogODRweDtcXG4gIHBhZGRpbmctbGVmdDogNzJweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXI6bm90KC5jaXJjbGUtY2xpcHBlcikgPiAuY2lyY2xlLFxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIDpub3QoLmNpcmNsZS1jbGlwcGVyKSA+IC5jaXJjbGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDQycHg7XFxuICBoZWlnaHQ6IDQycHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgbGVmdDogMTVweDtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIGkuY2lyY2xlIHtcXG4gIGZvbnQtc2l6ZTogMThweDtcXG4gIGxpbmUtaGVpZ2h0OiA0MnB4O1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciAudGl0bGUge1xcbiAgZm9udC1zaXplOiAxNnB4O1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciBwIHtcXG4gIG1hcmdpbjogMDtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgLnNlY29uZGFyeS1jb250ZW50IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTZweDtcXG4gIHJpZ2h0OiAxNnB4O1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIGNvbG9yOiAjZWFmYWY5O1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmFjdGl2ZSAuc2Vjb25kYXJ5LWNvbnRlbnQge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcbi5jb2xsZWN0aW9uIGEuY29sbGVjdGlvbi1pdGVtIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgdHJhbnNpdGlvbjogMC4yNXM7XFxuICBjb2xvcjogIzI2YTY5YTtcXG59XFxuLmNvbGxlY3Rpb24gYS5jb2xsZWN0aW9uLWl0ZW06bm90KC5hY3RpdmUpOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XFxufVxcbi5jb2xsZWN0aW9uLndpdGgtaGVhZGVyIC5jb2xsZWN0aW9uLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7XFxuICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxufVxcbi5jb2xsZWN0aW9uLndpdGgtaGVhZGVyIC5jb2xsZWN0aW9uLWl0ZW0ge1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcbn1cXG4uY29sbGVjdGlvbi53aXRoLWhlYWRlciAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciB7XFxuICBwYWRkaW5nLWxlZnQ6IDcycHg7XFxufVxcbi5jb2xsZWN0aW9uIC5zZWNvbmRhcnktY29udGVudCB7XFxuICBmbG9hdDogcmlnaHQ7XFxuICBjb2xvcjogIzI2YTY5YTtcXG59XFxuXFxuc2VsZWN0OmZvY3VzIHtcXG4gIG91dGxpbmU6IDFweCBzb2xpZCAjYzlmM2VmO1xcbn1cXG5cXG5idXR0b246Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyYWI3YTk7XFxufVxcblxcbmxhYmVsIHtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgY29sb3I6ICM5ZTllOWU7XFxufVxcblxcbi8qIFRleHQgSW5wdXRzICsgVGV4dGFyZWFcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcbi8qIFN0eWxlIFBsYWNlaG9sZGVycyAqL1xcbjo6cGxhY2Vob2xkZXIge1xcbiAgY29sb3I6ICNkMWQxZDE7XFxufVxcblxcbi8qIFRleHQgaW5wdXRzICovXFxuaW5wdXQ6bm90KFt0eXBlXSksXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxudGV4dGFyZWEudGV4dGFyZWEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzllOWU5ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmb250LXNpemU6IDE2cHg7XFxuICBtYXJnaW46IDAgMCA4cHggMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuM3MsIGJvcmRlciAwLjNzO1xcbn1cXG5pbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCwgaW5wdXQ6bm90KFt0eXBlXSlbcmVhZG9ubHk9cmVhZG9ubHldLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXFxudGV4dGFyZWEudGV4dGFyZWE6ZGlzYWJsZWQsXFxudGV4dGFyZWEudGV4dGFyZWFbcmVhZG9ubHk9cmVhZG9ubHldIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbn1cXG5pbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCArIGxhYmVsLCBpbnB1dDpub3QoW3R5cGVdKVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXFxudGV4dGFyZWEudGV4dGFyZWE6ZGlzYWJsZWQgKyBsYWJlbCxcXG50ZXh0YXJlYS50ZXh0YXJlYVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCB7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG59XFxuaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXM6bm90KFtyZWFkb25seV0pIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMjZhNjlhO1xcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwICMyNmE2OWE7XFxufVxcbmlucHV0Om5vdChbdHlwZV0pOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsIHtcXG4gIGNvbG9yOiAjMjZhNjlhO1xcbn1cXG5pbnB1dDpub3QoW3R5cGVdKTpmb2N1cy52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy52YWxpZCB+IGxhYmVsIHtcXG4gIGNvbG9yOiAjNGNhZjUwO1xcbn1cXG5pbnB1dDpub3QoW3R5cGVdKTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwge1xcbiAgY29sb3I6ICNmNDQzMzY7XFxufVxcbmlucHV0Om5vdChbdHlwZV0pLnZhbGlkYXRlICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbnRleHRhcmVhLnRleHRhcmVhLnZhbGlkYXRlICsgbGFiZWwge1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcbi8qIFZhbGlkYXRpb24gU2FzcyBQbGFjZWhvbGRlcnMgKi9cXG4uc2VsZWN0LXdyYXBwZXIudmFsaWQgPiBpbnB1dC5zZWxlY3QtZHJvcGRvd24sIGlucHV0Om5vdChbdHlwZV0pLnZhbGlkLCBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cy52YWxpZCxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcXG50ZXh0YXJlYS50ZXh0YXJlYS52YWxpZCxcXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy52YWxpZCB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzRjYWY1MDtcXG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgMCAjNGNhZjUwO1xcbn1cXG5cXG4uc2VsZWN0LXdyYXBwZXIuaW52YWxpZCA+IGlucHV0LnNlbGVjdC1kcm9wZG93biwgLnNlbGVjdC13cmFwcGVyLmludmFsaWQgPiBpbnB1dC5zZWxlY3QtZHJvcGRvd246Zm9jdXMsIGlucHV0Om5vdChbdHlwZV0pLmludmFsaWQsIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLmludmFsaWQsXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcXG50ZXh0YXJlYS50ZXh0YXJlYS5pbnZhbGlkLFxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLmludmFsaWQge1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmNDQzMzY7XFxuICBib3gtc2hhZG93OiAwIDFweCAwIDAgI2Y0NDMzNjtcXG59XFxuXFxuLnNlbGVjdC13cmFwcGVyLnZhbGlkIC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLCAuc2VsZWN0LXdyYXBwZXIuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSwgaW5wdXQ6bm90KFt0eXBlXSkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSwgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSwgaW5wdXQ6bm90KFt0eXBlXSkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSwgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxudGV4dGFyZWEudGV4dGFyZWEudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbnRleHRhcmVhLnRleHRhcmVhLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSB7XFxuICBjb2xvcjogdHJhbnNwYXJlbnQ7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG5cXG4uc2VsZWN0LXdyYXBwZXIudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsIGlucHV0Om5vdChbdHlwZV0pLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLCBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG50ZXh0YXJlYS50ZXh0YXJlYS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciB7XFxuICBjb250ZW50OiBhdHRyKGRhdGEtc3VjY2Vzcyk7XFxuICBjb2xvcjogIzRjYWY1MDtcXG59XFxuXFxuLnNlbGVjdC13cmFwcGVyLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsIGlucHV0Om5vdChbdHlwZV0pLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG50ZXh0YXJlYS50ZXh0YXJlYS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIge1xcbiAgY29udGVudDogYXR0cihkYXRhLWVycm9yKTtcXG4gIGNvbG9yOiAjZjQ0MzM2O1xcbn1cXG5cXG4uc2VsZWN0LXdyYXBwZXIgKyBsYWJlbDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSkgKyBsYWJlbDphZnRlcixcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxudGV4dGFyZWEudGV4dGFyZWEgKyBsYWJlbDphZnRlciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAxMDAlO1xcbiAgbGVmdDogMDtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uOiAwLjJzIG9wYWNpdHkgZWFzZS1vdXQsIDAuMnMgY29sb3IgZWFzZS1vdXQ7XFxufVxcblxcbi5pbnB1dC1maWVsZCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG59XFxuLmlucHV0LWZpZWxkLmlubGluZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgbWFyZ2luLWxlZnQ6IDVweDtcXG59XFxuLmlucHV0LWZpZWxkLmlubGluZSBpbnB1dCxcXG4uaW5wdXQtZmllbGQuaW5saW5lIC5zZWxlY3QtZHJvcGRvd24ge1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG59XFxuLmlucHV0LWZpZWxkLmNvbCBsYWJlbCB7XFxuICBsZWZ0OiAwLjVyZW07XFxufVxcbi5pbnB1dC1maWVsZC5jb2wgLnByZWZpeCB+IGxhYmVsLFxcbi5pbnB1dC1maWVsZC5jb2wgLnByZWZpeCB+IC52YWxpZGF0ZSB+IGxhYmVsIHtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtIC0gMXJlbSk7XFxufVxcbi5pbnB1dC1maWVsZCA+IGxhYmVsIHtcXG4gIGNvbG9yOiAjOWU5ZTllO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIGN1cnNvcjogdGV4dDtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2Utb3V0LCBjb2xvciAwLjJzIGVhc2Utb3V0O1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCUgMTAwJTtcXG4gIHRleHQtYWxpZ246IGluaXRpYWw7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTJweCk7XFxufVxcbi5pbnB1dC1maWVsZCA+IGxhYmVsOm5vdCgubGFiZWwtaWNvbikuYWN0aXZlIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTRweCkgc2NhbGUoMC44KTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXG59XFxuLmlucHV0LWZpZWxkID4gaW5wdXRbdHlwZV06LXdlYmtpdC1hdXRvZmlsbDpub3QoLmJyb3dzZXItZGVmYXVsdCk6bm90KFt0eXBlPXNlYXJjaF0pICsgbGFiZWwsIC5pbnB1dC1maWVsZCA+IGlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWwsIC5pbnB1dC1maWVsZCA+IGlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWwge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNHB4KSBzY2FsZSgwLjgpO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xcbn1cXG4uaW5wdXQtZmllbGQgLmhlbHBlci10ZXh0IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1pbi1oZWlnaHQ6IDE4cHg7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xcbn1cXG4uaW5wdXQtZmllbGQgLmhlbHBlci10ZXh0OjphZnRlciB7XFxuICBvcGFjaXR5OiAxO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG59XFxuLmlucHV0LWZpZWxkIC5wcmVmaXgge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDU2cHg7XFxuICBmb250LXNpemU6IDJyZW07XFxuICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xcbn1cXG4uaW5wdXQtZmllbGQgLnByZWZpeC5hY3RpdmUge1xcbiAgY29sb3I6ICMyNmE2OWE7XFxufVxcbi5pbnB1dC1maWVsZCAucHJlZml4IH4gaW5wdXQsXFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiB0ZXh0YXJlYSxcXG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IGxhYmVsLFxcbi5pbnB1dC1maWVsZCAucHJlZml4IH4gLnZhbGlkYXRlIH4gbGFiZWwsXFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiAuaGVscGVyLXRleHQsXFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiAuYXV0b2NvbXBsZXRlLWNvbnRlbnQge1xcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XFxuICB3aWR0aDogOTIlO1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xcbn1cXG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IGxhYmVsIHtcXG4gIG1hcmdpbi1sZWZ0OiAzcmVtO1xcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xcbiAgLmlucHV0LWZpZWxkIC5wcmVmaXggfiBpbnB1dCB7XFxuICAgIHdpZHRoOiA4NiU7XFxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtKTtcXG4gIH1cXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogNjAwcHgpIHtcXG4gIC5pbnB1dC1maWVsZCAucHJlZml4IH4gaW5wdXQge1xcbiAgICB3aWR0aDogODAlO1xcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XFxuICB9XFxufVxcblxcbi8qIFNlYXJjaCBGaWVsZCAqL1xcbi5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF0ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIHRyYW5zaXRpb246IDAuM3MgYmFja2dyb3VuZC1jb2xvcjtcXG59XFxuLm5hdi13cmFwcGVyIC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF0ge1xcbiAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgcGFkZGluZy1sZWZ0OiA0cmVtO1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDRyZW0pO1xcbiAgYm9yZGVyOiAwO1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXTpmb2N1czpub3QoLmJyb3dzZXItZGVmYXVsdCkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGJvcmRlcjogMDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBjb2xvcjogIzQ0NDtcXG59XFxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXTpmb2N1czpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbCBpLCAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB+IC5tZGktbmF2aWdhdGlvbi1jbG9zZSwgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXTpmb2N1czpub3QoLmJyb3dzZXItZGVmYXVsdCkgfiAubWF0ZXJpYWwtaWNvbnMge1xcbiAgY29sb3I6ICM0NDQ7XFxufVxcbi5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF0gKyAubGFiZWwtaWNvbiB7XFxuICB0cmFuc2Zvcm06IG5vbmU7XFxuICBsZWZ0OiAxcmVtO1xcbn1cXG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdIH4gLm1kaS1uYXZpZ2F0aW9uLWNsb3NlLCAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdIH4gLm1hdGVyaWFsLWljb25zIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAxcmVtO1xcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZm9udC1zaXplOiAycmVtO1xcbiAgdHJhbnNpdGlvbjogMC4zcyBjb2xvcjtcXG59XFxuXFxuLyogVGV4dGFyZWEgKi9cXG50ZXh0YXJlYSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogNTZweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG50ZXh0YXJlYS50ZXh0YXJlYSB7XFxuICBsaW5lLWhlaWdodDogbm9ybWFsO1xcbiAgb3ZlcmZsb3cteTogaGlkZGVuOyAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsYXNoICovXFxuICBwYWRkaW5nOiAwLjhyZW0gMCAwLjhyZW0gMDsgLyogcHJldmVudHMgdGV4dCBqdW1wIG9uIEVudGVyIGtleXByZXNzICovXFxuICByZXNpemU6IG5vbmU7XFxuICBtaW4taGVpZ2h0OiA1NnB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuXFxuLmhpZGRlbmRpdiB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XFxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XFxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyAvKiBmdXR1cmUgdmVyc2lvbiBvZiBkZXByZWNhdGVkICd3b3JkLXdyYXAnICovXFxuICBwYWRkaW5nLXRvcDogMS4ycmVtOyAvKiBwcmV2ZW50cyB0ZXh0IGp1bXAgb24gRW50ZXIga2V5cHJlc3MgKi9cXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHotaW5kZXg6IC0xO1xcbn1cXG5cXG4vKiBBdXRvY29tcGxldGUgKi9cXG4uYXV0b2NvbXBsZXRlLWNvbnRlbnQgbGkgLmhpZ2hsaWdodCB7XFxuICBjb2xvcjogIzQ0NDtcXG59XFxuLmF1dG9jb21wbGV0ZS1jb250ZW50IGxpIGltZyB7XFxuICBtYXJnaW46IDVweCAxNXB4O1xcbn1cXG5cXG4vKiBDaGFyYWN0ZXIgQ291bnRlciAqL1xcbi5jaGFyYWN0ZXItY291bnRlciB7XFxuICBtaW4taGVpZ2h0OiAxOHB4O1xcbn1cXG5cXG4vKiBSYWRpbyBCdXR0b25zXFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSxcXG5bdHlwZT1yYWRpb106Y2hlY2tlZCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBvcGFjaXR5OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcblxcblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbixcXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW4ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAzNXB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgaGVpZ2h0OiAyNXB4O1xcbiAgbGluZS1oZWlnaHQ6IDI1cHg7XFxuICBmb250LXNpemU6IDFyZW07XFxuICB0cmFuc2l0aW9uOiAwLjI4cyBlYXNlO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblxcblt0eXBlPXJhZGlvXSArIHNwYW46YmVmb3JlLFxcblt0eXBlPXJhZGlvXSArIHNwYW46YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luOiA0cHg7XFxuICB3aWR0aDogMTZweDtcXG4gIGhlaWdodDogMTZweDtcXG4gIHotaW5kZXg6IDA7XFxuICB0cmFuc2l0aW9uOiAwLjI4cyBlYXNlO1xcbn1cXG5cXG4vKiBVbmNoZWNrZWQgc3R5bGVzICovXFxuW3R5cGU9cmFkaW9dOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSxcXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSArIHNwYW46YWZ0ZXIsXFxuW3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSxcXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YWZ0ZXIsXFxuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSxcXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG5cXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSArIHNwYW46YmVmb3JlLFxcblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbjphZnRlciB7XFxuICBib3JkZXI6IDJweCBzb2xpZCAjNWE1YTVhO1xcbn1cXG5cXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSArIHNwYW46YWZ0ZXIge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXG59XFxuXFxuLyogQ2hlY2tlZCBzdHlsZXMgKi9cXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcXG4gIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbn1cXG5cXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YWZ0ZXIsXFxuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSxcXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xcbiAgYm9yZGVyOiAycHggc29saWQgIzI2YTY5YTtcXG59XFxuXFxuW3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBzcGFuOmFmdGVyLFxcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbn1cXG5cXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcXG59XFxuXFxuLyogUmFkaW8gV2l0aCBnYXAgKi9cXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xcbn1cXG5cXG4vKiBGb2N1c2VkIHN0eWxlcyAqL1xcblt0eXBlPXJhZGlvXS50YWJiZWQ6Zm9jdXMgKyBzcGFuOmJlZm9yZSB7XFxuICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuXFxuLyogRGlzYWJsZWQgUmFkaW8gV2l0aCBnYXAgKi9cXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcXG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcblxcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpkaXNhYmxlZDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbn1cXG5cXG4vKiBEaXNhYmxlZCBzdHlsZSAqL1xcblt0eXBlPXJhZGlvXTpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUsXFxuW3R5cGU9cmFkaW9dOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG59XFxuXFxuW3R5cGU9cmFkaW9dOmRpc2FibGVkICsgc3BhbiB7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG59XFxuXFxuW3R5cGU9cmFkaW9dOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSB7XFxuICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcblxcblt0eXBlPXJhZGlvXTpkaXNhYmxlZDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbiAgYm9yZGVyLWNvbG9yOiAjOTQ5NDk0O1xcbn1cXG5cXG4vKiBDaGVja2JveGVzXFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXG4vKiBSZW1vdmUgZGVmYXVsdCBjaGVja2JveCAqL1xcblt0eXBlPWNoZWNrYm94XTpub3QoOmNoZWNrZWQpLFxcblt0eXBlPWNoZWNrYm94XTpjaGVja2VkIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuXFxuW3R5cGU9Y2hlY2tib3hdIHtcXG4gIC8qIGNoZWNrYm94IGFzcGVjdCAqL1xcbn1cXG5bdHlwZT1jaGVja2JveF0gKyBzcGFuOm5vdCgubGV2ZXIpIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHBhZGRpbmctbGVmdDogMzVweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGhlaWdodDogMjVweDtcXG4gIGxpbmUtaGVpZ2h0OiAyNXB4O1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblt0eXBlPWNoZWNrYm94XSArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlLCBbdHlwZT1jaGVja2JveF06bm90KC5maWxsZWQtaW4pICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB3aWR0aDogMThweDtcXG4gIGhlaWdodDogMThweDtcXG4gIHotaW5kZXg6IDA7XFxuICBib3JkZXI6IDJweCBzb2xpZCAjNWE1YTVhO1xcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xcbiAgbWFyZ2luLXRvcDogM3B4O1xcbiAgdHJhbnNpdGlvbjogMC4ycztcXG59XFxuW3R5cGU9Y2hlY2tib3hdOm5vdCguZmlsbGVkLWluKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcbiAgYm9yZGVyOiAwO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdOm5vdCg6Y2hlY2tlZCk6ZGlzYWJsZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbn1cXG5bdHlwZT1jaGVja2JveF0udGFiYmVkOmZvY3VzICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xcbiAgYm9yZGVyOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XFxufVxcblxcblt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcbiAgdG9wOiAtNHB4O1xcbiAgbGVmdDogLTVweDtcXG4gIHdpZHRoOiAxMnB4O1xcbiAgaGVpZ2h0OiAyMnB4O1xcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICMyNmE2OWE7XFxuICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzI2YTY5YTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDQwZGVnKTtcXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6ZGlzYWJsZWQgKyBzcGFuOmJlZm9yZSB7XFxuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcblxcbi8qIEluZGV0ZXJtaW5hdGUgY2hlY2tib3ggKi9cXG5bdHlwZT1jaGVja2JveF06aW5kZXRlcm1pbmF0ZSArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXG4gIHRvcDogLTExcHg7XFxuICBsZWZ0OiAtMTJweDtcXG4gIHdpZHRoOiAxMHB4O1xcbiAgaGVpZ2h0OiAyMnB4O1xcbiAgYm9yZGVyLXRvcDogbm9uZTtcXG4gIGJvcmRlci1sZWZ0OiBub25lO1xcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzI2YTY5YTtcXG4gIGJvcmRlci1ib3R0b206IG5vbmU7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XFxufVxcblt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlOmRpc2FibGVkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG5cXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxufVxcblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW4gKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSxcXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGxlZnQ6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAvKiAuMXMgZGVsYXkgaXMgZm9yIGNoZWNrIGFuaW1hdGlvbiAqL1xcbiAgdHJhbnNpdGlvbjogYm9yZGVyIDAuMjVzLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzLCB3aWR0aCAwLjJzIDAuMXMsIGhlaWdodCAwLjJzIDAuMXMsIHRvcCAwLjJzIDAuMXMsIGxlZnQgMC4ycyAwLjFzO1xcbiAgei1pbmRleDogMTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpub3QoOmNoZWNrZWQpICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcbiAgd2lkdGg6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGxlZnQ6IDZweDtcXG4gIHRvcDogMTBweDtcXG4gIHRyYW5zZm9ybTogcm90YXRlWigzN2RlZyk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XFxufVxcblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46bm90KDpjaGVja2VkKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgd2lkdGg6IDIwcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogMnB4IHNvbGlkICM1YTVhNWE7XFxuICB0b3A6IDBweDtcXG4gIHotaW5kZXg6IDA7XFxufVxcblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46Y2hlY2tlZCArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDFweDtcXG4gIHdpZHRoOiA4cHg7XFxuICBoZWlnaHQ6IDEzcHg7XFxuICBib3JkZXItdG9wOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2ZmZjtcXG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZmZmO1xcbiAgdHJhbnNmb3JtOiByb3RhdGVaKDM3ZGVnKTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICB0b3A6IDA7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlcjogMnB4IHNvbGlkICMyNmE2OWE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbiAgei1pbmRleDogMDtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbi50YWJiZWQ6Zm9jdXMgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIGJvcmRlci1jb2xvcjogIzVhNWE1YTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbi50YWJiZWQ6Y2hlY2tlZDpmb2N1cyArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIGJvcmRlci1jb2xvcjogIzI2YTY5YTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk0OTQ5NDtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpkaXNhYmxlZDpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk0OTQ5NDtcXG4gIGJvcmRlci1jb2xvcjogIzk0OTQ5NDtcXG59XFxuXFxuLyogU3dpdGNoXFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXG4uc3dpdGNoLFxcbi5zd2l0Y2ggKiB7XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblxcbi5zd2l0Y2ggbGFiZWwge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB3aWR0aDogMDtcXG4gIGhlaWdodDogMDtcXG59XFxuLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmxldmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4NGM3YzE7XFxufVxcbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5sZXZlcjpiZWZvcmUsIC5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5sZXZlcjphZnRlciB7XFxuICBsZWZ0OiAxOHB4O1xcbn1cXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAubGV2ZXI6YWZ0ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG59XFxuXFxuLnN3aXRjaCBsYWJlbCAubGV2ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMzZweDtcXG4gIGhlaWdodDogMTRweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XFxuICBib3JkZXItcmFkaXVzOiAxNXB4O1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2U7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgbWFyZ2luOiAwIDE2cHg7XFxufVxcbi5zd2l0Y2ggbGFiZWwgLmxldmVyOmJlZm9yZSwgLnN3aXRjaCBsYWJlbCAubGV2ZXI6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IC0zcHg7XFxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuM3MgZWFzZSwgYmFja2dyb3VuZCAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4xcyBlYXNlLCB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xcbn1cXG4uc3dpdGNoIGxhYmVsIC5sZXZlcjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMTY2LCAxNTQsIDAuMTUpO1xcbn1cXG4uc3dpdGNoIGxhYmVsIC5sZXZlcjphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYxO1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuXFxuaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpub3QoOmRpc2FibGVkKSB+IC5sZXZlcjphY3RpdmU6OmJlZm9yZSxcXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOm5vdCg6ZGlzYWJsZWQpLnRhYmJlZDpmb2N1cyB+IC5sZXZlcjo6YmVmb3JlIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMi40KTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDE2NiwgMTU0LCAwLjE1KTtcXG59XFxuXFxuaW5wdXRbdHlwZT1jaGVja2JveF06bm90KDpkaXNhYmxlZCkgfiAubGV2ZXI6YWN0aXZlOmJlZm9yZSxcXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpub3QoOmRpc2FibGVkKS50YWJiZWQ6Zm9jdXMgfiAubGV2ZXI6OmJlZm9yZSB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDIuNCk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDgpO1xcbn1cXG5cXG4uc3dpdGNoIGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXSArIC5sZXZlciB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG5cXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXSArIC5sZXZlcjphZnRlcixcXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXTpjaGVja2VkICsgLmxldmVyOmFmdGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5NDk0OTQ7XFxufVxcblxcbi8qIFNlbGVjdCBGaWVsZFxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXFxuc2VsZWN0IHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbnNlbGVjdC5icm93c2VyLWRlZmF1bHQge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbnNlbGVjdCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XFxuICB3aWR0aDogMTAwJTtcXG4gIHBhZGRpbmc6IDVweDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNmMmYyZjI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBoZWlnaHQ6IDU2cHg7XFxufVxcblxcbi5zZWxlY3QtbGFiZWwge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbn1cXG5cXG4uc2VsZWN0LXdyYXBwZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uc2VsZWN0LXdyYXBwZXIudmFsaWQgKyBsYWJlbCwgLnNlbGVjdC13cmFwcGVyLmludmFsaWQgKyBsYWJlbCB7XFxuICB3aWR0aDogMTAwJTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4uc2VsZWN0LXdyYXBwZXIgaW5wdXQuc2VsZWN0LWRyb3Bkb3duIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyOiBub25lO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM5ZTllOWU7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGZvbnQtc2l6ZTogMTZweDtcXG4gIG1hcmdpbjogMCAwIDhweCAwO1xcbiAgcGFkZGluZzogMDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4uc2VsZWN0LXdyYXBwZXIgaW5wdXQuc2VsZWN0LWRyb3Bkb3duOmZvY3VzIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMjZhNjlhO1xcbn1cXG4uc2VsZWN0LXdyYXBwZXIgLmNhcmV0IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAwO1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbWFyZ2luOiBhdXRvIDA7XFxuICB6LWluZGV4OiAwO1xcbiAgZmlsbDogcmdiYSgwLCAwLCAwLCAwLjg3KTtcXG59XFxuLnNlbGVjdC13cmFwcGVyICsgbGFiZWwge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAtMjZweDtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbn1cXG5cXG5zZWxlY3Q6ZGlzYWJsZWQge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcblxcbi5zZWxlY3Qtd3JhcHBlci5kaXNhYmxlZCArIGxhYmVsIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbn1cXG4uc2VsZWN0LXdyYXBwZXIuZGlzYWJsZWQgLmNhcmV0IHtcXG4gIGZpbGw6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcblxcbi5zZWxlY3Qtd3JhcHBlciBpbnB1dC5zZWxlY3QtZHJvcGRvd246ZGlzYWJsZWQge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLnNlbGVjdC13cmFwcGVyIGkge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG59XFxuXFxuLnNlbGVjdC1kcm9wZG93biBsaS5kaXNhYmxlZCxcXG4uc2VsZWN0LWRyb3Bkb3duIGxpLmRpc2FibGVkID4gc3BhbixcXG4uc2VsZWN0LWRyb3Bkb3duIGxpLm9wdGdyb3VwIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuYm9keS5rZXlib2FyZC1mb2N1c2VkIC5zZWxlY3QtZHJvcGRvd24uZHJvcGRvd24tY29udGVudCBsaTpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDgpO1xcbn1cXG5cXG4uc2VsZWN0LWRyb3Bkb3duLmRyb3Bkb3duLWNvbnRlbnQgbGk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA4KTtcXG59XFxuLnNlbGVjdC1kcm9wZG93bi5kcm9wZG93bi1jb250ZW50IGxpLnNlbGVjdGVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7XFxufVxcblxcbi5wcmVmaXggfiAuc2VsZWN0LXdyYXBwZXIge1xcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XFxuICB3aWR0aDogOTIlO1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xcbn1cXG5cXG4ucHJlZml4IH4gbGFiZWwge1xcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XFxufVxcblxcbi5zZWxlY3QtZHJvcGRvd24gbGkgaW1nIHtcXG4gIG1hcmdpbjogNXB4IDE1cHg7XFxuICBmbG9hdDogcmlnaHQ7XFxufVxcblxcbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAuc2VsZWN0ZWQgPiBzcGFuIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7XFxufVxcbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAgPiBzcGFuIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNCk7XFxufVxcbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAgfiBsaS5vcHRncm91cC1vcHRpb24ge1xcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbn1cXG5cXG4vKiBGaWxlIElucHV0XFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXG4uZmlsZS1maWVsZCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5maWxlLWZpZWxkIC5maWxlLXBhdGgtd3JhcHBlciB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xcbn1cXG4uZmlsZS1maWVsZCBpbnB1dC5maWxlLXBhdGgge1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcbi5maWxlLWZpZWxkIC5idG4sIC5maWxlLWZpZWxkIC5idG4tc21hbGwsIC5maWxlLWZpZWxkIC5idG4tbGFyZ2Uge1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICBsaW5lLWhlaWdodDogNTZweDtcXG59XFxuLmZpbGUtZmllbGQgc3BhbiB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5maWxlLWZpZWxkIGlucHV0W3R5cGU9ZmlsZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgZm9udC1zaXplOiAyMHB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgb3BhY2l0eTogMDtcXG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcXG59XFxuLmZpbGUtZmllbGQgaW5wdXRbdHlwZT1maWxlXTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLyogUmFuZ2VcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcbi5yYW5nZS1maWVsZCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdLFxcbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IG5vbmU7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDE1cHggMDtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbmlucHV0W3R5cGU9cmFuZ2VdOmZvY3VzIHtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTBweDtcXG4gIGxlZnQ6IDA7XFxuICBib3JkZXI6IG5vbmU7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XFxuICBtYXJnaW4tbGVmdDogN3B4O1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxufVxcbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iIC52YWx1ZSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAzMHB4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgY29sb3I6ICMyNmE2OWE7XFxuICBmb250LXNpemU6IDA7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxufVxcbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iLmFjdGl2ZSB7XFxuICBib3JkZXItcmFkaXVzOiA1MCUgNTAlIDUwJSAwO1xcbn1cXG5pbnB1dFt0eXBlPXJhbmdlXSArIC50aHVtYi5hY3RpdmUgLnZhbHVlIHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgbWFyZ2luLWxlZnQ6IC0xcHg7XFxuICBtYXJnaW4tdG9wOiA4cHg7XFxuICBmb250LXNpemU6IDEwcHg7XFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcXG4gIGhlaWdodDogM3B4O1xcbiAgYmFja2dyb3VuZDogI2MyYzBjMjtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGhlaWdodDogMTRweDtcXG4gIHdpZHRoOiAxNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYmFja2dyb3VuZDogIzI2YTY5YTtcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcztcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xcbiAgbWFyZ2luOiAtNXB4IDAgMCAwO1xcbn1cXG5cXG4ua2V5Ym9hcmQtZm9jdXNlZCBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czpub3QoLmFjdGl2ZSk6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgzOCwgMTY2LCAxNTQsIDAuMjYpO1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXSB7XFxuICAvKiBmaXggZm9yIEZGIHVuYWJsZSB0byBhcHBseSBmb2N1cyBzdHlsZSBidWcgICovXFxuICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcXG4gIC8qcmVxdWlyZWQgZm9yIHByb3BlciB0cmFjayBzaXppbmcgaW4gRkYqL1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10cmFjayB7XFxuICBoZWlnaHQ6IDNweDtcXG4gIGJhY2tncm91bmQ6ICNjMmMwYzI7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbW96LWZvY3VzLWlubmVyIHtcXG4gIGJvcmRlcjogMDtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tb3otcmFuZ2UtdGh1bWIge1xcbiAgYm9yZGVyOiBub25lO1xcbiAgaGVpZ2h0OiAxNHB4O1xcbiAgd2lkdGg6IDE0cHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kOiAjMjZhNjlhO1xcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzO1xcbiAgbWFyZ2luLXRvcDogLTVweDtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV06LW1vei1mb2N1c3Jpbmcge1xcbiAgb3V0bGluZTogMXB4IHNvbGlkICNmZmY7XFxuICBvdXRsaW5lLW9mZnNldDogLTFweDtcXG59XFxuXFxuLmtleWJvYXJkLWZvY3VzZWQgaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXM6bm90KC5hY3RpdmUpOjotbW96LXJhbmdlLXRodW1iIHtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgzOCwgMTY2LCAxNTQsIDAuMjYpO1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRyYWNrIHtcXG4gIGhlaWdodDogM3B4O1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA2cHggMDtcXG4gIC8qcmVtb3ZlIGRlZmF1bHQgdGljayBtYXJrcyovXFxuICBjb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC1sb3dlciB7XFxuICBiYWNrZ3JvdW5kOiAjNzc3O1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLWZpbGwtdXBwZXIge1xcbiAgYmFja2dyb3VuZDogI2RkZDtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10aHVtYiB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBoZWlnaHQ6IDE0cHg7XFxuICB3aWR0aDogMTRweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGJhY2tncm91bmQ6ICMyNmE2OWE7XFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuM3M7XFxufVxcblxcbi5rZXlib2FyZC1mb2N1c2VkIGlucHV0W3R5cGU9cmFuZ2VdOmZvY3VzOm5vdCguYWN0aXZlKTo6LW1zLXRodW1iIHtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgzOCwgMTY2LCAxNTQsIDAuMjYpO1xcbn1cXG5cXG4ucGFyYWxsYXgge1xcbiAgLyogU2V0IGEgc3BlY2lmaWMgaGVpZ2h0ICovXFxuICBtaW4taGVpZ2h0OiA1MDBweDtcXG4gIC8qIENyZWF0ZSB0aGUgcGFyYWxsYXggc2Nyb2xsaW5nIGVmZmVjdCAqL1xcbiAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xcbn1cXG5cXG4qIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcblxcbmJvZHkge1xcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XFxufVxcblxcbi5zY2VuZSB7XFxuICB3aWR0aDogMjAwcHg7XFxuICBoZWlnaHQ6IDIwMHB4O1xcbiAgYm9yZGVyOiAxcHggc29saWQgI0NDQztcXG4gIG1hcmdpbjogODBweDtcXG4gIHBlcnNwZWN0aXZlOiA0MDBweDtcXG59XFxuXFxuLmN1YmUge1xcbiAgd2lkdGg6IDIwMHB4O1xcbiAgaGVpZ2h0OiAyMDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTQwMHB4KTtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxcztcXG59XFxuXFxuLmN1YmUuc2hvdy1mcm9udCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoMGRlZyk7XFxufVxcblxcbi5jdWJlLnNob3ctcmlnaHQge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVZKC05MGRlZyk7XFxufVxcblxcbi5jdWJlLnNob3ctYmFjayB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoLTE4MGRlZyk7XFxufVxcblxcbi5jdWJlLnNob3ctbGVmdCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoOTBkZWcpO1xcbn1cXG5cXG4uY3ViZS5zaG93LXRvcCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVgoLTkwZGVnKTtcXG59XFxuXFxuLmN1YmUuc2hvdy1ib3R0b20ge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVYKDkwZGVnKTtcXG59XFxuXFxuLmN1YmVfX2ZhY2Uge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDIwMHB4O1xcbiAgaGVpZ2h0OiAyMDBweDtcXG4gIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrO1xcbiAgbGluZS1oZWlnaHQ6IDIwMHB4O1xcbiAgZm9udC1zaXplOiA0MHB4O1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBjb2xvcjogd2hpdGU7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcblxcbi5jdWJlX19mYWNlLS1mcm9udCB7XFxuICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDEwMCUsIDUwJSwgMC43KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLXJpZ2h0IHtcXG4gIGJhY2tncm91bmQ6IGhzbGEoNjAsIDEwMCUsIDUwJSwgMC43KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLWJhY2sge1xcbiAgYmFja2dyb3VuZDogaHNsYSgxMjAsIDEwMCUsIDUwJSwgMC43KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLWxlZnQge1xcbiAgYmFja2dyb3VuZDogaHNsYSgxODAsIDEwMCUsIDUwJSwgMC43KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLXRvcCB7XFxuICBiYWNrZ3JvdW5kOiBoc2xhKDI0MCwgMTAwJSwgNTAlLCAwLjcpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZS0tYm90dG9tIHtcXG4gIGJhY2tncm91bmQ6IGhzbGEoMzAwLCAxMDAlLCA1MCUsIDAuNyk7XFxufVxcblxcbi5jdWJlX19mYWNlLS1mcm9udCB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZykgdHJhbnNsYXRlWigxMDBweCk7XFxufVxcblxcbi5jdWJlX19mYWNlLS1yaWdodCB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZVkoOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZS0tYmFjayB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLWxlZnQge1xcbiAgdHJhbnNmb3JtOiByb3RhdGVZKC05MGRlZykgdHJhbnNsYXRlWigxMDBweCk7XFxufVxcblxcbi5jdWJlX19mYWNlLS10b3Age1xcbiAgdHJhbnNmb3JtOiByb3RhdGVYKDkwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLWJvdHRvbSB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZVgoLTkwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTtcXG59XFxuXFxubGFiZWwge1xcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xcbn1cXG5cXG4uY29udGFpbmVyIHtcXG4gIG1hcmdpbjogMCBhdXRvO1xcbiAgbWF4LXdpZHRoOiAxMjgwcHg7XFxuICB3aWR0aDogOTAlO1xcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xcbiAgLmNvbnRhaW5lciB7XFxuICAgIHdpZHRoOiA4NSU7XFxuICB9XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDk5M3B4KSB7XFxuICAuY29udGFpbmVyIHtcXG4gICAgd2lkdGg6IDcwJTtcXG4gIH1cXG59XFxuLmNvbCAucm93IHtcXG4gIG1hcmdpbi1sZWZ0OiAtMC41cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtO1xcbn1cXG5cXG4uc2VjdGlvbiB7XFxuICBwYWRkaW5nLXRvcDogMXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xcbn1cXG4uc2VjdGlvbi5uby1wYWQge1xcbiAgcGFkZGluZzogMDtcXG59XFxuLnNlY3Rpb24ubm8tcGFkLWJvdCB7XFxuICBwYWRkaW5nLWJvdHRvbTogMDtcXG59XFxuLnNlY3Rpb24ubm8tcGFkLXRvcCB7XFxuICBwYWRkaW5nLXRvcDogMDtcXG59XFxuXFxuLnJvdyB7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIG1hcmdpbi1yaWdodDogYXV0bztcXG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XFxufVxcbi5yb3c6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBkaXNwbGF5OiB0YWJsZTtcXG4gIGNsZWFyOiBib3RoO1xcbn1cXG4ucm93IC5jb2wge1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMCAwLjVyZW07XFxuICBtaW4taGVpZ2h0OiAxcHg7XFxufVxcbi5yb3cgLmNvbFtjbGFzcyo9cHVzaC1dLCAucm93IC5jb2xbY2xhc3MqPXB1bGwtXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5yb3cgLmNvbC5zMSB7XFxuICB3aWR0aDogOC4zMzMzMzMzMzMzJTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wuczIge1xcbiAgd2lkdGg6IDE2LjY2NjY2NjY2NjclO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBsZWZ0OiBhdXRvO1xcbiAgcmlnaHQ6IGF1dG87XFxufVxcbi5yb3cgLmNvbC5zMyB7XFxuICB3aWR0aDogMjUlO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBsZWZ0OiBhdXRvO1xcbiAgcmlnaHQ6IGF1dG87XFxufVxcbi5yb3cgLmNvbC5zNCB7XFxuICB3aWR0aDogMzMuMzMzMzMzMzMzMyU7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogYXV0bztcXG59XFxuLnJvdyAuY29sLnM1IHtcXG4gIHdpZHRoOiA0MS42NjY2NjY2NjY3JTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wuczYge1xcbiAgd2lkdGg6IDUwJTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wuczcge1xcbiAgd2lkdGg6IDU4LjMzMzMzMzMzMzMlO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBsZWZ0OiBhdXRvO1xcbiAgcmlnaHQ6IGF1dG87XFxufVxcbi5yb3cgLmNvbC5zOCB7XFxuICB3aWR0aDogNjYuNjY2NjY2NjY2NyU7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogYXV0bztcXG59XFxuLnJvdyAuY29sLnM5IHtcXG4gIHdpZHRoOiA3NSU7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogYXV0bztcXG59XFxuLnJvdyAuY29sLnMxMCB7XFxuICB3aWR0aDogODMuMzMzMzMzMzMzMyU7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogYXV0bztcXG59XFxuLnJvdyAuY29sLnMxMSB7XFxuICB3aWR0aDogOTEuNjY2NjY2NjY2NyU7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogYXV0bztcXG59XFxuLnJvdyAuY29sLnMxMiB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wub2Zmc2V0LXMxIHtcXG4gIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wucHVsbC1zMSB7XFxuICByaWdodDogOC4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczEge1xcbiAgbGVmdDogOC4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLm9mZnNldC1zMiB7XFxuICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5wdWxsLXMyIHtcXG4gIHJpZ2h0OiAxNi42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczIge1xcbiAgbGVmdDogMTYuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5vZmZzZXQtczMge1xcbiAgbWFyZ2luLWxlZnQ6IDI1JTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczMge1xcbiAgcmlnaHQ6IDI1JTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczMge1xcbiAgbGVmdDogMjUlO1xcbn1cXG4ucm93IC5jb2wub2Zmc2V0LXM0IHtcXG4gIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczQge1xcbiAgcmlnaHQ6IDMzLjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zNCB7XFxuICBsZWZ0OiAzMy4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLm9mZnNldC1zNSB7XFxuICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5wdWxsLXM1IHtcXG4gIHJpZ2h0OiA0MS42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczUge1xcbiAgbGVmdDogNDEuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5vZmZzZXQtczYge1xcbiAgbWFyZ2luLWxlZnQ6IDUwJTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczYge1xcbiAgcmlnaHQ6IDUwJTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczYge1xcbiAgbGVmdDogNTAlO1xcbn1cXG4ucm93IC5jb2wub2Zmc2V0LXM3IHtcXG4gIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczcge1xcbiAgcmlnaHQ6IDU4LjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zNyB7XFxuICBsZWZ0OiA1OC4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLm9mZnNldC1zOCB7XFxuICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5wdWxsLXM4IHtcXG4gIHJpZ2h0OiA2Ni42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczgge1xcbiAgbGVmdDogNjYuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5vZmZzZXQtczkge1xcbiAgbWFyZ2luLWxlZnQ6IDc1JTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczkge1xcbiAgcmlnaHQ6IDc1JTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczkge1xcbiAgbGVmdDogNzUlO1xcbn1cXG4ucm93IC5jb2wub2Zmc2V0LXMxMCB7XFxuICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7XFxufVxcbi5yb3cgLmNvbC5wdWxsLXMxMCB7XFxuICByaWdodDogODMuMzMzMzMzMzMzMyU7XFxufVxcbi5yb3cgLmNvbC5wdXNoLXMxMCB7XFxuICBsZWZ0OiA4My4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLm9mZnNldC1zMTEge1xcbiAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclO1xcbn1cXG4ucm93IC5jb2wucHVsbC1zMTEge1xcbiAgcmlnaHQ6IDkxLjY2NjY2NjY2NjclO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zMTEge1xcbiAgbGVmdDogOTEuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5vZmZzZXQtczEyIHtcXG4gIG1hcmdpbi1sZWZ0OiAxMDAlO1xcbn1cXG4ucm93IC5jb2wucHVsbC1zMTIge1xcbiAgcmlnaHQ6IDEwMCU7XFxufVxcbi5yb3cgLmNvbC5wdXNoLXMxMiB7XFxuICBsZWZ0OiAxMDAlO1xcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xcbiAgLnJvdyAuY29sLm0xIHtcXG4gICAgd2lkdGg6IDguMzMzMzMzMzMzMyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5tMiB7XFxuICAgIHdpZHRoOiAxNi42NjY2NjY2NjY3JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLm0zIHtcXG4gICAgd2lkdGg6IDI1JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLm00IHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubTUge1xcbiAgICB3aWR0aDogNDEuNjY2NjY2NjY2NyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5tNiB7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5tNyB7XFxuICAgIHdpZHRoOiA1OC4zMzMzMzMzMzMzJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLm04IHtcXG4gICAgd2lkdGg6IDY2LjY2NjY2NjY2NjclO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubTkge1xcbiAgICB3aWR0aDogNzUlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubTEwIHtcXG4gICAgd2lkdGg6IDgzLjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubTExIHtcXG4gICAgd2lkdGg6IDkxLjY2NjY2NjY2NjclO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubTEyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbTEge1xcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLW0xIHtcXG4gICAgcmlnaHQ6IDguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tMSB7XFxuICAgIGxlZnQ6IDguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LW0yIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbTIge1xcbiAgICByaWdodDogMTYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tMiB7XFxuICAgIGxlZnQ6IDE2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1tMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tMyB7XFxuICAgIHJpZ2h0OiAyNSU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tMyB7XFxuICAgIGxlZnQ6IDI1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbTQge1xcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tNCB7XFxuICAgIHJpZ2h0OiAzMy4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW00IHtcXG4gICAgbGVmdDogMzMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LW01IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbTUge1xcbiAgICByaWdodDogNDEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tNSB7XFxuICAgIGxlZnQ6IDQxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1tNiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tNiB7XFxuICAgIHJpZ2h0OiA1MCU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tNiB7XFxuICAgIGxlZnQ6IDUwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbTcge1xcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tNyB7XFxuICAgIHJpZ2h0OiA1OC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW03IHtcXG4gICAgbGVmdDogNTguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LW04IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbTgge1xcbiAgICByaWdodDogNjYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tOCB7XFxuICAgIGxlZnQ6IDY2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1tOSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA3NSU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tOSB7XFxuICAgIHJpZ2h0OiA3NSU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tOSB7XFxuICAgIGxlZnQ6IDc1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbTEwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbTEwIHtcXG4gICAgcmlnaHQ6IDgzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbTEwIHtcXG4gICAgbGVmdDogODMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LW0xMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLW0xMSB7XFxuICAgIHJpZ2h0OiA5MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW0xMSB7XFxuICAgIGxlZnQ6IDkxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1tMTIge1xcbiAgICBtYXJnaW4tbGVmdDogMTAwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLW0xMiB7XFxuICAgIHJpZ2h0OiAxMDAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbTEyIHtcXG4gICAgbGVmdDogMTAwJTtcXG4gIH1cXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcXG4gIC5yb3cgLmNvbC5sMSB7XFxuICAgIHdpZHRoOiA4LjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubDIge1xcbiAgICB3aWR0aDogMTYuNjY2NjY2NjY2NyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5sMyB7XFxuICAgIHdpZHRoOiAyNSU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5sNCB7XFxuICAgIHdpZHRoOiAzMy4zMzMzMzMzMzMzJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLmw1IHtcXG4gICAgd2lkdGg6IDQxLjY2NjY2NjY2NjclO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubDYge1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubDcge1xcbiAgICB3aWR0aDogNTguMzMzMzMzMzMzMyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5sOCB7XFxuICAgIHdpZHRoOiA2Ni42NjY2NjY2NjY3JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLmw5IHtcXG4gICAgd2lkdGg6IDc1JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLmwxMCB7XFxuICAgIHdpZHRoOiA4My4zMzMzMzMzMzMzJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLmwxMSB7XFxuICAgIHdpZHRoOiA5MS42NjY2NjY2NjY3JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLmwxMiB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LWwxIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1sMSB7XFxuICAgIHJpZ2h0OiA4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDEge1xcbiAgICBsZWZ0OiA4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1sMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLWwyIHtcXG4gICAgcmlnaHQ6IDE2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDIge1xcbiAgICBsZWZ0OiAxNi42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbDMge1xcbiAgICBtYXJnaW4tbGVmdDogMjUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDMge1xcbiAgICByaWdodDogMjUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDMge1xcbiAgICBsZWZ0OiAyNSU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LWw0IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDQge1xcbiAgICByaWdodDogMzMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sNCB7XFxuICAgIGxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1sNSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLWw1IHtcXG4gICAgcmlnaHQ6IDQxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDUge1xcbiAgICBsZWZ0OiA0MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbDYge1xcbiAgICBtYXJnaW4tbGVmdDogNTAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDYge1xcbiAgICByaWdodDogNTAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDYge1xcbiAgICBsZWZ0OiA1MCU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LWw3IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDcge1xcbiAgICByaWdodDogNTguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sNyB7XFxuICAgIGxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1sOCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLWw4IHtcXG4gICAgcmlnaHQ6IDY2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDgge1xcbiAgICBsZWZ0OiA2Ni42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbDkge1xcbiAgICBtYXJnaW4tbGVmdDogNzUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDkge1xcbiAgICByaWdodDogNzUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDkge1xcbiAgICBsZWZ0OiA3NSU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LWwxMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLWwxMCB7XFxuICAgIHJpZ2h0OiA4My4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLWwxMCB7XFxuICAgIGxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1sMTEge1xcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1sMTEge1xcbiAgICByaWdodDogOTEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sMTEge1xcbiAgICBsZWZ0OiA5MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbDEyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEwMCU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1sMTIge1xcbiAgICByaWdodDogMTAwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLWwxMiB7XFxuICAgIGxlZnQ6IDEwMCU7XFxuICB9XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDEyMDFweCkge1xcbiAgLnJvdyAuY29sLnhsMSB7XFxuICAgIHdpZHRoOiA4LjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wueGwyIHtcXG4gICAgd2lkdGg6IDE2LjY2NjY2NjY2NjclO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wueGwzIHtcXG4gICAgd2lkdGg6IDI1JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLnhsNCB7XFxuICAgIHdpZHRoOiAzMy4zMzMzMzMzMzMzJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLnhsNSB7XFxuICAgIHdpZHRoOiA0MS42NjY2NjY2NjY3JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLnhsNiB7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC54bDcge1xcbiAgICB3aWR0aDogNTguMzMzMzMzMzMzMyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC54bDgge1xcbiAgICB3aWR0aDogNjYuNjY2NjY2NjY2NyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC54bDkge1xcbiAgICB3aWR0aDogNzUlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wueGwxMCB7XFxuICAgIHdpZHRoOiA4My4zMzMzMzMzMzMzJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLnhsMTEge1xcbiAgICB3aWR0aDogOTEuNjY2NjY2NjY2NyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC54bDEyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQteGwxIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC14bDEge1xcbiAgICByaWdodDogOC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsMSB7XFxuICAgIGxlZnQ6IDguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LXhsMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLXhsMiB7XFxuICAgIHJpZ2h0OiAxNi42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsMiB7XFxuICAgIGxlZnQ6IDE2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC14bDMge1xcbiAgICBtYXJnaW4tbGVmdDogMjUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGwzIHtcXG4gICAgcmlnaHQ6IDI1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsMyB7XFxuICAgIGxlZnQ6IDI1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQteGw0IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGw0IHtcXG4gICAgcmlnaHQ6IDMzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGw0IHtcXG4gICAgbGVmdDogMzMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LXhsNSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLXhsNSB7XFxuICAgIHJpZ2h0OiA0MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsNSB7XFxuICAgIGxlZnQ6IDQxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC14bDYge1xcbiAgICBtYXJnaW4tbGVmdDogNTAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGw2IHtcXG4gICAgcmlnaHQ6IDUwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsNiB7XFxuICAgIGxlZnQ6IDUwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQteGw3IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGw3IHtcXG4gICAgcmlnaHQ6IDU4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGw3IHtcXG4gICAgbGVmdDogNTguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LXhsOCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLXhsOCB7XFxuICAgIHJpZ2h0OiA2Ni42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsOCB7XFxuICAgIGxlZnQ6IDY2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC14bDkge1xcbiAgICBtYXJnaW4tbGVmdDogNzUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGw5IHtcXG4gICAgcmlnaHQ6IDc1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsOSB7XFxuICAgIGxlZnQ6IDc1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQteGwxMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLXhsMTAge1xcbiAgICByaWdodDogODMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC14bDEwIHtcXG4gICAgbGVmdDogODMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LXhsMTEge1xcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC14bDExIHtcXG4gICAgcmlnaHQ6IDkxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGwxMSB7XFxuICAgIGxlZnQ6IDkxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC14bDEyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEwMCU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC14bDEyIHtcXG4gICAgcmlnaHQ6IDEwMCU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC14bDEyIHtcXG4gICAgbGVmdDogMTAwJTtcXG4gIH1cXG59XFxuXFxuLnNpZGVuYXYge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgd2lkdGg6IDMwMHB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGhlaWdodDogY2FsYygxMDAlICsgNjBweCk7XFxuICBoZWlnaHQ6IC1tb3otY2FsYygxMDAlKTtcXG4gIHBhZGRpbmctYm90dG9tOiA2MHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIHotaW5kZXg6IDk5OTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxcztcXG59XFxuLnNpZGVuYXYucmlnaHQtYWxpZ25lZCB7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IGF1dG87XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxufVxcbi5zaWRlbmF2IC5jb2xsYXBzaWJsZSB7XFxuICBtYXJnaW46IDA7XFxufVxcbi5zaWRlbmF2IGxpIHtcXG4gIGZsb2F0OiBub25lO1xcbn1cXG4uc2lkZW5hdiBsaSAuaWNvblNpZGVMaW5rIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uc2lkZW5hdiBsaSAuaWNvblNpZGVMaW5rIHN2ZyB7XFxuICBzdHJva2U6IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIHdpZHRoOiAzMHB4O1xcbn1cXG4uc2lkZW5hdiBsaS5hY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG59XFxuLnNpZGVuYXYgbGkuYWN0aXZlIHN2ZyB7XFxuICBzdHJva2U6IHdoaXRlICFpbXBvcnRhbnQ7XFxuICB3aWR0aDogMzBweDtcXG59XFxuLnNpZGVuYXYgbGkubGFzdCB7XFxuICBwb3NpdGlvbjogc3RpY2t5O1xcbiAgdG9wOiBjYWxjKDEwMCUgLSA0NXB4IC0gMzVweCk7XFxufVxcbi5zaWRlbmF2IGxpID4gYSB7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgaGVpZ2h0OiA0NXB4O1xcbiAgbGluZS1oZWlnaHQ6IDQ1cHg7XFxuICBwYWRkaW5nOiAwIDMwcHg7XFxufVxcbi5zaWRlbmF2IGxpID4gYTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbn1cXG4uc2lkZW5hdiBsaSA+IGEuYnRuLCAuc2lkZW5hdiBsaSA+IGEuYnRuLXNtYWxsLCAuc2lkZW5hdiBsaSA+IGEuYnRuLWxhcmdlLCAuc2lkZW5hdiBsaSA+IGEuYnRuLWZsYXQsIC5zaWRlbmF2IGxpID4gYS5idG4tZmxvYXRpbmcge1xcbiAgbWFyZ2luOiAxMHB4IDE1cHg7XFxufVxcbi5zaWRlbmF2IGxpID4gYS5idG4sIC5zaWRlbmF2IGxpID4gYS5idG4tc21hbGwsIC5zaWRlbmF2IGxpID4gYS5idG4tbGFyZ2UsIC5zaWRlbmF2IGxpID4gYS5idG4tZmxvYXRpbmcge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcbi5zaWRlbmF2IGxpID4gYS5idG4tZmxhdCB7XFxuICBjb2xvcjogIzM0MzQzNDtcXG59XFxuLnNpZGVuYXYgbGkgPiBhLmJ0bjpob3ZlciwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1zbWFsbDpob3ZlciwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1sYXJnZTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE0MTQxO1xcbn1cXG4uc2lkZW5hdiBsaSA+IGEuYnRuLWZsb2F0aW5nOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDM0MzQ7XFxufVxcbi5zaWRlbmF2IGxpID4gYSA+IGksIC5zaWRlbmF2IGxpID4gYSA+IFtjbGFzc149bWRpLV0sXFxuLnNpZGVuYXYgbGkgPiBhIGxpID4gYSA+IFtjbGFzcyo9bWRpLV0sIC5zaWRlbmF2IGxpID4gYSA+IGkucy1pY29uIHtcXG4gIGZsb2F0OiBsZWZ0O1xcbiAgaGVpZ2h0OiA0NXB4O1xcbiAgbGluZS1oZWlnaHQ6IDQ1cHg7XFxuICBtYXJnaW46IDAgMzBweCAwIDA7XFxuICB3aWR0aDogMjIuNXB4O1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxufVxcbi5zaWRlbmF2IC5kaXZpZGVyIHtcXG4gIG1hcmdpbjogNy41cHggMCAwIDA7XFxufVxcbi5zaWRlbmF2IC5zdWJoZWFkZXIge1xcbiAgY3Vyc29yOiBpbml0aWFsO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBsaW5lLWhlaWdodDogNDVweDtcXG59XFxuLnNpZGVuYXYgLnN1YmhlYWRlcjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLnNpZGVuYXYgLnVzZXItdmlldyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nOiAzMHB4IDMwcHggMDtcXG4gIG1hcmdpbi1ib3R0b206IDcuNXB4O1xcbn1cXG4uc2lkZW5hdiAudXNlci12aWV3ID4gYSB7XFxuICBoZWlnaHQ6IGF1dG87XFxuICBwYWRkaW5nOiAwO1xcbn1cXG4uc2lkZW5hdiAudXNlci12aWV3ID4gYTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLnNpZGVuYXYgLnVzZXItdmlldyAuYmFja2dyb3VuZCB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogLTE7XFxufVxcbi5zaWRlbmF2IC51c2VyLXZpZXcgLmNpcmNsZSxcXG4uc2lkZW5hdiAudXNlci12aWV3IC5uYW1lLFxcbi5zaWRlbmF2IC51c2VyLXZpZXcgLmVtYWlsIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4uc2lkZW5hdiAudXNlci12aWV3IC5jaXJjbGUge1xcbiAgaGVpZ2h0OiA2NHB4O1xcbiAgd2lkdGg6IDY0cHg7XFxufVxcbi5zaWRlbmF2IC51c2VyLXZpZXcgLm5hbWUsXFxuLnNpZGVuYXYgLnVzZXItdmlldyAuZW1haWwge1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbiAgbGluZS1oZWlnaHQ6IDIyLjVweDtcXG59XFxuLnNpZGVuYXYgLnVzZXItdmlldyAubmFtZSB7XFxuICBtYXJnaW4tdG9wOiAxNnB4O1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuLnNpZGVuYXYgLnVzZXItdmlldyAuZW1haWwge1xcbiAgcGFkZGluZy1ib3R0b206IDE2cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbn1cXG5cXG4uZHJhZy10YXJnZXQge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwcHg7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB0b3A6IDA7XFxuICB6LWluZGV4OiA5OTg7XFxufVxcbi5kcmFnLXRhcmdldC5yaWdodC1hbGlnbmVkIHtcXG4gIHJpZ2h0OiAwO1xcbn1cXG5cXG4uc2lkZW5hdi5zaWRlbmF2LWZpeGVkIHtcXG4gIGxlZnQ6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxufVxcbi5zaWRlbmF2LnNpZGVuYXYtZml4ZWQucmlnaHQtYWxpZ25lZCB7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IGF1dG87XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDk5MnB4KSB7XFxuICAuc2lkZW5hdi5zaWRlbmF2LWZpeGVkIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcXG4gIH1cXG4gIC5zaWRlbmF2LnNpZGVuYXYtZml4ZWQucmlnaHQtYWxpZ25lZCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDUlKTtcXG4gIH1cXG4gIC5zaWRlbmF2ID4gYSB7XFxuICAgIHBhZGRpbmc6IDAgMTVweDtcXG4gIH1cXG4gIC5zaWRlbmF2IC51c2VyLXZpZXcge1xcbiAgICBwYWRkaW5nOiAxNXB4IDE1cHggMDtcXG4gIH1cXG59XFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHkgPiB1bDpub3QoLmNvbGxhcHNpYmxlKSA+IGxpLmFjdGl2ZSxcXG4uc2lkZW5hdi5zaWRlbmF2LWZpeGVkIC5jb2xsYXBzaWJsZS1ib2R5ID4gdWw6bm90KC5jb2xsYXBzaWJsZSkgPiBsaS5hY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwY2FmOTtcXG59XFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHkgPiB1bDpub3QoLmNvbGxhcHNpYmxlKSA+IGxpLmFjdGl2ZSBhLFxcbi5zaWRlbmF2LnNpZGVuYXYtZml4ZWQgLmNvbGxhcHNpYmxlLWJvZHkgPiB1bDpub3QoLmNvbGxhcHNpYmxlKSA+IGxpLmFjdGl2ZSBhIHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4uc2lkZW5hdiAuY29sbGFwc2libGUtYm9keSB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4uc2lkZW5hdi1vdmVybGF5IHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIG9wYWNpdHk6IDA7XFxuICBoZWlnaHQ6IDEyMHZoO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xcbiAgei1pbmRleDogOTk3O1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLndpdGgtc2lkZS1uYXYtb3BlbiB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwMHB4O1xcbiAgdHJhbnNpdGlvbjogcGFkZGluZyAxcztcXG59XFxuXFxuLmJ0biwgLmJ0bi1zbWFsbCwgLmJ0bi1sYXJnZSxcXG4uYnRuLWZsYXQge1xcbiAgYm9yZGVyOiBub25lO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgaGVpZ2h0OiAzNnB4O1xcbiAgbGluZS1oZWlnaHQ6IDM2cHg7XFxuICBwYWRkaW5nOiAwIDE2cHg7XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi5idG4uZGlzYWJsZWQsXFxuLmJ0bi1mbG9hdGluZy5kaXNhYmxlZCxcXG4uYnRuLWxhcmdlLmRpc2FibGVkLFxcbi5idG4tc21hbGwuZGlzYWJsZWQsXFxuLmJ0bi1mbGF0LmRpc2FibGVkLFxcbi5idG46ZGlzYWJsZWQsXFxuLmJ0bi1mbG9hdGluZzpkaXNhYmxlZCxcXG4uYnRuLWxhcmdlOmRpc2FibGVkLFxcbi5idG4tc21hbGw6ZGlzYWJsZWQsXFxuLmJ0bi1mbGF0OmRpc2FibGVkLFxcbi5idG5bZGlzYWJsZWRdLFxcbi5idG4tZmxvYXRpbmdbZGlzYWJsZWRdLFxcbi5idG4tbGFyZ2VbZGlzYWJsZWRdLFxcbi5idG4tc21hbGxbZGlzYWJsZWRdLFxcbi5idG4tZmxhdFtkaXNhYmxlZF0ge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjREZERkRGICFpbXBvcnRhbnQ7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgY29sb3I6ICM5RjlGOUYgIWltcG9ydGFudDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG59XFxuLmJ0bi5kaXNhYmxlZDpob3ZlcixcXG4uYnRuLWZsb2F0aW5nLmRpc2FibGVkOmhvdmVyLFxcbi5idG4tbGFyZ2UuZGlzYWJsZWQ6aG92ZXIsXFxuLmJ0bi1zbWFsbC5kaXNhYmxlZDpob3ZlcixcXG4uYnRuLWZsYXQuZGlzYWJsZWQ6aG92ZXIsXFxuLmJ0bjpkaXNhYmxlZDpob3ZlcixcXG4uYnRuLWZsb2F0aW5nOmRpc2FibGVkOmhvdmVyLFxcbi5idG4tbGFyZ2U6ZGlzYWJsZWQ6aG92ZXIsXFxuLmJ0bi1zbWFsbDpkaXNhYmxlZDpob3ZlcixcXG4uYnRuLWZsYXQ6ZGlzYWJsZWQ6aG92ZXIsXFxuLmJ0bltkaXNhYmxlZF06aG92ZXIsXFxuLmJ0bi1mbG9hdGluZ1tkaXNhYmxlZF06aG92ZXIsXFxuLmJ0bi1sYXJnZVtkaXNhYmxlZF06aG92ZXIsXFxuLmJ0bi1zbWFsbFtkaXNhYmxlZF06aG92ZXIsXFxuLmJ0bi1mbGF0W2Rpc2FibGVkXTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjREZERkRGICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogIzlGOUY5RiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnRuLFxcbi5idG4tc21hbGwsXFxuLmJ0bi1sYXJnZSxcXG4uYnRuLWZsb2F0aW5nLFxcbi5idG4tZmxhdCB7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBvdXRsaW5lOiAwO1xcbn1cXG4uYnRuIGksXFxuLmJ0bi1mbG9hdGluZyBpLFxcbi5idG4tbGFyZ2UgaSxcXG4uYnRuLXNtYWxsIGksXFxuLmJ0bi1mbGF0IGkge1xcbiAgZm9udC1zaXplOiAxLjNyZW07XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG59XFxuXFxuLmJ0bjpmb2N1cywgLmJ0bi1zbWFsbDpmb2N1cywgLmJ0bi1sYXJnZTpmb2N1cyxcXG4uYnRuLWZsb2F0aW5nOmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxYjFiMWI7XFxufVxcblxcbi5idG4sIC5idG4tc21hbGwsIC5idG4tbGFyZ2Uge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzNDM0O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2Utb3V0O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4uYnRuOmhvdmVyLCAuYnRuLXNtYWxsOmhvdmVyLCAuYnRuLWxhcmdlOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0MTQxNDE7XFxufVxcblxcbi5idG4tZmxvYXRpbmcge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgY29sb3I6ICNmZmY7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgei1pbmRleDogMTtcXG4gIHdpZHRoOiA0MHB4O1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XFxuICBwYWRkaW5nOiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxufVxcbi5idG4tZmxvYXRpbmc6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG59XFxuLmJ0bi1mbG9hdGluZzpiZWZvcmUge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG59XFxuLmJ0bi1mbG9hdGluZy5idG4tbGFyZ2Uge1xcbiAgd2lkdGg6IDU2cHg7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG4uYnRuLWZsb2F0aW5nLmJ0bi1sYXJnZS5oYWxmd2F5LWZhYiB7XFxuICBib3R0b206IDI4cHg7XFxufVxcbi5idG4tZmxvYXRpbmcuYnRuLWxhcmdlIGkge1xcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XFxufVxcbi5idG4tZmxvYXRpbmcuYnRuLXNtYWxsIHtcXG4gIHdpZHRoOiAzMi40cHg7XFxuICBoZWlnaHQ6IDMyLjRweDtcXG59XFxuLmJ0bi1mbG9hdGluZy5idG4tc21hbGwuaGFsZndheS1mYWIge1xcbiAgYm90dG9tOiAxNi4ycHg7XFxufVxcbi5idG4tZmxvYXRpbmcuYnRuLXNtYWxsIGkge1xcbiAgbGluZS1oZWlnaHQ6IDMyLjRweDtcXG59XFxuLmJ0bi1mbG9hdGluZy5oYWxmd2F5LWZhYiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMjRweDtcXG4gIGJvdHRvbTogMjBweDtcXG59XFxuLmJ0bi1mbG9hdGluZy5oYWxmd2F5LWZhYi5sZWZ0IHtcXG4gIHJpZ2h0OiBhdXRvO1xcbiAgbGVmdDogMjRweDtcXG59XFxuLmJ0bi1mbG9hdGluZyBpIHtcXG4gIHdpZHRoOiBpbmhlcml0O1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgY29sb3I6ICNmZmY7XFxuICBmb250LXNpemU6IDEuNnJlbTtcXG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xcbn1cXG5cXG5idXR0b24uYnRuLWZsb2F0aW5nIHtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuXFxuLmZpeGVkLWFjdGlvbi1idG4ge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgcmlnaHQ6IDIzcHg7XFxuICBib3R0b206IDIzcHg7XFxuICBwYWRkaW5nLXRvcDogMTVweDtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxuICB6LWluZGV4OiA5OTc7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmFjdGl2ZSB1bCB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tbGVmdCwgLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLXJpZ2h0IHtcXG4gIHBhZGRpbmc6IDAgMCAwIDE1cHg7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1sZWZ0IHVsLCAuZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQgdWwge1xcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxuICByaWdodDogNjRweDtcXG4gIHRvcDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgbGVmdDogYXV0bztcXG4gIC8qd2lkdGggMTAwJSBvbmx5IGdvZXMgdG8gd2lkdGggb2YgYnV0dG9uIGNvbnRhaW5lciAqL1xcbiAgd2lkdGg6IDUwMHB4O1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tbGVmdCB1bCBsaSwgLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLXJpZ2h0IHVsIGxpIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIG1hcmdpbjogNy41cHggMTVweCAwIDA7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1yaWdodCB7XFxuICBwYWRkaW5nOiAwIDE1cHggMCAwO1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQgdWwge1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGRpcmVjdGlvbjogcnRsO1xcbiAgbGVmdDogNjRweDtcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQgdWwgbGkge1xcbiAgbWFyZ2luOiA3LjVweCAwIDAgMTVweDtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLWJvdHRvbSB7XFxuICBwYWRkaW5nOiAwIDAgMTVweCAwO1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tYm90dG9tIHVsIHtcXG4gIHRvcDogNjRweDtcXG4gIGJvdHRvbTogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1ib3R0b20gdWwgbGkge1xcbiAgbWFyZ2luOiAxNXB4IDAgMCAwO1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0bi50b29sYmFyIHtcXG4gIHBhZGRpbmc6IDA7XFxuICBoZWlnaHQ6IDU2cHg7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIuYWN0aXZlID4gYSBpIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIgdWwge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIgdWwgbGkge1xcbiAgZmxleDogMTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIG1hcmdpbjogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHRyYW5zaXRpb246IG5vbmU7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIgdWwgbGkgYSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0bi50b29sYmFyIHVsIGxpIGEgaSB7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4gdWwge1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiA2NHB4O1xcbiAgbWFyZ2luOiAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0biB1bCBsaSB7XFxuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0biB1bCBhLmJ0bi1mbG9hdGluZyB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0biAuZmFiLWJhY2tkcm9wIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB6LWluZGV4OiAtMTtcXG4gIHdpZHRoOiA0MHB4O1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxufVxcblxcbi5idG4tZmxhdCB7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogIzM0MzQzNDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcXG59XFxuLmJ0bi1mbGF0OmZvY3VzLCAuYnRuLWZsYXQ6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuLmJ0bi1mbGF0OmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuLmJ0bi1mbGF0LmRpc2FibGVkLCAuYnRuLWZsYXQuYnRuLWZsYXRbZGlzYWJsZWRdIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogI2IzYjNiMyAhaW1wb3J0YW50O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG5cXG4uYnRuLWxhcmdlIHtcXG4gIGhlaWdodDogNTRweDtcXG4gIGxpbmUtaGVpZ2h0OiA1NHB4O1xcbiAgZm9udC1zaXplOiAxNXB4O1xcbiAgcGFkZGluZzogMCAyOHB4O1xcbn1cXG4uYnRuLWxhcmdlIGkge1xcbiAgZm9udC1zaXplOiAxLjZyZW07XFxufVxcblxcbi5idG4tc21hbGwge1xcbiAgaGVpZ2h0OiAzMi40cHg7XFxuICBsaW5lLWhlaWdodDogMzIuNHB4O1xcbiAgZm9udC1zaXplOiAxM3B4O1xcbn1cXG4uYnRuLXNtYWxsIGkge1xcbiAgZm9udC1zaXplOiAxLjJyZW07XFxufVxcblxcbi5idG4tYmxvY2sge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbi5jb21tdW5UYWJIZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTIgLnRhYi1oZWFkZXItb3ZlcjAgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTEgLnRhYi1oZWFkZXItb3ZlcjAgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTAgLnRhYi1oZWFkZXItb3ZlcjAgLnRhYi1oZWFkZXIge1xcbiAgaGVpZ2h0OiAxMDBweDtcXG4gIHBhZGRpbmc6IDQwcHg7XFxufVxcblxcbi50YWJzIHtcXG4gIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtIDE1MHB4KTtcXG4gIG1hcmdpbi10b3A6IDMwcHg7XFxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4ICFpbXBvcnRhbnQ7XFxufVxcbi50YWJzIC5pbm5lcnBhZ2Uge1xcbiAgbWluLWhlaWdodDogNzBWSCAhaW1wb3J0YW50O1xcbn1cXG4udGFicyAudGFicy1oZWFkZXItb3ZlcmxheSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgaGVpZ2h0OiAxMDBweDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTAgLnRhYi1oZWFkZXItb3ZlcjAge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDAgMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2JlN2ZlO1xcbiAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTAgLnRhYi1oZWFkZXItb3ZlcjEge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgI2NiZTdmZSwgIzM1YTJmYik7XFxuICBib3JkZXItcmFkaXVzOiAwIDAgMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBjNGZkO1xcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgNDBweDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTAgLnRhYi1oZWFkZXItb3ZlcjIge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XFxuICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzVhMmZiO1xcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgNDBweDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTEgLnRhYi1oZWFkZXItb3ZlcjAge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDAgMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBjNGZkO1xcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDQwcHggMDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTEgLnRhYi1oZWFkZXItb3ZlcjEge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgIzgwYzRmZCwgIzM1YTJmYik7XFxuICBib3JkZXItcmFkaXVzOiAwIDAgMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2JlN2ZlO1xcbiAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTEgLnRhYi1oZWFkZXItb3ZlcjIge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XFxuICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzVhMmZiO1xcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgNDBweDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTIgLnRhYi1oZWFkZXItb3ZlcjAge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDAgMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBjNGZkO1xcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDQwcHggMDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTIgLnRhYi1oZWFkZXItb3ZlcjEge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgIzgwYzRmZCwgI2NiZTdmZSk7XFxuICBib3JkZXItcmFkaXVzOiAwIDAgMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMSAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzVhMmZiO1xcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDQwcHggMDtcXG59XFxuLnRhYnMuYWN0aXZlVGFiLTIgLnRhYi1oZWFkZXItb3ZlcjIge1xcbiAgZmxleDogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XFxuICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2JlN2ZlO1xcbiAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcXG59XFxuLnRhYnMgLnRhYi1jb250ZW50IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XFxuICBwYWRkaW5nOiAxMHB4O1xcbiAgYm9yZGVyLXRvcDogMDtcXG4gIG1pbi1oZWlnaHQ6IDcwdmg7XFxuICBib3JkZXItcmFkaXVzOiAwIDAgNDBweCA0MHB4O1xcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XFxufVxcblxcbi5sb2FkZXItb3ZlcmxheSB7XFxuICB6LWluZGV4OiA5OTk7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBoZWlnaHQ6IDEwMHZoO1xcbiAgd2lkdGg6IDEwMHZ3O1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAyLCAxMDAsIDEwMCwgMC42MDMpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5sb2FkZXItb3ZlcmxheSAubG9hZGVyIHtcXG4gIGJvcmRlcjogN3B4IHNvbGlkICNmM2YzZjM7IC8qIExpZ2h0IGdyZXkgKi9cXG4gIGJvcmRlci10b3A6IDdweCBzb2xpZCAjMmVhMmNjOyAvKiBCbHVlICovXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICB3aWR0aDogNzBweDtcXG4gIGhlaWdodDogNzBweDtcXG4gIGFuaW1hdGlvbjogc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7XFxufVxcbi5sb2FkZXItb3ZlcmxheSAubG9hZGVyLXRleHQge1xcbiAgbWFyZ2luLXRvcDogMjBweDtcXG4gIGZvbnQtc2l6ZTogMjVweDtcXG4gIGNvbG9yOiAjMmVhMmNjO1xcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4ge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uY2FyZC1wYW5lbCB7XFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMjVzO1xcbiAgcGFkZGluZzogMjRweDtcXG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbn1cXG5cXG4uY2FyZCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBtYXJnaW46IDAuMzMzMzMzMzMzM3JlbSAwIDAuNjY2NjY2NjY2N3JlbSAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4yNXM7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxufVxcbi5jYXJkIC5jYXJkLXRpdGxlIHtcXG4gIGZvbnQtc2l6ZTogMjRweDtcXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxufVxcbi5jYXJkIC5jYXJkLXRpdGxlLmFjdGl2YXRvciB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5jYXJkLnNtYWxsLCAuY2FyZC5tZWRpdW0sIC5jYXJkLmxhcmdlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmNhcmQuc21hbGwgLmNhcmQtaW1hZ2UsIC5jYXJkLm1lZGl1bSAuY2FyZC1pbWFnZSwgLmNhcmQubGFyZ2UgLmNhcmQtaW1hZ2Uge1xcbiAgbWF4LWhlaWdodDogNjAlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmNhcmQuc21hbGwgLmNhcmQtaW1hZ2UgKyAuY2FyZC1jb250ZW50LCAuY2FyZC5tZWRpdW0gLmNhcmQtaW1hZ2UgKyAuY2FyZC1jb250ZW50LCAuY2FyZC5sYXJnZSAuY2FyZC1pbWFnZSArIC5jYXJkLWNvbnRlbnQge1xcbiAgbWF4LWhlaWdodDogNDAlO1xcbn1cXG4uY2FyZC5zbWFsbCAuY2FyZC1jb250ZW50LCAuY2FyZC5tZWRpdW0gLmNhcmQtY29udGVudCwgLmNhcmQubGFyZ2UgLmNhcmQtY29udGVudCB7XFxuICBtYXgtaGVpZ2h0OiAxMDAlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmNhcmQuc21hbGwgLmNhcmQtYWN0aW9uLCAuY2FyZC5tZWRpdW0gLmNhcmQtYWN0aW9uLCAuY2FyZC5sYXJnZSAuY2FyZC1hY3Rpb24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbn1cXG4uY2FyZC5zbWFsbCB7XFxuICBoZWlnaHQ6IDMwMHB4O1xcbn1cXG4uY2FyZC5tZWRpdW0ge1xcbiAgaGVpZ2h0OiA0MDBweDtcXG59XFxuLmNhcmQubGFyZ2Uge1xcbiAgaGVpZ2h0OiA1MDBweDtcXG59XFxuLmNhcmQuaG9yaXpvbnRhbCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uY2FyZC5ob3Jpem9udGFsLnNtYWxsIC5jYXJkLWltYWdlLCAuY2FyZC5ob3Jpem9udGFsLm1lZGl1bSAuY2FyZC1pbWFnZSwgLmNhcmQuaG9yaXpvbnRhbC5sYXJnZSAuY2FyZC1pbWFnZSB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBtYXgtaGVpZ2h0OiBub25lO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxufVxcbi5jYXJkLmhvcml6b250YWwuc21hbGwgLmNhcmQtaW1hZ2UgaW1nLCAuY2FyZC5ob3Jpem9udGFsLm1lZGl1bSAuY2FyZC1pbWFnZSBpbWcsIC5jYXJkLmhvcml6b250YWwubGFyZ2UgLmNhcmQtaW1hZ2UgaW1nIHtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuLmNhcmQuaG9yaXpvbnRhbCAuY2FyZC1pbWFnZSB7XFxuICBtYXgtd2lkdGg6IDUwJTtcXG59XFxuLmNhcmQuaG9yaXpvbnRhbCAuY2FyZC1pbWFnZSBpbWcge1xcbiAgYm9yZGVyLXJhZGl1czogMnB4IDAgMCAycHg7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICB3aWR0aDogYXV0bztcXG59XFxuLmNhcmQuaG9yaXpvbnRhbCAuY2FyZC1zdGFja2VkIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZmxleDogMTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmNhcmQuaG9yaXpvbnRhbCAuY2FyZC1zdGFja2VkIC5jYXJkLWNvbnRlbnQge1xcbiAgZmxleC1ncm93OiAxO1xcbn1cXG4uY2FyZC5zdGlja3ktYWN0aW9uIC5jYXJkLWFjdGlvbiB7XFxuICB6LWluZGV4OiAyO1xcbn1cXG4uY2FyZC5zdGlja3ktYWN0aW9uIC5jYXJkLXJldmVhbCB7XFxuICB6LWluZGV4OiAxO1xcbiAgcGFkZGluZy1ib3R0b206IDY0cHg7XFxufVxcbi5jYXJkIC5jYXJkLWltYWdlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmNhcmQgLmNhcmQtaW1hZ2UgaW1nIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4IDJweCAwIDA7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IDA7XFxuICBib3R0b206IDA7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuLmNhcmQgLmNhcmQtaW1hZ2UgLmNhcmQtdGl0bGUge1xcbiAgY29sb3I6ICNmZmY7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZzogMjRweDtcXG59XFxuLmNhcmQgLmNhcmQtY29udGVudCB7XFxuICBwYWRkaW5nOiAyNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMCAwIDJweCAycHg7XFxufVxcbi5jYXJkIC5jYXJkLWNvbnRlbnQgcCB7XFxuICBtYXJnaW46IDA7XFxufVxcbi5jYXJkIC5jYXJkLWNvbnRlbnQgLmNhcmQtdGl0bGUge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBsaW5lLWhlaWdodDogMzJweDtcXG4gIG1hcmdpbi1ib3R0b206IDhweDtcXG59XFxuLmNhcmQgLmNhcmQtY29udGVudCAuY2FyZC10aXRsZSBpIHtcXG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xcbn1cXG4uY2FyZCAuY2FyZC1hY3Rpb24ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDE2MCwgMTYwLCAxNjAsIDAuMik7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nOiAxNnB4IDI0cHg7XFxufVxcbi5jYXJkIC5jYXJkLWFjdGlvbjpsYXN0LWNoaWxkIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4O1xcbn1cXG4uY2FyZCAuY2FyZC1hY3Rpb24gYTpub3QoLmJ0bik6bm90KC5idG4tbGFyZ2UpOm5vdCguYnRuLXNtYWxsKTpub3QoLmJ0bi1sYXJnZSk6bm90KC5idG4tZmxvYXRpbmcpIHtcXG4gIGNvbG9yOiAjZmZhYjQwO1xcbiAgbWFyZ2luLXJpZ2h0OiAyNHB4O1xcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG59XFxuLmNhcmQgLmNhcmQtYWN0aW9uIGE6bm90KC5idG4pOm5vdCguYnRuLWxhcmdlKTpub3QoLmJ0bi1zbWFsbCk6bm90KC5idG4tbGFyZ2UpOm5vdCguYnRuLWZsb2F0aW5nKTpob3ZlciB7XFxuICBjb2xvcjogI2ZmZDhhNjtcXG59XFxuLmNhcmQgLmNhcmQtcmV2ZWFsIHtcXG4gIHBhZGRpbmc6IDI0cHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHotaW5kZXg6IDM7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4uY2FyZCAuY2FyZC1yZXZlYWwgLmNhcmQtdGl0bGUge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbi8qXFxuICAgIEBsaWNlbnNlXFxuICAgIENvcHlyaWdodCAoYykgMjAxNCBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXFxuICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHRcXG4gICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHRcXG4gICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0XFxuICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvXFxuICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0XFxuICovXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qIFNUWUxFUyBGT1IgVEhFIFNQSU5ORVIgKi9cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLypcXG4gKiBDb25zdGFudHM6XFxuICogICAgICBTVFJPS0VXSURUSCA9IDNweFxcbiAqICAgICAgQVJDU0laRSAgICAgPSAyNzAgZGVncmVlcyAoYW1vdW50IG9mIGNpcmNsZSB0aGUgYXJjIHRha2VzIHVwKVxcbiAqICAgICAgQVJDVElNRSAgICAgPSAxMzMzbXMgKHRpbWUgaXQgdGFrZXMgdG8gZXhwYW5kIGFuZCBjb250cmFjdCBhcmMpXFxuICogICAgICBBUkNTVEFSVFJPVCA9IDIxNiBkZWdyZWVzIChob3cgbXVjaCB0aGUgc3RhcnQgbG9jYXRpb24gb2YgdGhlIGFyY1xcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcm90YXRlIGVhY2ggdGltZSwgMjE2IGdpdmVzIHVzIGFcXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSBwb2ludGVkIHN0YXIgc2hhcGUgKGl0J3MgMzYwLzUgKiAzKS5cXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgNyBwb2ludGVkIHN0YXIsIHdlIG1pZ2h0IGRvXFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2MC83ICogMyA9IDE1NC4yODYpXFxuICogICAgICBDT05UQUlORVJXSURUSCA9IDI4cHhcXG4gKiAgICAgIFNIUklOS19USU1FID0gNDAwbXNcXG4gKi9cXG4ucHJlbG9hZGVyLXdyYXBwZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDUwcHg7XFxuICBoZWlnaHQ6IDUwcHg7XFxufVxcbi5wcmVsb2FkZXItd3JhcHBlci5zbWFsbCB7XFxuICB3aWR0aDogMzZweDtcXG4gIGhlaWdodDogMzZweDtcXG59XFxuLnByZWxvYWRlci13cmFwcGVyLmJpZyB7XFxuICB3aWR0aDogNjRweDtcXG4gIGhlaWdodDogNjRweDtcXG59XFxuLnByZWxvYWRlci13cmFwcGVyLmFjdGl2ZSB7XFxuICAvKiBkdXJhdGlvbjogMzYwICogQVJDVElNRSAvIChBUkNTVEFSVFJPVCArICgzNjAtQVJDU0laRSkpICovXFxuICAtd2Via2l0LWFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSAxNTY4bXMgbGluZWFyIGluZmluaXRlO1xcbiAgYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGU7XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBjb250YWluZXItcm90YXRlIHtcXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGNvbnRhaW5lci1yb3RhdGUge1xcbiAgdG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG4uc3Bpbm5lci1sYXllciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG9wYWNpdHk6IDA7XFxuICBib3JkZXItY29sb3I6ICMyNmE2OWE7XFxufVxcblxcbi5zcGlubmVyLWJsdWUsXFxuLnNwaW5uZXItYmx1ZS1vbmx5IHtcXG4gIGJvcmRlci1jb2xvcjogIzQyODVmNDtcXG59XFxuXFxuLnNwaW5uZXItcmVkLFxcbi5zcGlubmVyLXJlZC1vbmx5IHtcXG4gIGJvcmRlci1jb2xvcjogI2RiNDQzNztcXG59XFxuXFxuLnNwaW5uZXIteWVsbG93LFxcbi5zcGlubmVyLXllbGxvdy1vbmx5IHtcXG4gIGJvcmRlci1jb2xvcjogI2Y0YjQwMDtcXG59XFxuXFxuLnNwaW5uZXItZ3JlZW4sXFxuLnNwaW5uZXItZ3JlZW4tb25seSB7XFxuICBib3JkZXItY29sb3I6ICMwZjlkNTg7XFxufVxcblxcbi8qKlxcbiAqIElNUE9SVEFOVCBOT1RFIEFCT1VUIENTUyBBTklNQVRJT04gUFJPUEVSVElFUyAoa2VhbnVsZWUpOlxcbiAqXFxuICogaU9TIFNhZmFyaSAodGVzdGVkIG9uIGlPUyA4LjEpIGRvZXMgbm90IGhhbmRsZSBhbmltYXRpb24tZGVsYXkgdmVyeSB3ZWxsIC0gaXQgZG9lc24ndFxcbiAqIGd1YXJhbnRlZSB0aGF0IHRoZSBhbmltYXRpb24gd2lsbCBzdGFydCBfZXhhY3RseV8gYWZ0ZXIgdGhhdCB2YWx1ZS4gU28gd2UgYXZvaWQgdXNpbmdcXG4gKiBhbmltYXRpb24tZGVsYXkgYW5kIGluc3RlYWQgc2V0IGN1c3RvbSBrZXlmcmFtZXMgZm9yIGVhY2ggY29sb3IgKGFzIHJlZHVuZGFudCBhcyBpdFxcbiAqIHNlZW1zKS5cXG4gKlxcbiAqIFdlIHdyaXRlIG91dCBlYWNoIGFuaW1hdGlvbiBpbiBmdWxsIChpbnN0ZWFkIG9mIHNlcGFyYXRpbmcgYW5pbWF0aW9uLW5hbWUsXFxuICogYW5pbWF0aW9uLWR1cmF0aW9uLCBldGMuKSBiZWNhdXNlIHVuZGVyIHRoZSBwb2x5ZmlsbCwgU2FmYXJpIGRvZXMgbm90IHJlY29nbml6ZSB0aG9zZVxcbiAqIHNwZWNpZmljIHByb3BlcnRpZXMgcHJvcGVybHksIHRyZWF0cyB0aGVtIGFzIC13ZWJraXQtYW5pbWF0aW9uLCBhbmQgb3ZlcnJpZGVzIHRoZVxcbiAqIG90aGVyIGFuaW1hdGlvbiBydWxlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5bWVyL3BsYXRmb3JtL2lzc3Vlcy81My5cXG4gKi9cXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItYmx1ZSB7XFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGJsdWUtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGJsdWUtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG59XFxuXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXJlZCB7XFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIHJlZC1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgcmVkLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxufVxcblxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci15ZWxsb3cge1xcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xcbiAgLXdlYmtpdC1hbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCB5ZWxsb3ctZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIHllbGxvdy1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbn1cXG5cXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItZ3JlZW4ge1xcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xcbiAgLXdlYmtpdC1hbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBncmVlbi1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgZ3JlZW4tZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG59XFxuXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllcixcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItYmx1ZS1vbmx5LFxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1yZWQtb25seSxcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXIteWVsbG93LW9ubHksXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLWdyZWVuLW9ubHkge1xcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xcbiAgb3BhY2l0eTogMTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBmaWxsLXVuZmlsbC1yb3RhdGUge1xcbiAgMTIuNSUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7XFxuICB9IC8qIDAuNSAqIEFSQ1NJWkUgKi9cXG4gIDI1JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcXG4gIH0gLyogMSAgICogQVJDU0laRSAqL1xcbiAgMzcuNSUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQwNWRlZyk7XFxuICB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cXG4gIDUwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNTQwZGVnKTtcXG4gIH0gLyogMiAgICogQVJDU0laRSAqL1xcbiAgNjIuNSUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDY3NWRlZyk7XFxuICB9IC8qIDIuNSAqIEFSQ1NJWkUgKi9cXG4gIDc1JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoODEwZGVnKTtcXG4gIH0gLyogMyAgICogQVJDU0laRSAqL1xcbiAgODcuNSUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDk0NWRlZyk7XFxuICB9IC8qIDMuNSAqIEFSQ1NJWkUgKi9cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKTtcXG4gIH0gLyogNCAgICogQVJDU0laRSAqL1xcbn1cXG5Aa2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7XFxuICAxMi41JSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7XFxuICB9IC8qIDAuNSAqIEFSQ1NJWkUgKi9cXG4gIDI1JSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XFxuICB9IC8qIDEgICAqIEFSQ1NJWkUgKi9cXG4gIDM3LjUlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDA1ZGVnKTtcXG4gIH0gLyogMS41ICogQVJDU0laRSAqL1xcbiAgNTAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNTQwZGVnKTtcXG4gIH0gLyogMiAgICogQVJDU0laRSAqL1xcbiAgNjIuNSUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg2NzVkZWcpO1xcbiAgfSAvKiAyLjUgKiBBUkNTSVpFICovXFxuICA3NSUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg4MTBkZWcpO1xcbiAgfSAvKiAzICAgKiBBUkNTSVpFICovXFxuICA4Ny41JSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDk0NWRlZyk7XFxuICB9IC8qIDMuNSAqIEFSQ1NJWkUgKi9cXG4gIHRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZyk7XFxuICB9IC8qIDQgICAqIEFSQ1NJWkUgKi9cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIGJsdWUtZmFkZS1pbi1vdXQge1xcbiAgZnJvbSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAyNSUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgMjYlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDg5JSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICA5MCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgYmx1ZS1mYWRlLWluLW91dCB7XFxuICBmcm9tIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDI1JSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAyNiUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgODklIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDkwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIHJlZC1mYWRlLWluLW91dCB7XFxuICBmcm9tIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDE1JSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICAyNSUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDUxJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgcmVkLWZhZGUtaW4tb3V0IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgMTUlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDI1JSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICA1MCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgNTElIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIHllbGxvdy1mYWRlLWluLW91dCB7XFxuICBmcm9tIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDQwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICA1MCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgNzUlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDc2JSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgeWVsbG93LWZhZGUtaW4tb3V0IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgNDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICA3NSUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgNzYlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIGdyZWVuLWZhZGUtaW4tb3V0IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgNjUlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDc1JSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICA5MCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgZ3JlZW4tZmFkZS1pbi1vdXQge1xcbiAgZnJvbSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICA2NSUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgNzUlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDkwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuLyoqXFxuICogUGF0Y2ggdGhlIGdhcCB0aGF0IGFwcGVhciBiZXR3ZWVuIHRoZSB0d28gYWRqYWNlbnQgZGl2LmNpcmNsZS1jbGlwcGVyIHdoaWxlIHRoZVxcbiAqIHNwaW5uZXIgaXMgcm90YXRpbmcgKGFwcGVhcnMgb24gQ2hyb21lIDM4LCBTYWZhcmkgNy4xLCBhbmQgSUUgMTEpLlxcbiAqL1xcbi5nYXAtcGF0Y2gge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogNDUlO1xcbiAgd2lkdGg6IDEwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XFxufVxcblxcbi5nYXAtcGF0Y2ggLmNpcmNsZSB7XFxuICB3aWR0aDogMTAwMCU7XFxuICBsZWZ0OiAtNDUwJTtcXG59XFxuXFxuLmNpcmNsZS1jbGlwcGVyIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiA1MCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xcbn1cXG4uY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7XFxuICB3aWR0aDogMjAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGJvcmRlci13aWR0aDogM3B4OyAvKiBTVFJPS0VXSURUSCAqL1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZTtcXG4gIGFuaW1hdGlvbjogbm9uZTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbn1cXG4uY2lyY2xlLWNsaXBwZXIubGVmdCAuY2lyY2xlIHtcXG4gIGxlZnQ6IDA7XFxuICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xcbn1cXG4uY2lyY2xlLWNsaXBwZXIucmlnaHQgLmNpcmNsZSB7XFxuICBsZWZ0OiAtMTAwJTtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTI5ZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKC0xMjlkZWcpO1xcbn1cXG5cXG4uYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUge1xcbiAgLyogZHVyYXRpb246IEFSQ1RJTUUgKi9cXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBsZWZ0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG4gIGFuaW1hdGlvbjogbGVmdC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxufVxcblxcbi5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLnJpZ2h0IC5jaXJjbGUge1xcbiAgLyogZHVyYXRpb246IEFSQ1RJTUUgKi9cXG4gIC13ZWJraXQtYW5pbWF0aW9uOiByaWdodC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxuICBhbmltYXRpb246IHJpZ2h0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIGxlZnQtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpO1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZyk7XFxuICB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBsZWZ0LXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDEzMGRlZyk7XFxuICB9XFxuICA1MCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZyk7XFxuICB9XFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDEzMGRlZyk7XFxuICB9XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyByaWdodC1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpO1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyByaWdodC1zcGluIHtcXG4gIGZyb20ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDVkZWcpO1xcbiAgfVxcbiAgdG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTtcXG4gIH1cXG59XFxuI3NwaW5uZXJDb250YWluZXIuY29vbGRvd24ge1xcbiAgLyogZHVyYXRpb246IFNIUklOS19USU1FICovXFxuICAtd2Via2l0LWFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSAxNTY4bXMgbGluZWFyIGluZmluaXRlLCBmYWRlLW91dCA0MDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlLW91dCB7XFxuICBmcm9tIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYWRlLW91dCB7XFxuICBmcm9tIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuLnByb2dyZXNzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogNHB4O1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhY2VjZTY7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBtYXJnaW46IDAuMzMzMzMzMzMzM3JlbSAwIDAuNjY2NjY2NjY2N3JlbSAwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLnByb2dyZXNzIC5kZXRlcm1pbmF0ZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgbGluZWFyO1xcbn1cXG4ucHJvZ3Jlc3MgLmluZGV0ZXJtaW5hdGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG59XFxuLnByb2dyZXNzIC5pbmRldGVybWluYXRlOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgd2lsbC1jaGFuZ2U6IGxlZnQsIHJpZ2h0O1xcbiAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlIDIuMXMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuODE1LCAwLjczNSwgMC4zOTUpIGluZmluaXRlO1xcbn1cXG4ucHJvZ3Jlc3MgLmluZGV0ZXJtaW5hdGU6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIHdpbGwtY2hhbmdlOiBsZWZ0LCByaWdodDtcXG4gIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1zaG9ydCAyLjFzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSkgaW5maW5pdGU7XFxuICBhbmltYXRpb24tZGVsYXk6IDEuMTVzO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUge1xcbiAgMCUge1xcbiAgICBsZWZ0OiAtMzUlO1xcbiAgICByaWdodDogMTAwJTtcXG4gIH1cXG4gIDYwJSB7XFxuICAgIGxlZnQ6IDEwMCU7XFxuICAgIHJpZ2h0OiAtOTAlO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIGxlZnQ6IDEwMCU7XFxuICAgIHJpZ2h0OiAtOTAlO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc2hvcnQge1xcbiAgMCUge1xcbiAgICBsZWZ0OiAtMjAwJTtcXG4gICAgcmlnaHQ6IDEwMCU7XFxuICB9XFxuICA2MCUge1xcbiAgICBsZWZ0OiAxMDclO1xcbiAgICByaWdodDogLTglO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIGxlZnQ6IDEwNyU7XFxuICAgIHJpZ2h0OiAtOCU7XFxuICB9XFxufVxcbi5mbGFzaC1tZXNzYWdlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHBhZGRpbmc6IDJweCAxMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgei1pbmRleDogOTk5OTk7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG59XFxuLmZsYXNoLW1lc3NhZ2UuaW5mbyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmVkZGJlO1xcbiAgYm9yZGVyOiAxcHggc29saWQgIzcyOGY3MjtcXG59XFxuLmZsYXNoLW1lc3NhZ2Uud2FybiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVlNmQwO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2VhN2QxNztcXG59XFxuLmZsYXNoLW1lc3NhZ2UuZXJyb3Ige1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1YjJiYztcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMzMyNTc7XFxufVxcblxcbkBrZXlmcmFtZXMgbWVzc2FnZUluIHtcXG4gIGZyb20ge1xcbiAgICByaWdodDogODAlO1xcbiAgfVxcbiAgdG8ge1xcbiAgICByaWdodDogMDtcXG4gIH1cXG59XFxuLnB1bHNlIHtcXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4ucHVsc2U6OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcXG4gIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MsIHRyYW5zZm9ybSAwLjNzO1xcbiAgYW5pbWF0aW9uOiBwdWxzZS1hbmltYXRpb24gMXMgY3ViaWMtYmV6aWVyKDAuMjQsIDAsIDAuMzgsIDEpIGluZmluaXRlO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHB1bHNlLWFuaW1hdGlvbiB7XFxuICAwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxuICB9XFxuICA1MCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpO1xcbiAgfVxcbn1cXG4uZHJvcGRvd24tY29udGVudCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgbWFyZ2luOiAwO1xcbiAgZGlzcGxheTogZmxvdztcXG4gIG1pbi13aWR0aDogMTAwcHg7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIHotaW5kZXg6IDk5OTk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxufVxcbi5kcm9wZG93bi1jb250ZW50OmZvY3VzIHtcXG4gIG91dGxpbmU6IDA7XFxufVxcbi5kcm9wZG93bi1jb250ZW50IGxpIHtcXG4gIGNsZWFyOiBib3RoO1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBtaW4taGVpZ2h0OiA1MHB4O1xcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG59XFxuLmRyb3Bkb3duLWNvbnRlbnQgbGk6aG92ZXIsIC5kcm9wZG93bi1jb250ZW50IGxpLmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xcbn1cXG4uZHJvcGRvd24tY29udGVudCBsaTpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lO1xcbn1cXG4uZHJvcGRvd24tY29udGVudCBsaS5kaXZpZGVyIHtcXG4gIG1pbi1oZWlnaHQ6IDA7XFxuICBoZWlnaHQ6IDFweDtcXG59XFxuLmRyb3Bkb3duLWNvbnRlbnQgbGkgPiBhLCAuZHJvcGRvd24tY29udGVudCBsaSA+IHNwYW4ge1xcbiAgZm9udC1zaXplOiAxNnB4O1xcbiAgY29sb3I6ICMyNmE2OWE7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbiAgcGFkZGluZzogMTRweCAxNnB4O1xcbn1cXG4uZHJvcGRvd24tY29udGVudCBsaSA+IHNwYW4gPiBsYWJlbCB7XFxuICB0b3A6IDFweDtcXG4gIGxlZnQ6IDA7XFxuICBoZWlnaHQ6IDE4cHg7XFxufVxcbi5kcm9wZG93bi1jb250ZW50IGxpID4gYSA+IGkge1xcbiAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBmbG9hdDogbGVmdDtcXG4gIG1hcmdpbjogMCAyNHB4IDAgMDtcXG4gIHdpZHRoOiAyNHB4O1xcbn1cXG5cXG5ib2R5LmtleWJvYXJkLWZvY3VzZWQgLmRyb3Bkb3duLWNvbnRlbnQgbGk6Zm9jdXMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RhZGFkYTtcXG59XFxuXFxuLmlucHV0LWZpZWxkLmNvbCAuZHJvcGRvd24tY29udGVudCBbdHlwZT1jaGVja2JveF0gKyBsYWJlbCB7XFxuICB0b3A6IDFweDtcXG4gIGxlZnQ6IDA7XFxuICBoZWlnaHQ6IDE4cHg7XFxuICB0cmFuc2Zvcm06IG5vbmU7XFxufVxcblxcbi5kcm9wZG93bi10cmlnZ2VyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxubmF2IHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwY2FmOTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XFxufVxcbm5hdi5uYXYtZXh0ZW5kZWQge1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG5uYXYubmF2LWV4dGVuZGVkIC5uYXYtd3JhcHBlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIG1pbi1oZWlnaHQ6IDU2cHg7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbm5hdi5uYXYtZXh0ZW5kZWQgLm5hdi1jb250ZW50IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFxufVxcbm5hdiBhIHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5uYXYgaSxcXG5uYXYgW2NsYXNzXj1tZGktXSwgbmF2IFtjbGFzcyo9bWRpLV0sXFxubmF2IGkucy1pY29ucyB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGZvbnQtc2l6ZTogMjRweDtcXG4gIGhlaWdodDogNTZweDtcXG4gIGxpbmUtaGVpZ2h0OiA1NnB4O1xcbn1cXG5uYXYgLm5hdi13cmFwcGVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcXG4gIG5hdiBhLnNpZGVuYXYtdHJpZ2dlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcbm5hdiAuc2lkZW5hdi10cmlnZ2VyIHtcXG4gIGZsb2F0OiBsZWZ0O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG4gIGhlaWdodDogNTZweDtcXG4gIG1hcmdpbjogMCAxOHB4O1xcbn1cXG5uYXYgLnNpZGVuYXYtdHJpZ2dlciBpIHtcXG4gIGhlaWdodDogNTZweDtcXG4gIGxpbmUtaGVpZ2h0OiA1NnB4O1xcbn1cXG5uYXYgLmJyYW5kLWxvZ28ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29sb3I6ICNmZmY7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmb250LXNpemU6IDIuMXJlbTtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbm5hdiAuYnJhbmQtbG9nbyBpbWcuY2lyY2xlIHtcXG4gIGhlaWdodDogMzJweDtcXG4gIHdpZHRoOiAzMnB4O1xcbn1cXG5uYXYgLmJyYW5kLWxvZ28uY2VudGVyIHtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogOTkycHgpIHtcXG4gIG5hdiAuYnJhbmQtbG9nbyB7XFxuICAgIGxlZnQ6IDUwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbiAgfVxcbiAgbmF2IC5icmFuZC1sb2dvLmxlZnQsIG5hdiAuYnJhbmQtbG9nby5yaWdodCB7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHRyYW5zZm9ybTogbm9uZTtcXG4gIH1cXG4gIG5hdiAuYnJhbmQtbG9nby5sZWZ0IHtcXG4gICAgbGVmdDogMC41cmVtO1xcbiAgfVxcbiAgbmF2IC5icmFuZC1sb2dvLnJpZ2h0IHtcXG4gICAgcmlnaHQ6IDAuNXJlbTtcXG4gICAgbGVmdDogYXV0bztcXG4gIH1cXG59XFxubmF2IC5icmFuZC1sb2dvLnJpZ2h0IHtcXG4gIHJpZ2h0OiAwLjVyZW07XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5uYXYgLmJyYW5kLWxvZ28gaSxcXG5uYXYgLmJyYW5kLWxvZ28gW2NsYXNzXj1tZGktXSwgbmF2IC5icmFuZC1sb2dvIFtjbGFzcyo9bWRpLV0sXFxubmF2IC5icmFuZC1sb2dvIGkucy1pY29ucyB7XFxuICBmbG9hdDogbGVmdDtcXG4gIG1hcmdpbi1yaWdodDogMTVweDtcXG59XFxubmF2IC5uYXYtdGl0bGUge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgZm9udC1zaXplOiAzMnB4O1xcbiAgcGFkZGluZzogMjhweCAwO1xcbn1cXG5uYXYgdWwge1xcbiAgbWFyZ2luOiAwO1xcbn1cXG5uYXYgdWwgbGkge1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5uYXYgdWwgbGkuYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxubmF2IHVsIGEge1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgY29sb3I6ICNmZmY7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBhZGRpbmc6IDAgMTVweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxubmF2IHVsIGEuYnRuLCBuYXYgdWwgYS5idG4tc21hbGwsIG5hdiB1bCBhLmJ0bi1sYXJnZSwgbmF2IHVsIGEuYnRuLWZsYXQsIG5hdiB1bCBhLmJ0bi1mbG9hdGluZyB7XFxuICBtYXJnaW4tdG9wOiAtMnB4O1xcbiAgbWFyZ2luLWxlZnQ6IDE1cHg7XFxuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XFxufVxcbm5hdiB1bCBhLmJ0biA+IC5tYXRlcmlhbC1pY29ucywgbmF2IHVsIGEuYnRuLXNtYWxsID4gLm1hdGVyaWFsLWljb25zLCBuYXYgdWwgYS5idG4tbGFyZ2UgPiAubWF0ZXJpYWwtaWNvbnMsIG5hdiB1bCBhLmJ0bi1mbGF0ID4gLm1hdGVyaWFsLWljb25zLCBuYXYgdWwgYS5idG4tZmxvYXRpbmcgPiAubWF0ZXJpYWwtaWNvbnMge1xcbiAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxufVxcbm5hdiB1bCBhOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxubmF2IHVsLmxlZnQge1xcbiAgZmxvYXQ6IGxlZnQ7XFxufVxcbm5hdiBmb3JtIHtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxubmF2IC5pbnB1dC1maWVsZCB7XFxuICBtYXJnaW46IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbm5hdiAuaW5wdXQtZmllbGQgaW5wdXQge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZm9udC1zaXplOiAxLjJyZW07XFxuICBib3JkZXI6IG5vbmU7XFxuICBwYWRkaW5nLWxlZnQ6IDJyZW07XFxufVxcbm5hdiAuaW5wdXQtZmllbGQgaW5wdXQ6Zm9jdXMsIG5hdiAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT10ZXh0XTp2YWxpZCwgbmF2IC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXBhc3N3b3JkXTp2YWxpZCwgbmF2IC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPWVtYWlsXTp2YWxpZCwgbmF2IC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXVybF06dmFsaWQsIG5hdiAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1kYXRlXTp2YWxpZCB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3gtc2hhZG93OiBub25lO1xcbn1cXG5uYXYgLmlucHV0LWZpZWxkIGxhYmVsIHtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxufVxcbm5hdiAuaW5wdXQtZmllbGQgbGFiZWwgaSB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4zcztcXG59XFxubmF2IC5pbnB1dC1maWVsZCBsYWJlbC5hY3RpdmUgaSB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLm5hdmJhci1maXhlZCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICB6LWluZGV4OiA5OTc7XFxufVxcbi5uYXZiYXItZml4ZWQgbmF2IHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogNjAxcHgpIHtcXG4gIG5hdi5uYXYtZXh0ZW5kZWQgLm5hdi13cmFwcGVyIHtcXG4gICAgbWluLWhlaWdodDogNjRweDtcXG4gIH1cXG4gIG5hdiwgbmF2IC5uYXYtd3JhcHBlciBpLCBuYXYgYS5zaWRlbmF2LXRyaWdnZXIsIG5hdiBhLnNpZGVuYXYtdHJpZ2dlciBpIHtcXG4gICAgaGVpZ2h0OiA2NHB4O1xcbiAgICBsaW5lLWhlaWdodDogNjRweDtcXG4gIH1cXG4gIC5uYXZiYXItZml4ZWQge1xcbiAgICBoZWlnaHQ6IDY0cHg7XFxuICB9XFxufVwiLFwiQGltcG9ydCBcXFwiLi9jb2xvcnNWYXJzXFxcIjtcXHJcXG5cXHJcXG5AZWFjaCAkY29sb3JfbmFtZSwgJGNvbG9yIGluICRjb2xvcnMge1xcclxcbiAgQGVhY2ggJGNvbG9yX3R5cGUsICRjb2xvcl92YWx1ZSBpbiAkY29sb3Ige1xcclxcbiAgICBAaWYgJGNvbG9yX3R5cGUgPT0gXFxcImJhc2VcXFwiIHtcXHJcXG4gICAgICAuI3skY29sb3JfbmFtZX0ge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3ZhbHVlICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgfVxcclxcbiAgICAgIC4jeyRjb2xvcl9uYW1lfS10ZXh0IHtcXHJcXG4gICAgICAgIGNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcXHJcXG4gICAgICB9XFxyXFxuICAgICAgLiN7JGNvbG9yX25hbWV9LXdhdmVzIC53YXZlcy1yaXBwbGUge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3ZhbHVlICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgfVxcclxcbiAgICB9IEBlbHNlIHtcXHJcXG4gICAgICAuI3skY29sb3JfbmFtZX0uI3skY29sb3JfdHlwZX0ge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3ZhbHVlICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgfVxcclxcbiAgICAgIC4jeyRjb2xvcl9uYW1lfS10ZXh0LnRleHQtI3skY29sb3JfdHlwZX0ge1xcclxcbiAgICAgICAgY29sb3I6ICRjb2xvcl92YWx1ZSAhaW1wb3J0YW50O1xcclxcbiAgICAgIH1cXHJcXG4gICAgICAuI3skY29sb3JfbmFtZX0td2F2ZXMud2F2ZXMtI3skY29sb3JfdHlwZX0gLndhdmVzLXJpcHBsZSB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gU2hhZGVWYXJzIGNsYXNzZXNcXHJcXG4kc2hhZGVzOiAoXFxyXFxuICBcXFwiYmxhY2tcXFwiOiAjMDAwMDAwLFxcclxcbiAgXFxcIndoaXRlXFxcIjogI2ZmZmZmZixcXHJcXG4gIFxcXCJ0cmFuc3BhcmVudFxcXCI6IHRyYW5zcGFyZW50XFxyXFxuKTtcXHJcXG4vLyBTaGFkZSBjbGFzc2VzXFxyXFxuQGVhY2ggJGNvbG9yLCAkY29sb3JfdmFsdWUgaW4gJHNoYWRlcyB7XFxyXFxuICAuI3skY29sb3J9IHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3ZhbHVlICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxuICAuI3skY29sb3J9LXRleHQge1xcclxcbiAgICBjb2xvcjogJGNvbG9yX3ZhbHVlICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcblxcclxcblxcclxcbi8vIHVzYWdlOiBjb2xvcihcXFwibmFtZV9vZl9jb2xvclxcXCIsIFxcXCJ0eXBlX29mX2NvbG9yXFxcIilcXHJcXG4vLyB0byBhdm9pZCB0byByZXBlYXRpbmcgbWFwLWdldCgkY29sb3JzLCAuLi4pXFxyXFxuXFxyXFxuQGZ1bmN0aW9uIGNvbG9yKCRjb2xvciwgJHR5cGUpIHtcXHJcXG4gIEBpZiBtYXAtaGFzLWtleSgkY29sb3JzLCAkY29sb3IpIHtcXHJcXG4gICAgJGN1cnJfY29sb3I6IG1hcC1nZXQoJGNvbG9ycywgJGNvbG9yKTtcXHJcXG4gICAgQGlmIG1hcC1oYXMta2V5KCRjdXJyX2NvbG9yLCAkdHlwZSkge1xcclxcbiAgICAgIEByZXR1cm4gbWFwLWdldCgkY3Vycl9jb2xvciwgJHR5cGUpO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICBAd2FybiBcXFwiVW5rbm93biBgI3skY29sb3J9YCAtIGAjeyR0eXBlfWAgaW4gJGNvbG9ycy5cXFwiO1xcclxcbiAgQHJldHVybiBudWxsO1xcclxcbn1cXHJcXG5cIixcIi8qKlxcclxcbiAqIHByaXNtLmpzIFR3aWxpZ2h0IHRoZW1lXFxyXFxuICogQmFzZWQgKG1vcmUgb3IgbGVzcykgb24gdGhlIFR3aWxpZ2h0IHRoZW1lIG9yaWdpbmFsbHkgb2YgVGV4dG1hdGUgZmFtZS5cXHJcXG4gKiBAYXV0aG9yIFJlbXkgQmFjaFxcclxcbiAqL1xcclxcbiBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0sXFxyXFxuIHByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIHtcXHJcXG5cXHQgY29sb3I6IHdoaXRlO1xcclxcblxcdCBiYWNrZ3JvdW5kOiBub25lO1xcclxcblxcdCBmb250LWZhbWlseTogQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlO1xcclxcblxcdCB0ZXh0LWFsaWduOiBsZWZ0O1xcclxcblxcdCB0ZXh0LXNoYWRvdzogMCAtLjFlbSAuMmVtIGJsYWNrO1xcclxcblxcdCB3aGl0ZS1zcGFjZTogcHJlO1xcclxcblxcdCB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcXHJcXG5cXHQgd29yZC1icmVhazogbm9ybWFsO1xcclxcblxcdCB3b3JkLXdyYXA6IG5vcm1hbDtcXHJcXG5cXHQgbGluZS1oZWlnaHQ6IDEuNTtcXHJcXG4gXFxyXFxuXFx0IC1tb3otdGFiLXNpemU6IDQ7XFxyXFxuXFx0IC1vLXRhYi1zaXplOiA0O1xcclxcblxcdCB0YWItc2l6ZTogNDtcXHJcXG4gXFxyXFxuXFx0IC13ZWJraXQtaHlwaGVuczogbm9uZTtcXHJcXG5cXHQgLW1vei1oeXBoZW5zOiBub25lO1xcclxcblxcdCAtbXMtaHlwaGVuczogbm9uZTtcXHJcXG5cXHQgaHlwaGVuczogbm9uZTtcXHJcXG4gfVxcclxcbiBcXHJcXG4gcHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0sXFxyXFxuIDpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSB7XFxyXFxuXFx0IGJhY2tncm91bmQ6IGhzbCgwLCAwJSwgOCUpOyAvKiAjMTQxNDE0ICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIC8qIENvZGUgYmxvY2tzICovXFxyXFxuIHByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIHtcXHJcXG5cXHQgYm9yZGVyLXJhZGl1czogLjVlbTtcXHJcXG5cXHQgYm9yZGVyOiAuM2VtIHNvbGlkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzI4MkEyQiAqL1xcclxcblxcdCBib3gtc2hhZG93OiAxcHggMXB4IC41ZW0gYmxhY2sgaW5zZXQ7XFxyXFxuXFx0IG1hcmdpbjogLjVlbSAwO1xcclxcblxcdCBvdmVyZmxvdzogYXV0bztcXHJcXG5cXHQgcGFkZGluZzogMWVtO1xcclxcbiB9XFxyXFxuIFxcclxcbiBwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXTo6LW1vei1zZWxlY3Rpb24ge1xcclxcblxcdCAvKiBGaXJlZm94ICovXFxyXFxuXFx0IGJhY2tncm91bmQ6IGhzbCgyMDAsIDQlLCAxNiUpOyAvKiAjMjgyQTJCICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIHByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdOjpzZWxlY3Rpb24ge1xcclxcblxcdCAvKiBTYWZhcmkgKi9cXHJcXG5cXHQgYmFja2dyb3VuZDogaHNsKDIwMCwgNCUsIDE2JSk7IC8qICMyODJBMkIgKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gLyogVGV4dCBTZWxlY3Rpb24gY29sb3VyICovXFxyXFxuIHByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdOjotbW96LXNlbGVjdGlvbiwgcHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0gOjotbW96LXNlbGVjdGlvbixcXHJcXG4gY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdOjotbW96LXNlbGVjdGlvbiwgY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIDo6LW1vei1zZWxlY3Rpb24ge1xcclxcblxcdCB0ZXh0LXNoYWRvdzogbm9uZTtcXHJcXG5cXHQgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTMlLCAwLjE1KTsgLyogI0VERURFRCAqL1xcclxcbiB9XFxyXFxuIFxcclxcbiBwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXTo6c2VsZWN0aW9uLCBwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSA6OnNlbGVjdGlvbixcXHJcXG4gY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdOjpzZWxlY3Rpb24sIGNvZGVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSA6OnNlbGVjdGlvbiB7XFxyXFxuXFx0IHRleHQtc2hhZG93OiBub25lO1xcclxcblxcdCBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCA5MyUsIDAuMTUpOyAvKiAjRURFREVEICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIC8qIElubGluZSBjb2RlICovXFxyXFxuIDpub3QocHJlKSA+IGNvZGVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSB7XFxyXFxuXFx0IGJvcmRlci1yYWRpdXM6IC4zZW07XFxyXFxuXFx0IGJvcmRlcjogLjEzZW0gc29saWQgaHNsKDAsIDAlLCAzMyUpOyAvKiAjNTQ1NDU0ICovXFxyXFxuXFx0IGJveC1zaGFkb3c6IDFweCAxcHggLjNlbSAtLjFlbSBibGFjayBpbnNldDtcXHJcXG5cXHQgcGFkZGluZzogLjE1ZW0gLjJlbSAuMDVlbTtcXHJcXG5cXHQgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXHJcXG4gfVxcclxcbiBcXHJcXG4gLnRva2VuLmNvbW1lbnQsXFxyXFxuIC50b2tlbi5wcm9sb2csXFxyXFxuIC50b2tlbi5kb2N0eXBlLFxcclxcbiAudG9rZW4uY2RhdGEge1xcclxcblxcdCBjb2xvcjogaHNsKDAsIDAlLCA0NyUpOyAvKiAjNzc3Nzc3ICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIC50b2tlbi5wdW5jdHVhdGlvbiB7XFxyXFxuXFx0IG9wYWNpdHk6IC43O1xcclxcbiB9XFxyXFxuIFxcclxcbiAubmFtZXNwYWNlIHtcXHJcXG5cXHQgb3BhY2l0eTogLjc7XFxyXFxuIH1cXHJcXG4gXFxyXFxuIC50b2tlbi50YWcsXFxyXFxuIC50b2tlbi5ib29sZWFuLFxcclxcbiAudG9rZW4ubnVtYmVyLFxcclxcbiAudG9rZW4uZGVsZXRlZCB7XFxyXFxuXFx0IGNvbG9yOiBoc2woMTQsIDU4JSwgNTUlKTsgLyogI0NGNkE0QyAqL1xcclxcbiB9XFxyXFxuIFxcclxcbiAudG9rZW4ua2V5d29yZCxcXHJcXG4gLnRva2VuLnByb3BlcnR5LFxcclxcbiAudG9rZW4uc2VsZWN0b3IsXFxyXFxuIC50b2tlbi5jb25zdGFudCxcXHJcXG4gLnRva2VuLnN5bWJvbCxcXHJcXG4gLnRva2VuLmJ1aWx0aW4ge1xcclxcblxcdCBjb2xvcjogaHNsKDUzLCA4OSUsIDc5JSk7IC8qICNGOUVFOTggKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gLnRva2VuLmF0dHItbmFtZSxcXHJcXG4gLnRva2VuLmF0dHItdmFsdWUsXFxyXFxuIC50b2tlbi5zdHJpbmcsXFxyXFxuIC50b2tlbi5jaGFyLFxcclxcbiAudG9rZW4ub3BlcmF0b3IsXFxyXFxuIC50b2tlbi5lbnRpdHksXFxyXFxuIC50b2tlbi51cmwsXFxyXFxuIC5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZyxcXHJcXG4gLnN0eWxlIC50b2tlbi5zdHJpbmcsXFxyXFxuIC50b2tlbi52YXJpYWJsZSxcXHJcXG4gLnRva2VuLmluc2VydGVkIHtcXHJcXG5cXHQgY29sb3I6IGhzbCg3NiwgMjElLCA1MiUpOyAvKiAjOEY5RDZBICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIC50b2tlbi5hdHJ1bGUge1xcclxcblxcdCBjb2xvcjogaHNsKDIxOCwgMjIlLCA1NSUpOyAvKiAjNzU4N0E2ICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIC50b2tlbi5yZWdleCxcXHJcXG4gLnRva2VuLmltcG9ydGFudCB7XFxyXFxuXFx0IGNvbG9yOiBoc2woNDIsIDc1JSwgNjUlKTsgLyogI0U5QzA2MiAqL1xcclxcbiB9XFxyXFxuIFxcclxcbiAudG9rZW4uaW1wb3J0YW50LFxcclxcbiAudG9rZW4uYm9sZCB7XFxyXFxuXFx0IGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiB9XFxyXFxuIC50b2tlbi5pdGFsaWMge1xcclxcblxcdCBmb250LXN0eWxlOiBpdGFsaWM7XFxyXFxuIH1cXHJcXG4gXFxyXFxuIC50b2tlbi5lbnRpdHkge1xcclxcblxcdCBjdXJzb3I6IGhlbHA7XFxyXFxuIH1cXHJcXG4gXFxyXFxuIHByZVtkYXRhLWxpbmVdIHtcXHJcXG5cXHQgcGFkZGluZzogMWVtIDAgMWVtIDNlbTtcXHJcXG5cXHQgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiB9XFxyXFxuIFxcclxcbiAvKiBNYXJrdXAgKi9cXHJcXG4gLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4udGFnLFxcclxcbiAubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi5hdHRyLW5hbWUsXFxyXFxuIC5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLnB1bmN0dWF0aW9uIHtcXHJcXG5cXHQgY29sb3I6IGhzbCgzMywgMzMlLCA1MiUpOyAvKiAjQUM4ODVCICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIC8qIE1ha2UgdGhlIHRva2VucyBzaXQgYWJvdmUgdGhlIGxpbmUgaGlnaGxpZ2h0IHNvIHRoZSBjb2xvdXJzIGRvbid0IGxvb2sgZmFkZWQuICovXFxyXFxuIC50b2tlbiB7XFxyXFxuXFx0IHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG5cXHQgei1pbmRleDogMTtcXHJcXG4gfVxcclxcbiBcXHJcXG4gLmxpbmUtaGlnaGxpZ2h0IHtcXHJcXG5cXHQgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgMzMlLCAwLjI1KTsgLyogIzU0NTQ1NCAqL1xcclxcblxcdCBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIGhzbGEoMCwgMCUsIDMzJSwgLjEpIDcwJSwgaHNsYSgwLCAwJSwgMzMlLCAwKSk7IC8qICM1NDU0NTQgKi9cXHJcXG5cXHQgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCBoc2woMCwgMCUsIDMzJSk7IC8qICM1NDU0NTQgKi9cXHJcXG5cXHQgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCBoc2woMCwgMCUsIDMzJSk7IC8qICM1NDU0NTQgKi9cXHJcXG5cXHQgbGVmdDogMDtcXHJcXG5cXHQgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxyXFxuXFx0IG1hcmdpbi10b3A6IDAuNzVlbTsgLyogU2FtZSBhcyAucHJpc23igJlzIHBhZGRpbmctdG9wICovXFxyXFxuXFx0IHBhZGRpbmc6IGluaGVyaXQgMDtcXHJcXG5cXHQgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxyXFxuXFx0IHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG5cXHQgcmlnaHQ6IDA7XFxyXFxuXFx0IHdoaXRlLXNwYWNlOiBwcmU7XFxyXFxuXFx0IHotaW5kZXg6IDA7XFxyXFxuIH1cXHJcXG4gXFxyXFxuIC5saW5lLWhpZ2hsaWdodDpiZWZvcmUsXFxyXFxuIC5saW5lLWhpZ2hsaWdodFtkYXRhLWVuZF06YWZ0ZXIge1xcclxcblxcdCBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjE1LCAxNSUsIDU5JSk7IC8qICM4Nzk0QTYgKi9cXHJcXG5cXHQgYm9yZGVyLXJhZGl1czogOTk5cHg7XFxyXFxuXFx0IGJveC1zaGFkb3c6IDAgMXB4IHdoaXRlO1xcclxcblxcdCBjb2xvcjogaHNsKDI0LCAyMCUsIDk1JSk7IC8qICNGNUYyRjAgKi9cXHJcXG5cXHQgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXHJcXG5cXHQgZm9udDogYm9sZCA2NSUvMS41IHNhbnMtc2VyaWY7XFxyXFxuXFx0IGxlZnQ6IC42ZW07XFxyXFxuXFx0IG1pbi13aWR0aDogMWVtO1xcclxcblxcdCBwYWRkaW5nOiAwIC41ZW07XFxyXFxuXFx0IHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG5cXHQgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcblxcdCB0ZXh0LXNoYWRvdzogbm9uZTtcXHJcXG5cXHQgdG9wOiAuNGVtO1xcclxcblxcdCB2ZXJ0aWNhbC1hbGlnbjogLjNlbTtcXHJcXG4gfVxcclxcbiBcXHJcXG4gLmxpbmUtaGlnaGxpZ2h0W2RhdGEtZW5kXTphZnRlciB7XFxyXFxuXFx0IGJvdHRvbTogLjRlbTtcXHJcXG5cXHQgY29udGVudDogYXR0cihkYXRhLWVuZCk7XFxyXFxuXFx0IHRvcDogYXV0bztcXHJcXG4gfVxcclxcbiBcIixcIkBpbXBvcnQgJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1VYnVudHUnO1xcclxcblxcclxcblxcclxcblxcclxcbi53aW5kb3cge1xcclxcbiAgZm9udC1mYW1pbHk6ICdVYnVudHUnLCBzYW5zLXNlcmlmOyBcXHJcXG4gIGZvbnQtc2l6ZSA6IDE3cHggO1xcclxcbiAgd2lkdGggOiA2MDBweCA7IFxcclxcbiAgbWFyZ2luIDogNzVweCBhdXRvIDsgXFxyXFxuICBiYWNrZ3JvdW5kIDogIzJjM2U1MDsgXFxyXFxuICBoZWlnaHQgOiAzNTBweCA7IFxcclxcbiAgYm9yZGVyLXJhZGl1cyA6IDVweCA7XFxyXFxuICBkaXNwbGF5IDogcmVsYXRpdmUgOyBcXHJcXG4gICBib3gtc2hhZG93OiAxMHB4IDEwcHggMTBweCAgIzg4ODg4ODtcXHJcXG59XFxyXFxuXFxyXFxuLmFmdGVyY2xvc2Uge1xcclxcbiAgICBjb2xvciA6ICMzNDQ5NWUgOyBcXHJcXG4gICAgZGlzcGxheTogbm9uZSAgOyBcXHJcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyICA7IFxcclxcbn1cXHJcXG5cXHJcXG4ub3BlbiB7XFxyXFxuICAgIGNvbG9yIDogI2ZmZiA7IFxcclxcbiAgICBwYWRkaW5nIDogMTVweCA7IFxcclxcbiAgICBiYWNrZ3JvdW5kOiAjMmVjYzcxIDsgXFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDRweCA7IFxcclxcbiAgICBib3JkZXI6IG5vbmUgOyBcXHJcXG59XFxyXFxuXFxyXFxuLmJhc2gge1xcclxcbiAgd2lkdGggOiA2MDBweCA7IFxcclxcbiAgYmFja2dyb3VuZCA6ICMzNDQ5NWU7IFxcclxcbiAgaGVpZ2h0IDogMzEwcHggOyBcXHJcXG4gIGJvcmRlci1yYWRpdXMgOiA1cHggO1xcclxcbiAgdG9wOiA0MHB4O1xcclxcbiAgZGlzcGxheSA6IGFic29sdXRlOyBcXHJcXG4gIGNvbG9yIDogI2ZmZiA7XFxyXFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcclxcbiAgLmNvbW1hbmR7XFxyXFxuICAgICY6OmJlZm9yZXtcXHJcXG4gICAgICAgIGNvbnRlbnQ6IFxcXCJ1c2VyQG1hY2hpbmUgJCA6IFxcXCI7XFxyXFxuICAgICAgICBjb2xvcjogIzJlY2M3MTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgfVxcclxcbiAgLnJlc3VsdGF7XFxyXFxuICAgICY6OmJlZm9yZXtcXHJcXG4gICAgICAgIGNvbnRlbnQ6IFxcXCI+PlxcXCI7XFxyXFxuICAgICAgICBjb2xvcjogIzJlY2M3MTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vKiBlZmZlY3RlZCBieSBjb250cm9sbGVycyAqL1xcclxcblxcclxcbi53aW5kb3dtYXgge1xcclxcbiAgd2lkdGggOiAxMDAlIDsgXFxyXFxuICBtYXJnaW4gOiBhdXRvIDsgXFxyXFxuICBiYWNrZ3JvdW5kIDogIzJjM2U1MDsgXFxyXFxuICBoZWlnaHQgOiAxMDAwcHg7IFxcclxcbiAgYm9yZGVyLXJhZGl1cyA6IDVweCA7XFxyXFxuICBkaXNwbGF5IDogcmVsYXRpdmUgOyBcXHJcXG59XFxyXFxuXFxyXFxuLndpbmRvd21pbiB7XFxyXFxuICB3aWR0aCA6IDMwMHB4IDsgXFxyXFxuICBoZWlnaHQgOiA0NXB4IDtcXHJcXG4gIGJhY2tncm91bmQgOiAjMmMzZTUwOyBcXHJcXG4gIGJvcmRlci1yYWRpdXMgOiA1cHggOyBcXHJcXG4gIGJvdHRvbSA6IDAgOyBcXHJcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG59XFxyXFxuXFxyXFxuLmJhc2htYXgge1xcclxcbiAgZGlzcGxheSA6IGFic29sdXRlIDsgXFxyXFxuICB3aWR0aCA6IDEwMCUgOyBcXHJcXG4gIGJhY2tncm91bmQgOiAjMzQ0OTVlOyBcXHJcXG4gIGhlaWdodCA6IDk2MHB4IDsgXFxyXFxuICBib3JkZXItcmFkaXVzIDogNXB4IDtcXHJcXG4gIGJvdHRvbTogMDtcXHJcXG4gIGNvbG9yIDogI2ZmZiA7XFxyXFxufVxcclxcblxcclxcbi8qICEtLWVuZC0tISAqL1xcclxcblxcclxcbi5idXR0b25zIHtcXHJcXG4gIHdpZHRoIDogMTVweCA7XFxyXFxuICBoZWlnaHQgOiAxNXB4IDsgXFxyXFxuICBib3JkZXItcmFkaXVzIDogNTAlIDtcXHJcXG4gIGZsb2F0IDogcmlnaHQgOyBcXHJcXG4gIG1hcmdpbiA6IDEzcHggNHB4O1xcclxcbiAgYm9yZGVyOiBub25lIDsgXFxyXFxufVxcclxcblxcclxcbi5jbG9zZSB7XFxyXFxuICBiYWNrZ3JvdW5kIDogI2U3NGMzYyA7XFxyXFxufVxcclxcblxcclxcbi5tYXhpbWl6ZXtcXHJcXG4gIGJhY2tncm91bmQgOiAjZjFjNDBmIDtcXHJcXG59XFxyXFxuXFxyXFxuLm1pbmltaXple1xcclxcbiAgYmFja2dyb3VuZCA6ICMyZWNjNzEgO1xcclxcbn1cXHJcXG5cXHJcXG4ucmVzdWx0IHtcXHJcXG4gIGRpc3BsYXkgOiBub25lIDtcXHJcXG59XFxyXFxuXFxyXFxuLmNvbnRyb2xzIHtcXHJcXG4gIGhlaWdodCA6IDQwcHggOyBcXHJcXG4gIHRvcCA6IDAgOyBcXHJcXG59XFxyXFxuXFxyXFxuLnRpdGxlIHtcXHJcXG4gICAgY29sb3IgOiAjZmZmIDsgXFxyXFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkIDsgXFxyXFxuICAgIHBhZGRpbmcgOiAxMHB4O1xcclxcbn1cXHJcXG5cIixcIi5tYXRlcmlhbC10b29sdGlwIHtcXHJcXG4gIHBhZGRpbmc6IDEwcHggOHB4O1xcclxcbiAgZm9udC1zaXplOiAxcmVtO1xcclxcbiAgei1pbmRleDogMjAwMDtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gIGNvbG9yOiAjZmZmO1xcclxcbiAgbWluLWhlaWdodDogMzZweDtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAxMjAlO1xcclxcbiAgb3BhY2l0eTogMDtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gNHB4KTtcXHJcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgdG9wOiAwO1xcclxcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxyXFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMjMyO1xcclxcbn1cXHJcXG5cXHJcXG4uYmFja2Ryb3Age1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgb3BhY2l0eTogMDtcXHJcXG4gIGhlaWdodDogN3B4O1xcclxcbiAgd2lkdGg6IDE0cHg7XFxyXFxuICBib3JkZXItcmFkaXVzOiAwIDAgNTAlIDUwJTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7XFxyXFxuICB6LWluZGV4OiAtMTtcXHJcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAwJTtcXHJcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG59XFxyXFxuXCIsXCIvLyBaLWxldmVsc1xcclxcbi5zaGFkb3ctMCB7XFxyXFxuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcblxcclxcbi8qIDJkcCBlbGV2YXRpb24gbW9kaWZpZWQqL1xcclxcbi5zaGFkb3ctMSB7XFxyXFxuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLFxcclxcbiAgICAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XFxyXFxufVxcclxcbi5zaGFkb3ctMS1oYWxmIHtcXHJcXG4gIGJveC1zaGFkb3c6IDAgM3B4IDNweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDdweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksXFxyXFxuICAgIDAgM3B4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXHJcXG59XFxyXFxuXFxyXFxuLyogNmRwIGVsZXZhdGlvbiBtb2RpZmllZCovXFxyXFxuLnNoYWRvdy0yIHtcXHJcXG4gIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLFxcclxcbiAgICAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMyk7XFxyXFxufVxcclxcblxcclxcbi8qIDEyZHAgZWxldmF0aW9uIG1vZGlmaWVkKi9cXHJcXG4uc2hhZG93LTMge1xcclxcbiAgYm94LXNoYWRvdzogMCA4cHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSxcXHJcXG4gICAgMCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcclxcbn1cXHJcXG5cXHJcXG4vKiAxNmRwIGVsZXZhdGlvbiAqL1xcclxcbi5zaGFkb3ctNCB7XFxyXFxuICBib3gtc2hhZG93OiAwIDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSxcXHJcXG4gICAgMCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCA4cHggMTBweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXHJcXG59XFxyXFxuXFxyXFxuLyogMjRkcCBlbGV2YXRpb24gKi9cXHJcXG4uc2hhZG93LTUge1xcclxcbiAgYm94LXNoYWRvdzogMCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksXFxyXFxuICAgIDAgOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcclxcbn1cXHJcXG5cXHJcXG4vKiAyNGRwIGVsZXZhdGlvbiAqL1xcclxcbi5pbnZlcnQtc2hhZG93LTUge1xcclxcbiAgICBib3gtc2hhZG93OiBcXHJcXG4gICAgMzhweCAwIDAgMCByZ2JhKDAsIDAsIDAsIDAuMTQpLFxcclxcbiAgICA0NnB4IDAgMCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIFxcclxcbiAgICAxNXB4IDAgMCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4uaG92ZXJhYmxlIHtcXHJcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4yNXM7XFxyXFxuXFxyXFxuICAmOmhvdmVyIHtcXHJcXG4gICAgYm94LXNoYWRvdzogMCA4cHggMTdweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSxcXHJcXG4gICAgICAwIDZweCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE5KTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXCIsXCJcXHJcXG4vKiFcXHJcXG4gKiBXYXZlcyB2MC42LjBcXHJcXG4gKiBodHRwOi8vZmlhbi5teS5pZC9XYXZlc1xcclxcbiAqXFxyXFxuICogQ29weXJpZ2h0IDIwMTQgQWxmaWFuYSBFLiBTaWJ1ZWEgYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xcclxcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxcclxcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9maWFucy9XYXZlcy9ibG9iL21hc3Rlci9MSUNFTlNFXFxyXFxuICovXFxyXFxuXFxyXFxuXFxyXFxuLndhdmVzLWVmZmVjdCB7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxyXFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG4gIHotaW5kZXg6IDE7XFxyXFxuICB0cmFuc2l0aW9uOiAuM3MgZWFzZS1vdXQ7XFxyXFxuXFxyXFxuICAud2F2ZXMtcmlwcGxlIHtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICAgIHdpZHRoOiAyMHB4O1xcclxcbiAgICBoZWlnaHQ6IDIwcHg7XFxyXFxuICAgIG1hcmdpbi10b3A6LTEwcHg7XFxyXFxuICAgIG1hcmdpbi1sZWZ0Oi0xMHB4O1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcblxcclxcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMik7XFxyXFxuICAgIHRyYW5zaXRpb246IGFsbCAwLjdzIGVhc2Utb3V0O1xcclxcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XFxyXFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxyXFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gV2F2ZXMgQ29sb3JzXFxyXFxuICAmLndhdmVzLWxpZ2h0IC53YXZlcy1yaXBwbGUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDUpO1xcclxcbiAgfVxcclxcbiAgJi53YXZlcy1yZWQgLndhdmVzLXJpcHBsZSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQ0LCA2NywgNTQsIC43MCk7XFxyXFxuICB9XFxyXFxuICAmLndhdmVzLXllbGxvdyAud2F2ZXMtcmlwcGxlIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIzNSwgNTksIC43MCk7XFxyXFxuICB9XFxyXFxuICAmLndhdmVzLW9yYW5nZSAud2F2ZXMtcmlwcGxlIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDE1MiwgMCwgLjcwKTtcXHJcXG4gIH1cXHJcXG4gICYud2F2ZXMtcHVycGxlIC53YXZlcy1yaXBwbGUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NiwgMzksIDE3NiwgMC43MCk7XFxyXFxuICB9XFxyXFxuICAmLndhdmVzLWdyZWVuIC53YXZlcy1yaXBwbGUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDc2LCAxNzUsIDgwLCAwLjcwKTtcXHJcXG4gIH1cXHJcXG4gICYud2F2ZXMtdGVhbCAud2F2ZXMtcmlwcGxlIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNTAsIDEzNiwgMC43MCk7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBTdHlsZSBpbnB1dCBidXR0b24gYnVnLlxcclxcbiAgaW5wdXRbdHlwZT1cXFwiYnV0dG9uXFxcIl0sIGlucHV0W3R5cGU9XFxcInJlc2V0XFxcIl0sIGlucHV0W3R5cGU9XFxcInN1Ym1pdFxcXCJdIHtcXHJcXG4gICAgYm9yZGVyOiAwO1xcclxcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxyXFxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcXHJcXG4gICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7XFxyXFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBpbWcge1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIHotaW5kZXg6IC0xO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4ud2F2ZXMtbm90cmFuc2l0aW9uIHtcXHJcXG4gIHRyYW5zaXRpb246IG5vbmUgI3tcXFwiIWltcG9ydGFudFxcXCJ9O1xcclxcbn1cXHJcXG5cXHJcXG4ud2F2ZXMtY2lyY2xlIHtcXHJcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcXHJcXG4gIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB3aGl0ZSAxMDAlLCBibGFjayAxMDAlKTtcXHJcXG59XFxyXFxuXFxyXFxuLndhdmVzLWlucHV0LXdyYXBwZXIge1xcclxcbiAgYm9yZGVyLXJhZGl1czogMC4yZW07XFxyXFxuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xcclxcblxcclxcbiAgLndhdmVzLWJ1dHRvbi1pbnB1dCB7XFxyXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICB6LWluZGV4OiAxO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4ud2F2ZXMtY2lyY2xlIHtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gIHdpZHRoOiAyLjVlbTtcXHJcXG4gIGhlaWdodDogMi41ZW07XFxyXFxuICBsaW5lLWhlaWdodDogMi41ZW07XFxyXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICAtd2Via2l0LW1hc2staW1hZ2U6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbi53YXZlcy1ibG9jayB7XFxyXFxuICBkaXNwbGF5OiBibG9jaztcXHJcXG59XFxyXFxuXFxyXFxuLyogRmlyZWZveCBCdWc6IGxpbmsgbm90IHRyaWdnZXJlZCAqL1xcclxcbi53YXZlcy1lZmZlY3QgLndhdmVzLXJpcHBsZSB7XFxyXFxuICB6LWluZGV4OiAtMTtcXHJcXG59XCIsXCIubW9kYWwge1xcclxcbiAgJjpmb2N1cyB7XFxyXFxuICAgIG91dGxpbmU6IG5vbmU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBAZXh0ZW5kIC5zaGFkb3ctNTtcXHJcXG5cXHJcXG4gIC8vZGlzcGxheTogbm9uZTtcXHJcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XFxyXFxuICBwYWRkaW5nOiAwO1xcclxcbiAgbWF4LWhlaWdodDogNzAlO1xcclxcbiAgd2lkdGg6IDU1JTtcXHJcXG4gIG1hcmdpbjogYXV0bztcXHJcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxyXFxuXFxyXFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxyXFxuICB3aWxsLWNoYW5nZTogdG9wLCBvcGFjaXR5O1xcclxcblxcclxcbiAgQG1lZGlhICN7JG1lZGl1bS1hbmQtZG93bn0ge1xcclxcbiAgIHdpZHRoOiA4MCU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBoMSxoMixoMyxoNCB7XFxyXFxuICAgIG1hcmdpbi10b3A6IDA7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAubW9kYWwtY29udGVudCB7XFxyXFxuICAgIHBhZGRpbmc6IDI0cHg7XFxyXFxuICB9XFxyXFxuICAubW9kYWwtY2xvc2Uge1xcclxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAubW9kYWwtZm9vdGVyIHtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDJweCAycHg7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XFxyXFxuICAgIHBhZGRpbmc6IDRweCA2cHg7XFxyXFxuICAgIGhlaWdodDogNTZweDtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xcclxcblxcclxcbiAgICAuYnRuLCAuYnRuLWZsYXQge1xcclxcbiAgICAgIG1hcmdpbjogNnB4IDA7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIC5tb2RhbC1oZWFkZXIge1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAycHggMnB4IDAgMCA7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XFxyXFxuICAgIHBhZGRpbmc6IDZweCA0cHg7XFxyXFxuICAgIGhlaWdodDogNTZweDtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xcclxcblxcclxcbiAgICAuYnRuLCAuYnRuLWZsYXQge1xcclxcbiAgICAgIG1hcmdpbjogNnB4IDA7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuLm1vZGFsLW92ZXJsYXkge1xcclxcbiAgcG9zaXRpb246IGZpeGVkO1xcclxcbiAgei1pbmRleDogOTk5O1xcclxcbiAgdG9wOiAtMjUlO1xcclxcbiAgbGVmdDogMDtcXHJcXG4gIGJvdHRvbTogMDtcXHJcXG4gIHJpZ2h0OiAwO1xcclxcbiAgaGVpZ2h0OiAxMjUlO1xcclxcbiAgd2lkdGg6IDEwMCU7XFxyXFxuICBiYWNrZ3JvdW5kOiAjMDAwO1xcclxcbiAgZGlzcGxheTogbm9uZTtcXHJcXG5cXHJcXG4gIHdpbGwtY2hhbmdlOiBvcGFjaXR5O1xcclxcbn1cXHJcXG5cXHJcXG4vLyBNb2RhbCB3aXRoIGZpeGVkIGFjdGlvbiBmb290ZXJcXHJcXG4ubW9kYWwubW9kYWwtZml4ZWQtZm9vdGVyIHtcXHJcXG4gIHBhZGRpbmc6IDA7XFxyXFxuICBoZWlnaHQ6IDcwJTtcXHJcXG5cXHJcXG4gIC5tb2RhbC1jb250ZW50IHtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDU2cHgpO1xcclxcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgb3ZlcmZsb3cteTogYXV0bztcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5tb2RhbC1mb290ZXIge1xcclxcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgYm90dG9tOiAwO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBNb2RhbCBCb3R0b20gU2hlZXQgU3R5bGVcXHJcXG4ubW9kYWwuYm90dG9tLXNoZWV0IHtcXHJcXG4gIHRvcDogYXV0bztcXHJcXG4gIGJvdHRvbTogLTEwMCU7XFxyXFxuICBtYXJnaW46IDA7XFxyXFxuICB3aWR0aDogMTAwJTtcXHJcXG4gIG1heC1oZWlnaHQ6IDQ1JTtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxyXFxuICB3aWxsLWNoYW5nZTogYm90dG9tLCBvcGFjaXR5O1xcclxcbn1cXHJcXG5cIixcImh0bWwsXFxyXFxuYm9keSxcXHJcXG4jcm9vdCB7XFxyXFxuICBtYXJnaW46IDA7XFxyXFxuICBoZWlnaHQ6IDEwMCU7XFxyXFxufVxcclxcblxcclxcblxcclxcbioge1xcclxcbiAgbWFyZ2luOiAwO1xcclxcbiAgcGFkZGluZzogMDtcXHJcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxyXFxufVxcclxcblxcclxcbi5ub3NlbGVjdCB7XFxyXFxuICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7IC8qIGlPUyBTYWZhcmkgKi9cXHJcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IC8qIFNhZmFyaSAqL1xcclxcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOyAvKiBLb25xdWVyb3IgSFRNTCAqL1xcclxcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsgLyogT2xkIHZlcnNpb25zIG9mIEZpcmVmb3ggKi9cXHJcXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTsgLyogSW50ZXJuZXQgRXhwbG9yZXIvRWRnZSAqL1xcclxcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxyXFxuICAvKiBOb24tcHJlZml4ZWQgdmVyc2lvbiwgY3VycmVudGx5XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgYnkgQ2hyb21lLCBFZGdlLCBPcGVyYSBhbmQgRmlyZWZveCAqL1xcclxcbn1cXHJcXG5cXHJcXG51bCB7XFxyXFxuICAmOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB7XFxyXFxuICAgIHBhZGRpbmctbGVmdDogMDtcXHJcXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xcclxcblxcclxcbiAgICAmID4gbGkge1xcclxcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5hIHtcXHJcXG5cXHRjb2xvcjogJGxpbmstY29sb3I7XFxyXFxuXFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcblxcclxcbiAgLy8gR2V0cyByaWQgb2YgdGFwIGFjdGl2ZSBzdGF0ZVxcclxcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG59XFxyXFxuXFxyXFxuLnctMTAwIHtcXHJcXG4gIHdpZHRoOiAxMDAlO1xcclxcbn1cXHJcXG5cXHJcXG4ucmlnaHQtYWxpZ24ge1xcclxcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxyXFxufVxcclxcbi5jZW50ZXItYWxpZ257XFxyXFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxufVxcclxcblxcclxcbi52LWNlbnRlciB7XFxyXFxuICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLm1iMSB7XFxyXFxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4vLyBDb2xsZWN0aW9uc1xcclxcbi5jb2xsZWN0aW9uIHtcXHJcXG4gIG1hcmdpbjogJGVsZW1lbnQtdG9wLW1hcmdpbiAwICRlbGVtZW50LWJvdHRvbS1tYXJnaW4gMDtcXHJcXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjb2xsZWN0aW9uLWJvcmRlci1jb2xvcjtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAuY29sbGVjdGlvbi1pdGVtIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3Rpb24tYmctY29sb3I7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAkY29sbGVjdGlvbi1saW5lLWhlaWdodDtcXHJcXG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sbGVjdGlvbi1ib3JkZXItY29sb3I7XFxyXFxuXFxyXFxuICAgICYuaG92ZXIge1xcclxcbiAgICAgICY6aG92ZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3Rpb24taG92ZXItYmctY29sb3I7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC8vIEF2YXRhciBDb2xsZWN0aW9uXFxyXFxuICAgICYuYXZhdGFyIHtcXHJcXG4gICAgICBtaW4taGVpZ2h0OiA4NHB4O1xcclxcbiAgICAgIHBhZGRpbmctbGVmdDogNzJweDtcXHJcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuXFxyXFxuXFxyXFxuICAgICAgLy8gRG9uJ3Qgc3R5bGUgY2lyY2xlcyBpbnNpZGUgcHJlbG9hZGVyIGNsYXNzZXMuXFxyXFxuICAgICAgJjpub3QoLmNpcmNsZS1jbGlwcGVyKSA+IC5jaXJjbGUsXFxyXFxuICAgICAgOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSB7XFxyXFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgICAgICB3aWR0aDogNDJweDtcXHJcXG4gICAgICAgIGhlaWdodDogNDJweDtcXHJcXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICAgICAgICBsZWZ0OiAxNXB4O1xcclxcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG4gICAgICB9XFxyXFxuXFxyXFxuICAgICAgaS5jaXJjbGUge1xcclxcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xcclxcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQycHg7XFxyXFxuICAgICAgICBjb2xvcjogI2ZmZjtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk7XFxyXFxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgICAgfVxcclxcblxcclxcblxcclxcbiAgICAgIC50aXRsZSB7XFxyXFxuICAgICAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICAgIHAge1xcclxcbiAgICAgICAgbWFyZ2luOiAwO1xcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAuc2Vjb25kYXJ5LWNvbnRlbnQge1xcclxcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgICAgdG9wOiAxNnB4O1xcclxcbiAgICAgICAgcmlnaHQ6IDE2cHg7XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICB9XFxyXFxuXFxyXFxuXFxyXFxuICAgICY6bGFzdC1jaGlsZCB7XFxyXFxuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmLmFjdGl2ZSB7XFxyXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3Rpb24tYWN0aXZlLWJnLWNvbG9yO1xcclxcbiAgICAgIGNvbG9yOiAkY29sbGVjdGlvbi1hY3RpdmUtY29sb3I7XFxyXFxuXFxyXFxuICAgICAgLnNlY29uZGFyeS1jb250ZW50IHtcXHJcXG4gICAgICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgYS5jb2xsZWN0aW9uLWl0ZW0ge1xcclxcbiAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgdHJhbnNpdGlvbjogLjI1cztcXHJcXG4gICAgY29sb3I6ICRjb2xsZWN0aW9uLWxpbmstY29sb3I7XFxyXFxuXFxyXFxuICAgICY6bm90KC5hY3RpdmUpIHtcXHJcXG4gICAgICAmOmhvdmVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xsZWN0aW9uLWhvdmVyLWJnLWNvbG9yO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgJi53aXRoLWhlYWRlciB7XFxyXFxuICAgIC5jb2xsZWN0aW9uLWhlYWRlciB7XFxyXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3Rpb24tYmctY29sb3I7XFxyXFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xsZWN0aW9uLWJvcmRlci1jb2xvcjtcXHJcXG4gICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLmNvbGxlY3Rpb24taXRlbSB7XFxyXFxuICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHtcXHJcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDcycHg7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG59XFxyXFxuXFxyXFxuLy8gTWFkZSBsZXNzIHNwZWNpZmljIHRvIGFsbG93IGVhc2llciBvdmVycmlkaW5nXFxyXFxuLnNlY29uZGFyeS1jb250ZW50IHtcXHJcXG4gIGZsb2F0OiByaWdodDtcXHJcXG4gIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yO1xcclxcbn1cXHJcXG5cXHJcXG4uY29sbGFwc2libGUgLmNvbGxlY3Rpb24ge1xcclxcbiAgbWFyZ2luOiAwO1xcclxcbiAgYm9yZGVyOiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4ubW9kYWwtb3ZlcmxheSB7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICB0b3A6IDA7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgcmlnaHQ6IDA7XFxyXFxuICBoZWlnaHQ6IDEwMHZoO1xcclxcbiAgd2lkdGg6IDEwMHZ3O1xcclxcbiAgcGFkZGluZzogMjBweCAwIDIwcHggMDtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpO1xcclxcbiAgei1pbmRleDogOTk5O1xcclxcbiAgZGlzcGxheTogZmxleDtcXHJcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbiAgLy9hbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgLmlubmVyZm9ybXtcXHJcXG4gICAgbWF4LXdpZHRoOiA2NTBweDtcXHJcXG4gICAgZm9ybXtcXHJcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcbi8qKioqKioqKioqKioqKioqKioqKipcXHJcXG4gIE1lZGlhIFF1ZXJ5IENsYXNzZXNcXHJcXG4qKioqKioqKioqKioqKioqKioqKioqL1xcclxcbi5oaWRlLW9uLXNtYWxsLW9ubHksIC5oaWRlLW9uLXNtYWxsLWFuZC1kb3duIHtcXHJcXG4gIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xcclxcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcbi5oaWRlLW9uLW1lZC1hbmQtZG93biB7XFxyXFxuICBAbWVkaWEgI3skbWVkaXVtLWFuZC1kb3dufSB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLmhpZGUtb24tbWVkLWFuZC11cCB7XFxyXFxuICBAbWVkaWEgI3skbWVkaXVtLWFuZC11cH0ge1xcclxcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcbi5oaWRlLW9uLW1lZC1vbmx5IHtcXHJcXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHNtYWxsLXNjcmVlbikgYW5kIChtYXgtd2lkdGg6ICRtZWRpdW0tc2NyZWVuKSB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLmhpZGUtb24tbGFyZ2Utb25seSB7XFxyXFxuICBAbWVkaWEgI3skbGFyZ2UtYW5kLXVwfSB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLmhpZGUtb24tZXh0cmEtbGFyZ2Utb25seSB7XFxyXFxuICBAbWVkaWEgI3skZXh0cmEtbGFyZ2UtYW5kLXVwfSB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLnNob3ctb24tZXh0cmEtbGFyZ2Uge1xcclxcbiAgQG1lZGlhICN7JGV4dHJhLWxhcmdlLWFuZC11cH0ge1xcclxcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG4uc2hvdy1vbi1sYXJnZSB7XFxyXFxuICBAbWVkaWEgI3skbGFyZ2UtYW5kLXVwfSB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcbi5zaG93LW9uLW1lZGl1bSB7XFxyXFxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRzbWFsbC1zY3JlZW4pIGFuZCAobWF4LXdpZHRoOiAkbWVkaXVtLXNjcmVlbikge1xcclxcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG4uc2hvdy1vbi1zbWFsbCB7XFxyXFxuICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcXHJcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLnNob3ctb24tbWVkaXVtLWFuZC11cCB7XFxyXFxuICBAbWVkaWEgI3skbWVkaXVtLWFuZC11cH0ge1xcclxcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG4uc2hvdy1vbi1tZWRpdW0tYW5kLWRvd24ge1xcclxcbiAgQG1lZGlhICN7JG1lZGl1bS1hbmQtZG93bn0ge1xcclxcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4vLyBDZW50ZXIgdGV4dCBvbiBtb2JpbGVcXHJcXG4uY2VudGVyLW9uLXNtYWxsLW9ubHkge1xcclxcbiAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLyoqKioqKioqKioqKioqKioqKipcXHJcXG4gIFV0aWxpdHkgQ2xhc3Nlc1xcclxcbioqKioqKioqKioqKioqKioqKiovXFxyXFxuXFxyXFxuLmhpZGUge1xcclxcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcclxcbn1cXHJcXG5cXHJcXG4vLyBUZXh0IEFsaWduXFxyXFxuLmxlZnQtYWxpZ24ge1xcclxcbiAgdGV4dC1hbGlnbjogbGVmdDtcXHJcXG59XFxyXFxuLnJpZ2h0LWFsaWduIHtcXHJcXG4gIHRleHQtYWxpZ246IHJpZ2h0XFxyXFxufVxcclxcbi5jZW50ZXIsIC5jZW50ZXItYWxpZ24ge1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbn1cXHJcXG5cXHJcXG4ubGVmdCB7XFxyXFxuICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xcclxcbn1cXHJcXG4ucmlnaHQge1xcclxcbiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcblxcclxcbi8vIE5vIFRleHQgU2VsZWN0XFxyXFxuLm5vLXNlbGVjdCB7XFxyXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuLmNpcmNsZSB7XFxyXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxufVxcclxcblxcclxcbi5jZW50ZXItYmxvY2sge1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICBtYXJnaW4tbGVmdDogYXV0bztcXHJcXG4gIG1hcmdpbi1yaWdodDogYXV0bztcXHJcXG59XFxyXFxuXFxyXFxuLnRydW5jYXRlIHtcXHJcXG4gIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXHJcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXHJcXG59XFxyXFxuXFxyXFxuLm5vLXBhZGRpbmcge1xcclxcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcclxcbn1cXHJcXG5cIixcIkB1c2UgXFxcInNhc3M6bWF0aFxcXCI7XFxyXFxuJHByaW1hcnktY29sb3I6IGNvbG9yKFxcXCJibHVlXFxcIiwgXFxcImxpZ2h0ZW4tM1xcXCIpICFkZWZhdWx0O1xcclxcbiRwcmltYXJ5LWNvbG9yLWxpZ2h0OiBsaWdodGVuKCRwcmltYXJ5LWNvbG9yLCAxNSUpICFkZWZhdWx0O1xcclxcbiRwcmltYXJ5LWNvbG9yLWRhcms6IGRhcmtlbigkcHJpbWFyeS1jb2xvciwgMTUlKSAhZGVmYXVsdDtcXHJcXG5cXHJcXG4kc2Vjb25kYXJ5LWNvbG9yOiBjb2xvcihcXFwidGVhbFxcXCIsIFxcXCJsaWdodGVuLTFcXFwiKSAhZGVmYXVsdDtcXHJcXG4kc3VjY2Vzcy1jb2xvcjogY29sb3IoXFxcImdyZWVuXFxcIiwgXFxcImJhc2VcXFwiKSAhZGVmYXVsdDtcXHJcXG4kZXJyb3ItY29sb3I6IGNvbG9yKFxcXCJyZWRcXFwiLCBcXFwiYmFzZVxcXCIpICFkZWZhdWx0O1xcclxcbiRsaW5rLWNvbG9yOiBjb2xvcihcXFwibGlnaHQtYmx1ZVxcXCIsIFxcXCJkYXJrZW4tMVxcXCIpICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcblxcclxcbi8vIDIuIEJhZGdlc1xcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJGJhZGdlLWJnLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRiYWRnZS1oZWlnaHQ6IDIycHggIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLy8gNy4gQ2hpcHNcXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbiRjaGlwLWJnLWNvbG9yOiAjZTRlNGU0ICFkZWZhdWx0O1xcclxcbiRjaGlwLWJvcmRlci1jb2xvcjogIzllOWU5ZSAhZGVmYXVsdDtcXHJcXG4kY2hpcC1zZWxlY3RlZC1jb2xvcjogIzI2YTY5YSAhZGVmYXVsdDtcXHJcXG4kY2hpcC1tYXJnaW46IDVweCAhZGVmYXVsdDtcXHJcXG5cXHJcXG5cXHJcXG4vLyAxNi4gU3Bpbm5lcnMgfCBMb2FkZXJzXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4kc3Bpbm5lci1kZWZhdWx0LWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcblxcclxcbi8vIDI0LiBQcm9ncmVzcyBCYXJcXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbiRwcm9ncmVzcy1iYXItY29sb3I6ICRzZWNvbmRhcnktY29sb3IgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLy9pbnB1dHNcXHJcXG5cXHJcXG4kaW5wdXQtaGVpZ2h0OiA1NnB4O1xcclxcblxcclxcbi8vIDYuIENvbGxhcHNpYmxlXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4kY29sbGFwc2libGUtaGVpZ2h0OiAzcmVtICFkZWZhdWx0O1xcclxcbiRjb2xsYXBzaWJsZS1saW5lLWhlaWdodDogJGNvbGxhcHNpYmxlLWhlaWdodCAhZGVmYXVsdDtcXHJcXG4kY29sbGFwc2libGUtaGVhZGVyLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRjb2xsYXBzaWJsZS1ib3JkZXItY29sb3I6ICNkZGQgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gMTAuIEZvcm1zXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4vLyBUZXh0IElucHV0cyArIFRleHRhcmVhXFxyXFxuJGlucHV0LWhlaWdodDogM3JlbSAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtYm9yZGVyLWNvbG9yOiBjb2xvcihcXFwiZ3JleVxcXCIsIFxcXCJiYXNlXFxcIikgIWRlZmF1bHQ7XFxyXFxuJGlucHV0LWJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGlucHV0LWJhY2tncm91bmQ6ICNmZmYgIWRlZmF1bHQ7XFxyXFxuJGlucHV0LWVycm9yLWNvbG9yOiAkZXJyb3ItY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGlucHV0LXN1Y2Nlc3MtY29sb3I6ICRzdWNjZXNzLWNvbG9yICFkZWZhdWx0O1xcclxcbiRpbnB1dC1mb2N1cy1jb2xvcjogJHNlY29uZGFyeS1jb2xvciAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xcclxcbiRpbnB1dC1tYXJnaW4tYm90dG9tOiA4cHg7XFxyXFxuJGlucHV0LW1hcmdpbjogMCAwICRpbnB1dC1tYXJnaW4tYm90dG9tIDAgIWRlZmF1bHQ7XFxyXFxuJGlucHV0LXBhZGRpbmc6IDAgIWRlZmF1bHQ7XFxyXFxuJGxhYmVsLWZvbnQtc2l6ZTogLjhyZW0gIWRlZmF1bHQ7XFxyXFxuJGlucHV0LWRpc2FibGVkLWNvbG9yOiByZ2JhKDAsMCwwLCAuNDIpICFkZWZhdWx0O1xcclxcbiRpbnB1dC1kaXNhYmxlZC1zb2xpZC1jb2xvcjogIzk0OTQ5NCAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtZGlzYWJsZWQtYm9yZGVyOiAxcHggZG90dGVkICRpbnB1dC1kaXNhYmxlZC1jb2xvciAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtaW52YWxpZC1ib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtZXJyb3ItY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGlucHV0LWljb24tc2l6ZTogMnJlbTtcXHJcXG4kcGxhY2Vob2xkZXItdGV4dC1jb2xvcjogbGlnaHRlbigkaW5wdXQtYm9yZGVyLWNvbG9yLCAyMCUpICFkZWZhdWx0O1xcclxcblxcclxcbi8vIFJhZGlvIEJ1dHRvbnNcXHJcXG4kcmFkaW8tZmlsbC1jb2xvcjogJHNlY29uZGFyeS1jb2xvciAhZGVmYXVsdDtcXHJcXG4kcmFkaW8tZW1wdHktY29sb3I6ICM1YTVhNWEgIWRlZmF1bHQ7XFxyXFxuJHJhZGlvLWJvcmRlcjogMnB4IHNvbGlkICRyYWRpby1maWxsLWNvbG9yICFkZWZhdWx0O1xcclxcblxcclxcbi8vIFJhbmdlXFxyXFxuJHJhbmdlLWhlaWdodDogMTRweCAhZGVmYXVsdDtcXHJcXG4kcmFuZ2Utd2lkdGg6IDE0cHggIWRlZmF1bHQ7XFxyXFxuJHRyYWNrLWhlaWdodDogM3B4ICFkZWZhdWx0O1xcclxcblxcclxcbi8vIFNlbGVjdFxcclxcbiRzZWxlY3QtYm9yZGVyOiAxcHggc29saWQgI2YyZjJmMiAhZGVmYXVsdDtcXHJcXG4kc2VsZWN0LWJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MCkgIWRlZmF1bHQ7XFxyXFxuJHNlbGVjdC1mb2N1czogMXB4IHNvbGlkIGxpZ2h0ZW4oJHNlY29uZGFyeS1jb2xvciwgNDclKSAhZGVmYXVsdDtcXHJcXG4kc2VsZWN0LW9wdGlvbi1ob3ZlcjogcmdiYSgwLDAsMCwuMDgpICFkZWZhdWx0O1xcclxcbiRzZWxlY3Qtb3B0aW9uLWZvY3VzOiByZ2JhKDAsMCwwLC4wOCkgIWRlZmF1bHQ7XFxyXFxuJHNlbGVjdC1vcHRpb24tc2VsZWN0ZWQ6IHJnYmEoMCwwLDAsLjAzKSAhZGVmYXVsdDtcXHJcXG4kc2VsZWN0LXBhZGRpbmc6IDVweCAhZGVmYXVsdDtcXHJcXG4kc2VsZWN0LXJhZGl1czogMnB4ICFkZWZhdWx0O1xcclxcbiRzZWxlY3QtZGlzYWJsZWQtY29sb3I6IHJnYmEoMCwwLDAsLjMpICFkZWZhdWx0O1xcclxcblxcclxcbi8vIFN3aXRjaGVzXFxyXFxuJHN3aXRjaC1iZy1jb2xvcjogJHNlY29uZGFyeS1jb2xvciAhZGVmYXVsdDtcXHJcXG4kc3dpdGNoLWNoZWNrZWQtbGV2ZXItYmc6IGRlc2F0dXJhdGUobGlnaHRlbigkc3dpdGNoLWJnLWNvbG9yLCAyNSUpLCAyNSUpICFkZWZhdWx0O1xcclxcbiRzd2l0Y2gtdW5jaGVja2VkLWJnOiAjRjFGMUYxICFkZWZhdWx0O1xcclxcbiRzd2l0Y2gtdW5jaGVja2VkLWxldmVyLWJnOiByZ2JhKDAsMCwwLC4zOCkgIWRlZmF1bHQ7XFxyXFxuJHN3aXRjaC1yYWRpdXM6IDE1cHggIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gMTEuIEdsb2JhbFxcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuLy8gTWVkaWEgUXVlcnkgUmFuZ2VzXFxyXFxuJHNtYWxsLXNjcmVlbi11cDogNjAxcHggIWRlZmF1bHQ7XFxyXFxuJG1lZGl1bS1zY3JlZW4tdXA6IDk5M3B4ICFkZWZhdWx0O1xcclxcbiRsYXJnZS1zY3JlZW4tdXA6IDEyMDFweCAhZGVmYXVsdDtcXHJcXG4kc21hbGwtc2NyZWVuOiA2MDBweCAhZGVmYXVsdDtcXHJcXG4kbWVkaXVtLXNjcmVlbjogOTkycHggIWRlZmF1bHQ7XFxyXFxuJGxhcmdlLXNjcmVlbjogMTIwMHB4ICFkZWZhdWx0O1xcclxcblxcclxcbiRtZWRpdW0tYW5kLXVwOiBcXFwib25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAjeyRzbWFsbC1zY3JlZW4tdXB9KVxcXCIgIWRlZmF1bHQ7XFxyXFxuJGxhcmdlLWFuZC11cDogXFxcIm9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogI3skbWVkaXVtLXNjcmVlbi11cH0pXFxcIiAhZGVmYXVsdDtcXHJcXG4kZXh0cmEtbGFyZ2UtYW5kLXVwOiBcXFwib25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAjeyRsYXJnZS1zY3JlZW4tdXB9KVxcXCIgIWRlZmF1bHQ7XFxyXFxuJHNtYWxsLWFuZC1kb3duOiBcXFwib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiAjeyRzbWFsbC1zY3JlZW59KVxcXCIgIWRlZmF1bHQ7XFxyXFxuJG1lZGl1bS1hbmQtZG93bjogXFxcIm9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogI3skbWVkaXVtLXNjcmVlbn0pXFxcIiAhZGVmYXVsdDtcXHJcXG4kbWVkaXVtLW9ubHk6IFxcXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6ICN7JHNtYWxsLXNjcmVlbi11cH0pIGFuZCAobWF4LXdpZHRoIDogI3skbWVkaXVtLXNjcmVlbn0pXFxcIiAhZGVmYXVsdDtcXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG4vLyAxMi4gR3JpZFxcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJG51bS1jb2xzOiAxMiAhZGVmYXVsdDtcXHJcXG4kZ3V0dGVyLXdpZHRoOiAxcmVtICFkZWZhdWx0O1xcclxcbiRlbGVtZW50LXRvcC1tYXJnaW46IG1hdGguZGl2KCRndXR0ZXItd2lkdGgsIDMpICFkZWZhdWx0O1xcclxcbiRlbGVtZW50LWJvdHRvbS1tYXJnaW46IG1hdGguZGl2KCRndXR0ZXItd2lkdGggKiAyLCAzKSAhZGVmYXVsdDtcXHJcXG5cXHJcXG4vLyAxMy4gTmF2aWdhdGlvbiBCYXJcXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbiRuYXZiYXItaGVpZ2h0OiA2NHB4ICFkZWZhdWx0O1xcclxcbiRuYXZiYXItbGluZS1oZWlnaHQ6ICRuYXZiYXItaGVpZ2h0ICFkZWZhdWx0O1xcclxcbiRuYXZiYXItaGVpZ2h0LW1vYmlsZTogNTZweCAhZGVmYXVsdDtcXHJcXG4kbmF2YmFyLWxpbmUtaGVpZ2h0LW1vYmlsZTogJG5hdmJhci1oZWlnaHQtbW9iaWxlICFkZWZhdWx0O1xcclxcbiRuYXZiYXItZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xcclxcbiRuYXZiYXItZm9udC1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcXHJcXG4kbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZTogMi4xcmVtICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcbi8vIDE0LiBTaWRlIE5hdmlnYXRpb25cXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcbiRidXR0b24tcmFpc2VkLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRidXR0b24tZmxhdC1jb2xvcjogIzM0MzQzNCAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLXJhaXNlZC1iYWNrZ3JvdW5kOiAjMzQzNDM0ICFkZWZhdWx0O1xcclxcbiRwcmltYXJ5LWNvbG9yOiMzNDM0MzQgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuIFxcclxcbiRzaWRlbmF2LXdpZHRoOiAzMDBweCAhZGVmYXVsdDtcXHJcXG4kc2lkZW5hdi1mb250LXNpemU6IDE0cHggIWRlZmF1bHQ7XFxyXFxuJHNpZGVuYXYtZm9udC1jb2xvcjogcmdiYSgwLDAsMCwuODcpICFkZWZhdWx0O1xcclxcbiRzaWRlbmF2LWJnLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRzaWRlbmF2LXBhZGRpbmc6IDE1cHggIWRlZmF1bHQ7XFxyXFxuJHNpZGVuYXYtaXRlbS1oZWlnaHQ6IDQ1cHggIWRlZmF1bHQ7XFxyXFxuJHNpZGVuYXYtbGluZS1oZWlnaHQ6ICRzaWRlbmF2LWl0ZW0taGVpZ2h0ICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcbi8vIDMuIEJ1dHRvbnNcXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbiRwcmltYXJ5LWNvbG9yOiBncmVlbiAhZGVmYXVsdDtcXHJcXG4kcHJpbWFyeS1jb2xvci1saWdodDogbGlnaHRlbigkcHJpbWFyeS1jb2xvciwgMTUlKSAhZGVmYXVsdDtcXHJcXG4kcHJpbWFyeS1jb2xvci1kYXJrOiBkYXJrZW4oJHByaW1hcnktY29sb3IsIDE1JSkgIWRlZmF1bHQ7XFxyXFxuJHNlY29uZGFyeS1jb2xvcjogcmVkICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcbi8vIFNoYXJlZCBzdHlsZXNcXHJcXG4kYnV0dG9uLWJvcmRlcjogbm9uZSAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWJhY2tncm91bmQtZm9jdXM6IGxpZ2h0ZW4oJHNlY29uZGFyeS1jb2xvciwgNCUpICFkZWZhdWx0O1xcclxcbiRidXR0b24tZm9udC1zaXplOiAxNHB4ICFkZWZhdWx0O1xcclxcbiRidXR0b24taWNvbi1mb250LXNpemU6IDEuM3JlbSAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWhlaWdodDogMzZweCAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLXBhZGRpbmc6IDAgMTZweCAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLXJhZGl1czogMnB4ICFkZWZhdWx0O1xcclxcblxcclxcbi8vIERpc2FibGVkIHN0eWxlc1xcclxcbiRidXR0b24tZGlzYWJsZWQtYmFja2dyb3VuZDogI0RGREZERiAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWRpc2FibGVkLWNvbG9yOiAjOUY5RjlGICFkZWZhdWx0O1xcclxcblxcclxcbi8vIFJhaXNlZCBidXR0b25zXFxyXFxuJGJ1dHRvbi1yYWlzZWQtYmFja2dyb3VuZDogJHNlY29uZGFyeS1jb2xvciAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLXJhaXNlZC1iYWNrZ3JvdW5kLWhvdmVyOiBsaWdodGVuKCRidXR0b24tcmFpc2VkLWJhY2tncm91bmQsIDUlKSAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLXJhaXNlZC1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcXHJcXG5cXHJcXG4vLyBMYXJnZSBidXR0b25zXFxyXFxuJGJ1dHRvbi1sYXJnZS1mb250LXNpemU6IDE1cHggIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1sYXJnZS1pY29uLWZvbnQtc2l6ZTogMS42cmVtICFkZWZhdWx0O1xcclxcbiRidXR0b24tbGFyZ2UtaGVpZ2h0OiAkYnV0dG9uLWhlaWdodCAqIDEuNSAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWZsb2F0aW5nLWxhcmdlLXNpemU6IDU2cHggIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gU21hbGwgYnV0dG9uc1xcclxcbiRidXR0b24tc21hbGwtZm9udC1zaXplOiAxM3B4ICFkZWZhdWx0O1xcclxcbiRidXR0b24tc21hbGwtaWNvbi1mb250LXNpemU6IDEuMnJlbSAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLXNtYWxsLWhlaWdodDogJGJ1dHRvbi1oZWlnaHQgKiAuOSAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWZsb2F0aW5nLXNtYWxsLXNpemU6ICRidXR0b24taGVpZ2h0ICogLjkgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gRmxhdCBidXR0b25zXFxyXFxuJGJ1dHRvbi1mbGF0LWNvbG9yOiAjMzQzNDM0ICFkZWZhdWx0O1xcclxcbiRidXR0b24tZmxhdC1kaXNhYmxlZC1jb2xvcjogbGlnaHRlbigjOTk5LCAxMCUpICFkZWZhdWx0O1xcclxcblxcclxcbi8vIEZsb2F0aW5nIGJ1dHRvbnNcXHJcXG4kYnV0dG9uLWZsb2F0aW5nLWJhY2tncm91bmQ6ICRzZWNvbmRhcnktY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1mbG9hdGluZy1iYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWZsb2F0aW5nLWJhY2tncm91bmQgIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1mbG9hdGluZy1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWZsb2F0aW5nLXNpemU6IDQwcHggIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1mbG9hdGluZy1yYWRpdXM6IDUwJSAhZGVmYXVsdDtcXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG4vLyA0LiBDYXJkc1xcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJGNhcmQtcGFkZGluZzogMjRweCAhZGVmYXVsdDtcXHJcXG4kY2FyZC1iZy1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcXHJcXG4kY2FyZC1saW5rLWNvbG9yOiBjb2xvcihcXFwib3JhbmdlXFxcIiwgXFxcImFjY2VudC0yXFxcIikgIWRlZmF1bHQ7XFxyXFxuJGNhcmQtbGluay1jb2xvci1saWdodDogbGlnaHRlbigkY2FyZC1saW5rLWNvbG9yLCAyMCUpICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcblxcclxcbi8vIDIzLiBDb2xsZWN0aW9uc1xcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJGNvbGxlY3Rpb24tYm9yZGVyLWNvbG9yOiAjZTBlMGUwICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWJnLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWFjdGl2ZS1iZy1jb2xvcjogJHNlY29uZGFyeS1jb2xvciAhZGVmYXVsdDtcXHJcXG4kY29sbGVjdGlvbi1hY3RpdmUtY29sb3I6IGxpZ2h0ZW4oJHNlY29uZGFyeS1jb2xvciwgNTUlKSAhZGVmYXVsdDtcXHJcXG4kY29sbGVjdGlvbi1ob3Zlci1iZy1jb2xvcjogI2RkZCAhZGVmYXVsdDtcXHJcXG4kY29sbGVjdGlvbi1saW5rLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWxpbmUtaGVpZ2h0OiAxLjVyZW0gIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLy8gOS4gRHJvcGRvd25cXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbiRkcm9wZG93bi1iZy1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcXHJcXG4kZHJvcGRvd24taG92ZXItYmctY29sb3I6ICNlZWUgIWRlZmF1bHQ7XFxyXFxuJGRyb3Bkb3duLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRkcm9wZG93bi1pdGVtLWhlaWdodDogNTBweCAhZGVmYXVsdDtcXHJcXG5cXHJcXG5cXHJcXG4kb2ZmLWJsYWNrOiByZ2JhKDAsIDAsIDAsIDAuODcpICFkZWZhdWx0O1wiLFwiLy8gQmFkZ2VzXFxyXFxuc3Bhbi5iYWRnZSB7XFxyXFxuICBtaW4td2lkdGg6IDNyZW07XFxyXFxuICBwYWRkaW5nOiAwIDZweDtcXHJcXG4gIG1hcmdpbi1sZWZ0OiAxNHB4O1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgZm9udC1zaXplOiAxcmVtO1xcclxcbiAgbGluZS1oZWlnaHQ6ICRiYWRnZS1oZWlnaHQ7XFxyXFxuICBoZWlnaHQ6ICRiYWRnZS1oZWlnaHQ7XFxyXFxuICBjb2xvcjogY29sb3IoJ2dyZXknLCAnZGFya2VuLTEnKTtcXHJcXG4gIGZsb2F0OiByaWdodDtcXHJcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxyXFxuXFxyXFxuICAmLm5ldyB7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XFxyXFxuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xcclxcbiAgICBjb2xvcjogI2ZmZjtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhZGdlLWJnLWNvbG9yO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmLm5ldzphZnRlciB7XFxyXFxuICAgIGNvbnRlbnQ6IFxcXCIgbmV3XFxcIjtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICZbZGF0YS1iYWRnZS1jYXB0aW9uXTo6YWZ0ZXIge1xcclxcbiAgICBjb250ZW50OiBcXFwiIFxcXCIgYXR0cihkYXRhLWJhZGdlLWNhcHRpb24pO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBTcGVjaWFsIGNhc2VzXFxyXFxubmF2IHVsIGEgc3Bhbi5iYWRnZSB7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBmbG9hdDogbm9uZTtcXHJcXG4gIG1hcmdpbi1sZWZ0OiA0cHg7XFxyXFxuICBsaW5lLWhlaWdodDogJGJhZGdlLWhlaWdodDtcXHJcXG4gIGhlaWdodDogJGJhZGdlLWhlaWdodDtcXHJcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGF1dG87XFxyXFxufVxcclxcblxcclxcbi8vIExpbmUgaGVpZ2h0IGNlbnRlcmluZ1xcclxcbi5jb2xsZWN0aW9uLWl0ZW0gc3Bhbi5iYWRnZSB7XFxyXFxuICBtYXJnaW4tdG9wOiBjYWxjKGNhbGMoJGNvbGxlY3Rpb24tbGluZS1oZWlnaHQgLyAyKSAtIGNhbGMoJGJhZGdlLWhlaWdodCAvIDIpKTtcXHJcXG59XFxyXFxuXFxyXFxuLmNvbGxhcHNpYmxlIHNwYW4uYmFkZ2Uge1xcclxcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxyXFxufVxcclxcblxcclxcbi5zaWRlbmF2IHNwYW4uYmFkZ2Uge1xcclxcbiAgbWFyZ2luLXRvcDogY2FsYyhjYWxjKCRzaWRlbmF2LWxpbmUtaGVpZ2h0IC8gMikgLSBjYWxjKCRiYWRnZS1oZWlnaHQgLyAyKSk7XFxyXFxufVxcclxcblxcclxcbnRhYmxlIHNwYW4uYmFkZ2Uge1xcclxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgZmxvYXQ6IG5vbmU7XFxyXFxuICBtYXJnaW4tbGVmdDogYXV0bztcXHJcXG59XFxyXFxuXCIsXCIuY2hpcCB7XFxyXFxuICAmOmZvY3VzIHtcXHJcXG4gICAgb3V0bGluZTogbm9uZTtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNoaXAtc2VsZWN0ZWQtY29sb3I7XFxyXFxuICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgfVxcclxcblxcclxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgaGVpZ2h0OiAzMnB4O1xcclxcbiAgZm9udC1zaXplOiAxM3B4O1xcclxcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXHJcXG4gIGNvbG9yOiByZ2JhKDAsMCwwLC42KTtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xcclxcbiAgcGFkZGluZzogMCAxMnB4O1xcclxcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRjaGlwLWJnLWNvbG9yO1xcclxcbiAgbWFyZ2luLWJvdHRvbTogJGNoaXAtbWFyZ2luO1xcclxcbiAgbWFyZ2luLXJpZ2h0OiAkY2hpcC1tYXJnaW47XFxyXFxuXFxyXFxuICA+IGltZyB7XFxyXFxuICAgIGZsb2F0OiBsZWZ0O1xcclxcbiAgICBtYXJnaW46IDAgOHB4IDAgLTEycHg7XFxyXFxuICAgIGhlaWdodDogMzJweDtcXHJcXG4gICAgd2lkdGg6IDMycHg7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5jbG9zZSB7XFxyXFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgZmxvYXQ6IHJpZ2h0O1xcclxcbiAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xcclxcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLmNoaXBzIHtcXHJcXG4gIGJvcmRlcjogbm9uZTtcXHJcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY2hpcC1ib3JkZXItY29sb3I7XFxyXFxuICBib3gtc2hhZG93OiBub25lO1xcclxcbiAgbWFyZ2luOiAkaW5wdXQtbWFyZ2luO1xcclxcbiAgbWluLWhlaWdodDogNDVweDtcXHJcXG4gIG91dGxpbmU6IG5vbmU7XFxyXFxuICB0cmFuc2l0aW9uOiBhbGwgLjNzO1xcclxcblxcclxcbiAgJi5mb2N1cyB7XFxyXFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY2hpcC1zZWxlY3RlZC1jb2xvcjtcXHJcXG4gICAgYm94LXNoYWRvdzogMCAxcHggMCAwICRjaGlwLXNlbGVjdGVkLWNvbG9yO1xcclxcbiAgfVxcclxcblxcclxcbiAgJjpob3ZlciB7XFxyXFxuICAgIGN1cnNvcjogdGV4dDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5pbnB1dCB7XFxyXFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxyXFxuICAgIGJvcmRlcjogMDtcXHJcXG4gICAgY29sb3I6IHJnYmEoMCwwLDAsLjYpO1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcXHJcXG4gICAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xcclxcbiAgICBsaW5lLWhlaWdodDogMzJweDtcXHJcXG4gICAgb3V0bGluZTogMDtcXHJcXG4gICAgbWFyZ2luOiAwO1xcclxcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxyXFxuICAgIHdpZHRoOiAxMjBweCAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcblxcclxcbiAgLmlucHV0OmZvY3VzIHtcXHJcXG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XFxyXFxuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEF1dG9jb21wbGV0ZVxcclxcbiAgLmF1dG9jb21wbGV0ZS1jb250ZW50IHtcXHJcXG4gICAgbWFyZ2luLXRvcDogMDtcXHJcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gRm9ybSBwcmVmaXhcXHJcXG4ucHJlZml4IH4gLmNoaXBzIHtcXHJcXG4gIG1hcmdpbi1sZWZ0OiAzcmVtO1xcclxcbiAgd2lkdGg6IDkyJTtcXHJcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtKTtcXHJcXG59XFxyXFxuLmNoaXBzOmVtcHR5IH4gbGFiZWwgIHtcXHJcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcclxcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDAlKTtcXHJcXG59XFxyXFxuXCIsXCIuY29sbGFwc2libGUge1xcclxcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjb2xsYXBzaWJsZS1ib3JkZXItY29sb3I7XFxyXFxuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkY29sbGFwc2libGUtYm9yZGVyLWNvbG9yO1xcclxcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkY29sbGFwc2libGUtYm9yZGVyLWNvbG9yO1xcclxcbiAgbWFyZ2luOiAkZWxlbWVudC10b3AtbWFyZ2luIDAgJGVsZW1lbnQtYm90dG9tLW1hcmdpbiAwO1xcclxcbiAgQGV4dGVuZCAuc2hhZG93LTE7XFxyXFxufVxcclxcblxcclxcbi5jb2xsYXBzaWJsZS1oZWFkZXIge1xcclxcbiAgJjpmb2N1cyB7XFxyXFxuICAgIG91dGxpbmU6IDBcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXHJcXG4gIHBhZGRpbmc6IDFyZW07XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGFwc2libGUtaGVhZGVyLWNvbG9yO1xcclxcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xsYXBzaWJsZS1ib3JkZXItY29sb3I7XFxyXFxuXFxyXFxuICBpIHtcXHJcXG4gICAgd2lkdGg6IDJyZW07XFxyXFxuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xcclxcbiAgfVxcclxcbn1cXHJcXG4ua2V5Ym9hcmQtZm9jdXNlZCAuY29sbGFwc2libGUtaGVhZGVyOmZvY3VzIHtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XFxyXFxufVxcclxcblxcclxcbi5jb2xsYXBzaWJsZS1ib2R5IHtcXHJcXG4gIGRpc3BsYXk6IG5vbmU7XFxyXFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbGxhcHNpYmxlLWJvcmRlci1jb2xvcjtcXHJcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxyXFxuICBwYWRkaW5nOiAycmVtO1xcclxcbn1cXHJcXG5cXHJcXG4vLyBTaWRlbmF2IGNvbGxhcHNpYmxlIHN0eWxpbmdcXHJcXG4uc2lkZW5hdixcXHJcXG4uc2lkZW5hdi5maXhlZCB7XFxyXFxuXFxyXFxuICAuY29sbGFwc2libGUge1xcclxcbiAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuXFxyXFxuICAgIGxpIHsgcGFkZGluZzogMDsgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLmNvbGxhcHNpYmxlLWhlYWRlciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcclxcbiAgICBoZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgIHBhZGRpbmc6IDAgJHNpZGVuYXYtcGFkZGluZztcXHJcXG5cXHJcXG4gICAgJjpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjA1KTsgfVxcclxcbiAgICBpIHsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5jb2xsYXBzaWJsZS1ib2R5IHtcXHJcXG4gICAgYm9yZGVyOiAwO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGFwc2libGUtaGVhZGVyLWNvbG9yO1xcclxcblxcclxcbiAgICBsaSBhIHtcXHJcXG4gICAgICBwYWRkaW5nOiAwICg3LjVweCArICRzaWRlbmF2LXBhZGRpbmcpXFxyXFxuICAgICAgICAgICAgICAgMCAoMTVweCArICRzaWRlbmF2LXBhZGRpbmcpO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxufVxcclxcblxcclxcbi8vIFBvcG91dCBDb2xsYXBzaWJsZVxcclxcblxcclxcbi5jb2xsYXBzaWJsZS5wb3BvdXQge1xcclxcbiAgYm9yZGVyOiBub25lO1xcclxcbiAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gID4gbGkge1xcclxcbiAgICBib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTYpLCAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcXHJcXG4gICAgLy8gdHJhbnNmb3JtOiBzY2FsZVgoLjkyKTtcXHJcXG4gICAgbWFyZ2luOiAwIDI0cHg7XFxyXFxuICAgIHRyYW5zaXRpb246IG1hcmdpbiAuMzVzIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCk7XFxyXFxuICB9XFxyXFxuICA+IGxpLmFjdGl2ZSB7XFxyXFxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDExcHggMCByZ2JhKDAsIDAsIDAsIDAuMTgpLCAwIDRweCAxNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTtcXHJcXG4gICAgbWFyZ2luOiAxNnB4IDA7XFxyXFxuICAgIC8vIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIixcIi8vIDIzLiBDb2xsZWN0aW9ucyAtIHZhcmlhYmxlc1xcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJGNvbGxlY3Rpb24tYm9yZGVyLWNvbG9yOiAjZTBlMGUwICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWJnLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWFjdGl2ZS1iZy1jb2xvcjogJHNlY29uZGFyeS1jb2xvciAhZGVmYXVsdDtcXHJcXG4kY29sbGVjdGlvbi1hY3RpdmUtY29sb3I6IGxpZ2h0ZW4oJHNlY29uZGFyeS1jb2xvciwgNTUlKSAhZGVmYXVsdDtcXHJcXG4kY29sbGVjdGlvbi1ob3Zlci1iZy1jb2xvcjogI2RkZCAhZGVmYXVsdDtcXHJcXG4kY29sbGVjdGlvbi1saW5rLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWxpbmUtaGVpZ2h0OiAxLjVyZW0gIWRlZmF1bHQ7XFxyXFxuLy8gMjMuIENvbGxlY3Rpb25zXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4uY29sbGVjdGlvbiB7XFxyXFxuICAgIG1hcmdpbjogJGVsZW1lbnQtdG9wLW1hcmdpbiAwICRlbGVtZW50LWJvdHRvbS1tYXJnaW4gMDtcXHJcXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbGxlY3Rpb24tYm9yZGVyLWNvbG9yO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxyXFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIFxcclxcbiAgICAuY29sbGVjdGlvbi1pdGVtIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGVjdGlvbi1iZy1jb2xvcjtcXHJcXG4gICAgICBsaW5lLWhlaWdodDogJGNvbGxlY3Rpb24tbGluZS1oZWlnaHQ7XFxyXFxuICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xcclxcbiAgICAgIG1hcmdpbjogMDtcXHJcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbGxlY3Rpb24tYm9yZGVyLWNvbG9yO1xcclxcbiAgXFxyXFxuICAgICAgLy8gQXZhdGFyIENvbGxlY3Rpb25cXHJcXG4gICAgICAmLmF2YXRhciB7XFxyXFxuICAgICAgICBtaW4taGVpZ2h0OiA4NHB4O1xcclxcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA3MnB4O1xcclxcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgXFxyXFxuICAgICAgICAvLyBEb24ndCBzdHlsZSBjaXJjbGVzIGluc2lkZSBwcmVsb2FkZXIgY2xhc3Nlcy5cXHJcXG4gICAgICAgICY6bm90KC5jaXJjbGUtY2xpcHBlcikgPiAuY2lyY2xlLFxcclxcbiAgICAgICAgOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSB7XFxyXFxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgICAgICAgd2lkdGg6IDQycHg7XFxyXFxuICAgICAgICAgIGhlaWdodDogNDJweDtcXHJcXG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gICAgICAgICAgbGVmdDogMTVweDtcXHJcXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgaS5jaXJjbGUge1xcclxcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XFxyXFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiA0MnB4O1xcclxcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcXHJcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTtcXHJcXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICAgICAgfVxcclxcbiAgXFxyXFxuICBcXHJcXG4gICAgICAgIC50aXRsZSB7XFxyXFxuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICAgIH1cXHJcXG4gIFxcclxcbiAgICAgICAgcCB7XFxyXFxuICAgICAgICAgIG1hcmdpbjogMDtcXHJcXG4gICAgICAgIH1cXHJcXG4gIFxcclxcbiAgICAgICAgLnNlY29uZGFyeS1jb250ZW50IHtcXHJcXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgICAgICB0b3A6IDE2cHg7XFxyXFxuICAgICAgICAgIHJpZ2h0OiAxNnB4O1xcclxcbiAgICAgICAgfVxcclxcbiAgXFxyXFxuICAgICAgfVxcclxcbiAgXFxyXFxuICBcXHJcXG4gICAgICAmOmxhc3QtY2hpbGQge1xcclxcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcXHJcXG4gICAgICB9XFxyXFxuICBcXHJcXG4gICAgICAmLmFjdGl2ZSB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGVjdGlvbi1hY3RpdmUtYmctY29sb3I7XFxyXFxuICAgICAgICBjb2xvcjogJGNvbGxlY3Rpb24tYWN0aXZlLWNvbG9yO1xcclxcbiAgXFxyXFxuICAgICAgICAuc2Vjb25kYXJ5LWNvbnRlbnQge1xcclxcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gICAgYS5jb2xsZWN0aW9uLWl0ZW17XFxyXFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgICAgdHJhbnNpdGlvbjogLjI1cztcXHJcXG4gICAgICBjb2xvcjogJGNvbGxlY3Rpb24tbGluay1jb2xvcjtcXHJcXG4gICAgICAmOm5vdCguYWN0aXZlKSB7XFxyXFxuICAgICAgICAmOmhvdmVyIHtcXHJcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3Rpb24taG92ZXItYmctY29sb3I7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICBcXHJcXG4gICAgJi53aXRoLWhlYWRlciB7XFxyXFxuICAgICAgLmNvbGxlY3Rpb24taGVhZGVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xsZWN0aW9uLWJnLWNvbG9yO1xcclxcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xsZWN0aW9uLWJvcmRlci1jb2xvcjtcXHJcXG4gICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDtcXHJcXG4gICAgICB9XFxyXFxuICAgICAgLmNvbGxlY3Rpb24taXRlbSB7XFxyXFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxyXFxuICAgICAgfVxcclxcbiAgICAgIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHtcXHJcXG4gICAgICAgIHBhZGRpbmctbGVmdDogNzJweDtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gICAgLnNlY29uZGFyeS1jb250ZW50IHtcXHJcXG4gICAgICBmbG9hdDogcmlnaHQ7XFxyXFxuICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29sb3I7XFxyXFxuICAgIH1cXHJcXG4gIH1cIixcIi8vIFJlbW92ZSBGb2N1cyBCb3hlc1xcclxcbnNlbGVjdDpmb2N1cyB7XFxyXFxuICBvdXRsaW5lOiAkc2VsZWN0LWZvY3VzO1xcclxcbn1cXHJcXG5cXHJcXG5idXR0b246Zm9jdXMge1xcclxcbiAgb3V0bGluZTogbm9uZTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZC1mb2N1cztcXHJcXG59XFxyXFxuXFxyXFxubGFiZWwge1xcclxcbiAgZm9udC1zaXplOiAkbGFiZWwtZm9udC1zaXplO1xcclxcbiAgY29sb3I6ICRpbnB1dC1ib3JkZXItY29sb3I7XFxyXFxufVxcclxcblxcclxcbkBpbXBvcnQgJ2lucHV0LWZpZWxkcyc7XFxyXFxuQGltcG9ydCAncmFkaW8tYnV0dG9ucyc7XFxyXFxuQGltcG9ydCAnY2hlY2tib3hlcyc7XFxyXFxuQGltcG9ydCAnc3dpdGNoZXMnO1xcclxcbkBpbXBvcnQgJ3NlbGVjdCc7XFxyXFxuQGltcG9ydCAnZmlsZS1pbnB1dCc7XFxyXFxuQGltcG9ydCAncmFuZ2UnO1xcclxcblwiLFwiLyogVGV4dCBJbnB1dHMgKyBUZXh0YXJlYVxcclxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXFxyXFxuXFxyXFxuLyogU3R5bGUgUGxhY2Vob2xkZXJzICovXFxyXFxuQHVzZSBcXFwic2FzczptYXRoXFxcIjtcXHJcXG46OnBsYWNlaG9sZGVyIHtcXHJcXG4gIGNvbG9yOiAkcGxhY2Vob2xkZXItdGV4dC1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuLyogVGV4dCBpbnB1dHMgKi9cXHJcXG5cXHJcXG5pbnB1dDpub3QoW3R5cGVdKSxcXHJcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXHJcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxyXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcclxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxyXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxyXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxyXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcclxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXHJcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcclxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxyXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXHJcXG50ZXh0YXJlYS50ZXh0YXJlYSB7XFxyXFxuXFxyXFxuICAvLyBHZW5lcmFsIFN0eWxlc1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICBib3JkZXI6IG5vbmU7XFxyXFxuICBib3JkZXItYm90dG9tOiAkaW5wdXQtYm9yZGVyO1xcclxcbiAgYm9yZGVyLXJhZGl1czogMDtcXHJcXG4gIG91dGxpbmU6IG5vbmU7XFxyXFxuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XFxyXFxuICB3aWR0aDogMTAwJTtcXHJcXG4gIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcXHJcXG4gIG1hcmdpbjogJGlucHV0LW1hcmdpbjtcXHJcXG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xcclxcbiAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcclxcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAuM3MsIGJvcmRlciAuM3M7XFxyXFxuXFxyXFxuICAvLyBEaXNhYmxlZCBpbnB1dCBzdHlsZVxcclxcbiAgJjpkaXNhYmxlZCxcXHJcXG4gICZbcmVhZG9ubHk9XFxcInJlYWRvbmx5XFxcIl0ge1xcclxcbiAgICBjb2xvcjogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgICBib3JkZXItYm90dG9tOiAkaW5wdXQtZGlzYWJsZWQtYm9yZGVyO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gRGlzYWJsZWQgbGFiZWwgc3R5bGVcXHJcXG4gICY6ZGlzYWJsZWQrbGFiZWwsXFxyXFxuICAmW3JlYWRvbmx5PVxcXCJyZWFkb25seVxcXCJdK2xhYmVsIHtcXHJcXG4gICAgY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEZvY3VzZWQgaW5wdXQgc3R5bGVcXHJcXG4gICY6Zm9jdXM6bm90KFtyZWFkb25seV0pIHtcXHJcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRpbnB1dC1mb2N1cy1jb2xvcjtcXHJcXG4gICAgYm94LXNoYWRvdzogMCAxcHggMCAwICRpbnB1dC1mb2N1cy1jb2xvcjtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEZvY3VzZWQgbGFiZWwgc3R5bGVcXHJcXG4gICY6Zm9jdXM6bm90KFtyZWFkb25seV0pK2xhYmVsIHtcXHJcXG4gICAgY29sb3I6ICRpbnB1dC1mb2N1cy1jb2xvcjtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEhpZGUgaGVscGVyIHRleHQgb24gZGF0YSBtZXNzYWdlXFxyXFxuICAmLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxyXFxuICAmOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxyXFxuICAmLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxyXFxuICAmOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0ge1xcclxcbiAgICBAZXh0ZW5kICVoaWRkZW4tdGV4dDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIFZhbGlkIElucHV0IFN0eWxlXFxyXFxuICAmLnZhbGlkLFxcclxcbiAgJjpmb2N1cy52YWxpZCB7XFxyXFxuICAgIEBleHRlbmQgJXZhbGlkLWlucHV0LXN0eWxlO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gQ3VzdG9tIFN1Y2Nlc3MgTWVzc2FnZVxcclxcbiAgJi52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXHJcXG4gICY6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIge1xcclxcbiAgICBAZXh0ZW5kICVjdXN0b20tc3VjY2Vzcy1tZXNzYWdlO1xcclxcbiAgfVxcclxcbiAgJjpmb2N1cy52YWxpZCB+IGxhYmVsIHtcXHJcXG4gICAgY29sb3I6ICRpbnB1dC1zdWNjZXNzLWNvbG9yO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gSW52YWxpZCBJbnB1dCBTdHlsZVxcclxcbiAgJi5pbnZhbGlkLFxcclxcbiAgJjpmb2N1cy5pbnZhbGlkIHtcXHJcXG4gICAgQGV4dGVuZCAlaW52YWxpZC1pbnB1dC1zdHlsZTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEN1c3RvbSBFcnJvciBtZXNzYWdlXFxyXFxuICAmLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxyXFxuICAmOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIge1xcclxcbiAgICBAZXh0ZW5kICVjdXN0b20tZXJyb3ItbWVzc2FnZTtcXHJcXG4gIH1cXHJcXG4gICY6Zm9jdXMuaW52YWxpZCB+IGxhYmVsIHtcXHJcXG4gICAgY29sb3I6ICRpbnB1dC1lcnJvci1jb2xvcjtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEZ1bGwgd2lkdGggbGFiZWwgd2hlbiB1c2luZyB2YWxpZGF0ZSBmb3IgZXJyb3IgbWVzc2FnZXNcXHJcXG4gICYudmFsaWRhdGUgKyBsYWJlbCB7XFxyXFxuICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gRm9ybSBNZXNzYWdlIFNoYXJlZCBTdHlsZXNcXHJcXG4gICYgKyBsYWJlbDphZnRlciB7XFxyXFxuICAgIEBleHRlbmQgJWlucHV0LWFmdGVyLXN0eWxlO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4vKiBWYWxpZGF0aW9uIFNhc3MgUGxhY2Vob2xkZXJzICovXFxyXFxuJXZhbGlkLWlucHV0LXN0eWxlIHtcXHJcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkaW5wdXQtc3VjY2Vzcy1jb2xvcjtcXHJcXG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgMCAkaW5wdXQtc3VjY2Vzcy1jb2xvcjtcXHJcXG59XFxyXFxuJWludmFsaWQtaW5wdXQtc3R5bGUge1xcclxcbiAgYm9yZGVyLWJvdHRvbTogJGlucHV0LWludmFsaWQtYm9yZGVyO1xcclxcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwICRpbnB1dC1lcnJvci1jb2xvcjtcXHJcXG59XFxyXFxuJWhpZGRlbi10ZXh0IHtcXHJcXG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcclxcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxyXFxufVxcclxcbiVjdXN0b20tc3VjY2Vzcy1tZXNzYWdlIHtcXHJcXG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdWNjZXNzKTtcXHJcXG4gIGNvbG9yOiAkaW5wdXQtc3VjY2Vzcy1jb2xvcjtcXHJcXG59XFxyXFxuJWN1c3RvbS1lcnJvci1tZXNzYWdlIHtcXHJcXG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1lcnJvcik7XFxyXFxuICBjb2xvcjogJGlucHV0LWVycm9yLWNvbG9yO1xcclxcbn1cXHJcXG4laW5wdXQtYWZ0ZXItc3R5bGUge1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICBjb250ZW50OiBcXFwiXFxcIjtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRvcDogMTAwJTtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICBvcGFjaXR5OiAwO1xcclxcbiAgdHJhbnNpdGlvbjogLjJzIG9wYWNpdHkgZWFzZS1vdXQsIC4ycyBjb2xvciBlYXNlLW91dDtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLy8gU3R5bGluZyBmb3IgaW5wdXQgZmllbGQgd3JhcHBlclxcclxcbi5pbnB1dC1maWVsZCB7XFxyXFxuICAvLyBJbmxpbmUgc3R5bGVzXFxyXFxuICAmLmlubGluZSB7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcXHJcXG5cXHJcXG4gICAgaW5wdXQsXFxyXFxuICAgIC5zZWxlY3QtZHJvcGRvd24ge1xcclxcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEd1dHRlciBzcGFjaW5nXFxyXFxuICAmLmNvbCB7XFxyXFxuICAgIGxhYmVsIHtcXHJcXG4gICAgICBsZWZ0OiBtYXRoLmRpdigkZ3V0dGVyLXdpZHRoLCAyKTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAucHJlZml4IH4gbGFiZWwsXFxyXFxuICAgIC5wcmVmaXggfiAudmFsaWRhdGUgfiBsYWJlbCB7XFxyXFxuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0gLSAjeyRndXR0ZXItd2lkdGh9KTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgbWFyZ2luLXRvcDogMXJlbTtcXHJcXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XFxyXFxuXFxyXFxuICAmID4gbGFiZWwge1xcclxcbiAgICBjb2xvcjogJGlucHV0LWJvcmRlci1jb2xvcjtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXHJcXG4gICAgY3Vyc29yOiB0ZXh0O1xcclxcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjJzIGVhc2Utb3V0LCBjb2xvciAuMnMgZWFzZS1vdXQ7XFxyXFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAlIDEwMCU7XFxyXFxuICAgIHRleHQtYWxpZ246IGluaXRpYWw7XFxyXFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMnB4KTtcXHJcXG5cXHJcXG4gICAgJjpub3QoLmxhYmVsLWljb24pLmFjdGl2ZSB7XFxyXFxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNHB4KSBzY2FsZSguOCk7XFxyXFxuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBBdXRvZmlsbCArIGRhdGUgKyB0aW1lIGlucHV0c1xcclxcbiAgJiA+IGlucHV0W3R5cGVdOi13ZWJraXQtYXV0b2ZpbGw6bm90KC5icm93c2VyLWRlZmF1bHQpOm5vdChbdHlwZT1cXFwic2VhcmNoXFxcIl0pICsgbGFiZWwsXFxyXFxuICAmID4gaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbCxcXHJcXG4gICYgPiBpbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsIHtcXHJcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNHB4KSBzY2FsZSguOCk7XFxyXFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5oZWxwZXItdGV4dCB7XFxyXFxuICAgICY6OmFmdGVyIHtcXHJcXG4gICAgICBvcGFjaXR5OiAxO1xcclxcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgICB0b3A6IDA7XFxyXFxuICAgICAgbGVmdDogMDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIG1pbi1oZWlnaHQ6IDE4cHg7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICBmb250LXNpemU6IDEycHg7XFxyXFxuICAgIGNvbG9yOiByZ2JhKDAsMCwwLC41NCk7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBQcmVmaXggSWNvbnNcXHJcXG4gIC5wcmVmaXgge1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHdpZHRoOiAkaW5wdXQtaGVpZ2h0O1xcclxcbiAgICBmb250LXNpemU6ICRpbnB1dC1pY29uLXNpemU7XFxyXFxuICAgIHRyYW5zaXRpb246IGNvbG9yIC4ycztcXHJcXG4gICAvLyB0b3A6ICgkaW5wdXQtaGVpZ2h0IC0gJGlucHV0LWljb24tc2l6ZSkgLyAyO1xcclxcblxcclxcbiAgICAmLmFjdGl2ZSB7IGNvbG9yOiAkaW5wdXQtZm9jdXMtY29sb3I7IH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5wcmVmaXggfiBpbnB1dCxcXHJcXG4gIC5wcmVmaXggfiB0ZXh0YXJlYSxcXHJcXG4gIC5wcmVmaXggfiBsYWJlbCxcXHJcXG4gIC5wcmVmaXggfiAudmFsaWRhdGUgfiBsYWJlbCxcXHJcXG4gIC5wcmVmaXggfiAuaGVscGVyLXRleHQsXFxyXFxuICAucHJlZml4IH4gLmF1dG9jb21wbGV0ZS1jb250ZW50IHtcXHJcXG4gICAgbWFyZ2luLWxlZnQ6IDNyZW07XFxyXFxuICAgIHdpZHRoOiA5MiU7XFxyXFxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtKTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5wcmVmaXggfiBsYWJlbCB7IG1hcmdpbi1sZWZ0OiAzcmVtOyB9XFxyXFxuXFxyXFxuICBAbWVkaWEgI3skbWVkaXVtLWFuZC1kb3dufSB7XFxyXFxuICAgIC5wcmVmaXggfiBpbnB1dCB7XFxyXFxuICAgICAgd2lkdGg6IDg2JTtcXHJcXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xcclxcbiAgICAucHJlZml4IH4gaW5wdXQge1xcclxcbiAgICAgIHdpZHRoOiA4MCU7XFxyXFxuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcblxcclxcbi8qIFNlYXJjaCBGaWVsZCAqL1xcclxcblxcclxcbi5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF0ge1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXHJcXG4gIHRyYW5zaXRpb246IC4zcyBiYWNrZ3JvdW5kLWNvbG9yO1xcclxcblxcclxcbiAgLm5hdi13cmFwcGVyICYge1xcclxcbiAgICBoZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgIHBhZGRpbmctbGVmdDogNHJlbTtcXHJcXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDRyZW0pO1xcclxcbiAgICBib3JkZXI6IDA7XFxyXFxuICAgIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmOmZvY3VzOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kO1xcclxcbiAgICBib3JkZXI6IDA7XFxyXFxuICAgIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICAgIGNvbG9yOiAjNDQ0O1xcclxcblxcclxcbiAgICAmICsgbGFiZWwgaSxcXHJcXG4gICAgJiB+IC5tZGktbmF2aWdhdGlvbi1jbG9zZSxcXHJcXG4gICAgJiB+IC5tYXRlcmlhbC1pY29ucyB7XFxyXFxuICAgICAgY29sb3I6ICM0NDQ7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYgKyAubGFiZWwtaWNvbiB7XFxyXFxuICAgIHRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgbGVmdDogMXJlbTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYgfiAubWRpLW5hdmlnYXRpb24tY2xvc2UsXFxyXFxuICAmIH4gLm1hdGVyaWFsLWljb25zIHtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIHJpZ2h0OiAxcmVtO1xcclxcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgZm9udC1zaXplOiAkaW5wdXQtaWNvbi1zaXplO1xcclxcbiAgICB0cmFuc2l0aW9uOiAuM3MgY29sb3I7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcblxcclxcbi8qIFRleHRhcmVhICovXFxyXFxuXFxyXFxuLy8gRGVmYXVsdCB0ZXh0YXJlYVxcclxcbnRleHRhcmVhIHtcXHJcXG4gIHdpZHRoOiAxMDAlO1xcclxcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuXFxyXFxuICAmLnRleHRhcmVhIHtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcXHJcXG4gICAgb3ZlcmZsb3cteTogaGlkZGVuOyAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsYXNoICovXFxyXFxuICAgIHBhZGRpbmc6IC44cmVtIDAgLjhyZW0gMDsgLyogcHJldmVudHMgdGV4dCBqdW1wIG9uIEVudGVyIGtleXByZXNzICovXFxyXFxuICAgIHJlc2l6ZTogbm9uZTtcXHJcXG4gICAgbWluLWhlaWdodDogJGlucHV0LWhlaWdodDtcXHJcXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gRm9yIHRleHRhcmVhIGF1dG9yZXNpemVcXHJcXG5cXHJcXG4uaGlkZGVuZGl2IHtcXHJcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcXHJcXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcXHJcXG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IC8qIGZ1dHVyZSB2ZXJzaW9uIG9mIGRlcHJlY2F0ZWQgJ3dvcmQtd3JhcCcgKi9cXHJcXG4gIHBhZGRpbmctdG9wOiAxLjJyZW07IC8qIHByZXZlbnRzIHRleHQganVtcCBvbiBFbnRlciBrZXlwcmVzcyAqL1xcclxcblxcclxcbiAgLy8gUmVkdWNlcyByZXBhaW50c1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgdG9wOiAwO1xcclxcbiAgei1pbmRleDogLTE7XFxyXFxufVxcclxcblxcclxcblxcclxcbi8qIEF1dG9jb21wbGV0ZSAqL1xcclxcbi5hdXRvY29tcGxldGUtY29udGVudCB7XFxyXFxuICBsaSB7XFxyXFxuICAgIC5oaWdobGlnaHQgeyBjb2xvcjogIzQ0NDsgfVxcclxcblxcclxcbiAgICBpbWcge1xcclxcbiAgICAgIC8vIGhlaWdodDogJGRyb3Bkb3duLWl0ZW0taGVpZ2h0IC0gMTA7XFxyXFxuICAgICAgLy8gd2lkdGg6ICRkcm9wZG93bi1pdGVtLWhlaWdodCAtIDEwO1xcclxcbiAgICAgIG1hcmdpbjogNXB4IDE1cHg7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLyogQ2hhcmFjdGVyIENvdW50ZXIgKi9cXHJcXG4uY2hhcmFjdGVyLWNvdW50ZXIge1xcclxcbiAgbWluLWhlaWdodDogMThweDtcXHJcXG59XFxyXFxuXCIsXCIvKiBSYWRpbyBCdXR0b25zXFxyXFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXHJcXG5cXHJcXG4vLyBSZW1vdmUgZGVmYXVsdCBSYWRpbyBCdXR0b25zXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06bm90KDpjaGVja2VkKSxcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpjaGVja2VkIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06bm90KDpjaGVja2VkKSArIHNwYW4sXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06Y2hlY2tlZCArIHNwYW4ge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgcGFkZGluZy1sZWZ0OiAzNXB4O1xcclxcbiAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgaGVpZ2h0OiAyNXB4O1xcclxcbiAgbGluZS1oZWlnaHQ6IDI1cHg7XFxyXFxuICBmb250LXNpemU6IDFyZW07XFxyXFxuICB0cmFuc2l0aW9uOiAuMjhzIGVhc2U7XFxyXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl0gKyBzcGFuOmJlZm9yZSxcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXSArIHNwYW46YWZ0ZXIge1xcclxcbiAgY29udGVudDogJyc7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgdG9wOiAwO1xcclxcbiAgbWFyZ2luOiA0cHg7XFxyXFxuICB3aWR0aDogMTZweDtcXHJcXG4gIGhlaWdodDogMTZweDtcXHJcXG4gIHotaW5kZXg6IDA7XFxyXFxuICB0cmFuc2l0aW9uOiAuMjhzIGVhc2U7XFxyXFxufVxcclxcblxcclxcbi8qIFVuY2hlY2tlZCBzdHlsZXMgKi9cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUsXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06bm90KDpjaGVja2VkKSArIHNwYW46YWZ0ZXIsXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06Y2hlY2tlZCArIHNwYW46YmVmb3JlLFxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOmNoZWNrZWQgKyBzcGFuOmFmdGVyLFxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSxcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxyXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxufVxcclxcblxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSxcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpub3QoOmNoZWNrZWQpICsgc3BhbjphZnRlciB7XFxyXFxuICBib3JkZXI6IDJweCBzb2xpZCAkcmFkaW8tZW1wdHktY29sb3I7XFxyXFxufVxcclxcblxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmFmdGVyIHtcXHJcXG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxyXFxufVxcclxcblxcclxcbi8qIENoZWNrZWQgc3R5bGVzICovXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcXHJcXG4gIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcclxcbn1cXHJcXG5cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpjaGVja2VkICsgc3BhbjphZnRlcixcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjpiZWZvcmUsXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl0ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xcclxcbiAgYm9yZGVyOiAkcmFkaW8tYm9yZGVyO1xcclxcbn1cXHJcXG5cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpjaGVja2VkICsgc3BhbjphZnRlcixcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmFkaW8tZmlsbC1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xcclxcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcXHJcXG59XFxyXFxuXFxyXFxuLyogUmFkaW8gV2l0aCBnYXAgKi9cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxyXFxuICB0cmFuc2Zvcm06IHNjYWxlKC41KTtcXHJcXG59XFxyXFxuXFxyXFxuLyogRm9jdXNlZCBzdHlsZXMgKi9cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXS50YWJiZWQ6Zm9jdXMgKyBzcGFuOmJlZm9yZSB7XFxyXFxuICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoMCwwLDAsLjEpO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBEaXNhYmxlZCBSYWRpbyBXaXRoIGdhcCAqL1xcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdLndpdGgtZ2FwOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSB7XFxyXFxuICBib3JkZXI6IDJweCBzb2xpZCAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxufVxcclxcblxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdLndpdGgtZ2FwOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcXHJcXG4gIGJvcmRlcjogbm9uZTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuLyogRGlzYWJsZWQgc3R5bGUgKi9cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUsXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgYm9yZGVyLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxufVxcclxcblxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOmRpc2FibGVkICsgc3BhbiB7XFxyXFxuICBjb2xvcjogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbn1cXHJcXG5cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUge1xcclxcbiAgYm9yZGVyLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxufVxcclxcblxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG4gIGJvcmRlci1jb2xvcjogJGlucHV0LWRpc2FibGVkLXNvbGlkLWNvbG9yO1xcclxcbn1cXHJcXG5cIixcIi8qIENoZWNrYm94ZXNcXHJcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcclxcblxcclxcbi8qIFJlbW92ZSBkZWZhdWx0IGNoZWNrYm94ICovXFxyXFxuW3R5cGU9XFxcImNoZWNrYm94XFxcIl06bm90KDpjaGVja2VkKSxcXHJcXG5bdHlwZT1cXFwiY2hlY2tib3hcXFwiXTpjaGVja2VkIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuLy8gQ2hlY2tib3ggU3R5bGVzXFxyXFxuW3R5cGU9XFxcImNoZWNrYm94XFxcIl0ge1xcclxcbiAgLy8gVGV4dCBMYWJlbCBTdHlsZVxcclxcbiAgKyBzcGFuOm5vdCgubGV2ZXIpIHtcXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICBwYWRkaW5nLWxlZnQ6IDM1cHg7XFxyXFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgICBoZWlnaHQ6IDI1cHg7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAyNXB4O1xcclxcbiAgICBmb250LXNpemU6IDFyZW07XFxyXFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcclxcbiAgfVxcclxcblxcclxcbiAgLyogY2hlY2tib3ggYXNwZWN0ICovXFxyXFxuICArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlLFxcclxcbiAgJjpub3QoLmZpbGxlZC1pbikgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXHJcXG4gICAgY29udGVudDogJyc7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICB3aWR0aDogMThweDtcXHJcXG4gICAgaGVpZ2h0OiAxOHB4O1xcclxcbiAgICB6LWluZGV4OiAwO1xcclxcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkcmFkaW8tZW1wdHktY29sb3I7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDFweDtcXHJcXG4gICAgbWFyZ2luLXRvcDogM3B4O1xcclxcbiAgICB0cmFuc2l0aW9uOiAuMnM7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmOm5vdCguZmlsbGVkLWluKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICBib3JkZXI6IDA7XFxyXFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmOm5vdCg6Y2hlY2tlZCk6ZGlzYWJsZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxyXFxuICAgIGJvcmRlcjogbm9uZTtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gRm9jdXNlZCBzdHlsZXNcXHJcXG4gICYudGFiYmVkOmZvY3VzICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxyXFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxyXFxuICAgIGJvcmRlcjogMDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoMCwwLDAsLjEpO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC4xKTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcImNoZWNrYm94XFxcIl06Y2hlY2tlZCB7XFxyXFxuICArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXHJcXG4gICAgdG9wOiAtNHB4O1xcclxcbiAgICBsZWZ0OiAtNXB4O1xcclxcbiAgICB3aWR0aDogMTJweDtcXHJcXG4gICAgaGVpZ2h0OiAyMnB4O1xcclxcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJvcmRlci1yaWdodDogJHJhZGlvLWJvcmRlcjtcXHJcXG4gICAgYm9yZGVyLWJvdHRvbTogJHJhZGlvLWJvcmRlcjtcXHJcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDBkZWcpO1xcclxcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XFxyXFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6ZGlzYWJsZWQgKyBzcGFuOmJlZm9yZSB7XFxyXFxuICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLyogSW5kZXRlcm1pbmF0ZSBjaGVja2JveCAqL1xcclxcblt0eXBlPVxcXCJjaGVja2JveFxcXCJdOmluZGV0ZXJtaW5hdGUge1xcclxcbiAgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxyXFxuICAgIHRvcDogLTExcHg7XFxyXFxuICAgIGxlZnQ6IC0xMnB4O1xcclxcbiAgICB3aWR0aDogMTBweDtcXHJcXG4gICAgaGVpZ2h0OiAyMnB4O1xcclxcbiAgICBib3JkZXItdG9wOiBub25lO1xcclxcbiAgICBib3JkZXItbGVmdDogbm9uZTtcXHJcXG4gICAgYm9yZGVyLXJpZ2h0OiAkcmFkaW8tYm9yZGVyO1xcclxcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xcclxcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxyXFxuICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gRGlzYWJsZWQgaW5kZXRlcm1pbmF0ZVxcclxcbiAgJjpkaXNhYmxlZCArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXHJcXG4gICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gRmlsbGVkIGluIFN0eWxlXFxyXFxuW3R5cGU9XFxcImNoZWNrYm94XFxcIl0uZmlsbGVkLWluIHtcXHJcXG4gIC8vIEdlbmVyYWxcXHJcXG4gICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUsXFxyXFxuICArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICBjb250ZW50OiAnJztcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAvKiAuMXMgZGVsYXkgaXMgZm9yIGNoZWNrIGFuaW1hdGlvbiAqL1xcclxcbiAgICB0cmFuc2l0aW9uOiBib3JkZXIgLjI1cywgYmFja2dyb3VuZC1jb2xvciAuMjVzLCB3aWR0aCAuMjBzIC4xcywgaGVpZ2h0IC4yMHMgLjFzLCB0b3AgLjIwcyAuMXMsIGxlZnQgLjIwcyAuMXM7XFxyXFxuICAgIHotaW5kZXg6IDE7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBVbmNoZWNrZWQgc3R5bGVcXHJcXG4gICY6bm90KDpjaGVja2VkKSArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXHJcXG4gICAgd2lkdGg6IDA7XFxyXFxuICAgIGhlaWdodDogMDtcXHJcXG4gICAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGxlZnQ6IDZweDtcXHJcXG4gICAgdG9wOiAxMHB4O1xcclxcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVooMzdkZWcpO1xcclxcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXHJcXG4gICAgaGVpZ2h0OiAyMHB4O1xcclxcbiAgICB3aWR0aDogMjBweDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJvcmRlcjogMnB4IHNvbGlkICRyYWRpby1lbXB0eS1jb2xvcjtcXHJcXG4gICAgdG9wOiAwcHg7XFxyXFxuICAgIHotaW5kZXg6IDA7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBDaGVja2VkIHN0eWxlXFxyXFxuICAmOmNoZWNrZWQge1xcclxcbiAgICArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXHJcXG4gICAgICB0b3A6IDA7XFxyXFxuICAgICAgbGVmdDogMXB4O1xcclxcbiAgICAgIHdpZHRoOiA4cHg7XFxyXFxuICAgICAgaGVpZ2h0OiAxM3B4O1xcclxcbiAgICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXHJcXG4gICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcclxcbiAgICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICRpbnB1dC1iYWNrZ3JvdW5kO1xcclxcbiAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkaW5wdXQtYmFja2dyb3VuZDtcXHJcXG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZVooMzdkZWcpO1xcclxcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICAgIHRvcDogMDtcXHJcXG4gICAgICB3aWR0aDogMjBweDtcXHJcXG4gICAgICBoZWlnaHQ6IDIwcHg7XFxyXFxuICAgICAgYm9yZGVyOiAycHggc29saWQgJHNlY29uZGFyeS1jb2xvcjtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yO1xcclxcbiAgICAgIHotaW5kZXg6IDA7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEZvY3VzZWQgc3R5bGVzXFxyXFxuICAmLnRhYmJlZDpmb2N1cyArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxyXFxuICAgIGJvcmRlci1jb2xvcjogJHJhZGlvLWVtcHR5LWNvbG9yO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC4xKTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYudGFiYmVkOmNoZWNrZWQ6Zm9jdXMgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yO1xcclxcbiAgICBib3JkZXItY29sb3I6ICRzZWNvbmRhcnktY29sb3I7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBEaXNhYmxlZCBzdHlsZVxcclxcbiAgJjpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXHJcXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWRpc2FibGVkLXNvbGlkLWNvbG9yO1xcclxcbiAgfVxcclxcblxcclxcbiAgJjpkaXNhYmxlZDpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtc29saWQtY29sb3I7XFxyXFxuICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWRpc2FibGVkLXNvbGlkLWNvbG9yO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIixcIi8qIFN3aXRjaFxcclxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXFxyXFxuXFxyXFxuLnN3aXRjaCxcXHJcXG4uc3dpdGNoICoge1xcclxcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG4uc3dpdGNoIGxhYmVsIHtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG59XFxyXFxuXFxyXFxuLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XSB7XFxyXFxuICBvcGFjaXR5OiAwO1xcclxcbiAgd2lkdGg6IDA7XFxyXFxuICBoZWlnaHQ6IDA7XFxyXFxuXFxyXFxuICAmOmNoZWNrZWQgKyAubGV2ZXIge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3dpdGNoLWNoZWNrZWQtbGV2ZXItYmc7XFxyXFxuXFxyXFxuICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcXHJcXG4gICAgICBsZWZ0OiAxOHB4O1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICY6YWZ0ZXIge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzd2l0Y2gtYmctY29sb3I7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLnN3aXRjaCBsYWJlbCAubGV2ZXIge1xcclxcbiAgY29udGVudDogXFxcIlxcXCI7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICB3aWR0aDogMzZweDtcXHJcXG4gIGhlaWdodDogMTRweDtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRzd2l0Y2gtdW5jaGVja2VkLWxldmVyLWJnO1xcclxcbiAgYm9yZGVyLXJhZGl1czogJHN3aXRjaC1yYWRpdXM7XFxyXFxuICAvL21hcmdpbi1yaWdodDogMTBweDtcXHJcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcyBlYXNlO1xcclxcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG4gIG1hcmdpbjogMCAxNnB4O1xcclxcblxcclxcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xcclxcbiAgICBjb250ZW50OiBcXFwiXFxcIjtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIHdpZHRoOiAyMHB4O1xcclxcbiAgICBoZWlnaHQ6IDIwcHg7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgdG9wOiAtM3B4O1xcclxcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuM3MgZWFzZSwgYmFja2dyb3VuZCAuM3MgZWFzZSwgYm94LXNoYWRvdyAwLjFzIGVhc2UsIHRyYW5zZm9ybSAuMXMgZWFzZTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6YmVmb3JlIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUoJHN3aXRjaC1iZy1jb2xvciwgLjg1KTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6YWZ0ZXIge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3dpdGNoLXVuY2hlY2tlZC1iZztcXHJcXG4gICAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gU3dpdGNoIGFjdGl2ZSBzdHlsZVxcclxcbmlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6bm90KDpkaXNhYmxlZCkgfiAubGV2ZXI6YWN0aXZlOjpiZWZvcmUsXFxyXFxuaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpub3QoOmRpc2FibGVkKS50YWJiZWQ6Zm9jdXMgfiAubGV2ZXI6OmJlZm9yZSB7XFxyXFxuICB0cmFuc2Zvcm06IHNjYWxlKDIuNCk7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkc3dpdGNoLWJnLWNvbG9yLCAuODUpO1xcclxcbn1cXHJcXG5cXHJcXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpub3QoOmRpc2FibGVkKSB+IC5sZXZlcjphY3RpdmU6YmVmb3JlLFxcclxcbmlucHV0W3R5cGU9Y2hlY2tib3hdOm5vdCg6ZGlzYWJsZWQpLnRhYmJlZDpmb2N1cyB+IC5sZXZlcjo6YmVmb3JlIHtcXHJcXG4gIHRyYW5zZm9ybTogc2NhbGUoMi40KTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjA4KTtcXHJcXG59XFxyXFxuXFxyXFxuLy8gRGlzYWJsZWQgU3R5bGVzXFxyXFxuLnN3aXRjaCBpbnB1dFt0eXBlPWNoZWNrYm94XVtkaXNhYmxlZF0gKyAubGV2ZXIge1xcclxcbiAgY3Vyc29yOiBkZWZhdWx0O1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuMTIpO1xcclxcbn1cXHJcXG5cXHJcXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXSArIC5sZXZlcjphZnRlcixcXHJcXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXTpjaGVja2VkICsgLmxldmVyOmFmdGVyIHtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1zb2xpZC1jb2xvcjtcXHJcXG59XFxyXFxuXCIsXCIvKiBTZWxlY3QgRmllbGRcXHJcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcclxcblxcclxcbnNlbGVjdCB7IGRpc3BsYXk6IG5vbmU7IH1cXHJcXG5zZWxlY3QuYnJvd3Nlci1kZWZhdWx0IHsgZGlzcGxheTogYmxvY2s7IH1cXHJcXG5cXHJcXG5zZWxlY3Qge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNlbGVjdC1iYWNrZ3JvdW5kO1xcclxcbiAgd2lkdGg6IDEwMCU7XFxyXFxuICBwYWRkaW5nOiAkc2VsZWN0LXBhZGRpbmc7XFxyXFxuICBib3JkZXI6ICRzZWxlY3QtYm9yZGVyO1xcclxcbiAgYm9yZGVyLXJhZGl1czogJHNlbGVjdC1yYWRpdXM7XFxyXFxuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XFxyXFxufVxcclxcblxcclxcbi5zZWxlY3QtbGFiZWwge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbn1cXHJcXG5cXHJcXG4uc2VsZWN0LXdyYXBwZXIge1xcclxcbiAgJi52YWxpZCAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXHJcXG4gICYuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSB7XFxyXFxuICAgIEBleHRlbmQgJWhpZGRlbi10ZXh0O1xcclxcbiAgfVxcclxcblxcclxcbiAgJi52YWxpZCB7XFxyXFxuICAgICYgPiBpbnB1dC5zZWxlY3QtZHJvcGRvd24ge1xcclxcbiAgICAgIEBleHRlbmQgJXZhbGlkLWlucHV0LXN0eWxlO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYgfiAuaGVscGVyLXRleHQ6YWZ0ZXIge1xcclxcbiAgICAgIEBleHRlbmQgJWN1c3RvbS1zdWNjZXNzLW1lc3NhZ2U7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYuaW52YWxpZCB7XFxyXFxuICAgICYgPiBpbnB1dC5zZWxlY3QtZHJvcGRvd24sXFxyXFxuICAgICYgPiBpbnB1dC5zZWxlY3QtZHJvcGRvd246Zm9jdXMge1xcclxcbiAgICAgIEBleHRlbmQgJWludmFsaWQtaW5wdXQtc3R5bGU7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJiB+IC5oZWxwZXItdGV4dDphZnRlciB7XFxyXFxuICAgICAgQGV4dGVuZCAlY3VzdG9tLWVycm9yLW1lc3NhZ2U7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYudmFsaWQgKyBsYWJlbCxcXHJcXG4gICYuaW52YWxpZCArIGxhYmVsIHtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcclxcbiAgfVxcclxcblxcclxcbiAgJiArIGxhYmVsOmFmdGVyIHtcXHJcXG4gICAgQGV4dGVuZCAlaW5wdXQtYWZ0ZXItc3R5bGU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuXFxyXFxuICBpbnB1dC5zZWxlY3QtZHJvcGRvd24ge1xcclxcbiAgICAmOmZvY3VzIHtcXHJcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGlucHV0LWZvY3VzLWNvbG9yO1xcclxcbiAgICB9XFxyXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgYm9yZGVyOiBub25lO1xcclxcbiAgICBib3JkZXItYm90dG9tOiAkaW5wdXQtYm9yZGVyO1xcclxcbiAgICBvdXRsaW5lOiBub25lO1xcclxcbiAgICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xcclxcbiAgICBtYXJnaW46ICRpbnB1dC1tYXJnaW47XFxyXFxuICAgIHBhZGRpbmc6IDA7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICB1c2VyLXNlbGVjdDpub25lO1xcclxcbiAgICB6LWluZGV4OiAxO1xcclxcbiAgfVxcclxcblxcclxcbiAgLmNhcmV0IHtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICByaWdodDogMDtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICBib3R0b206IDA7XFxyXFxuICAgIG1hcmdpbjogYXV0byAwO1xcclxcbiAgICB6LWluZGV4OiAwO1xcclxcbiAgICBmaWxsOiByZ2JhKDAsMCwwLC44Nyk7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmICsgbGFiZWwge1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHRvcDogLTI2cHg7XFxyXFxuICAgIGZvbnQtc2l6ZTogJGxhYmVsLWZvbnQtc2l6ZTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gRGlzYWJsZWQgc3R5bGVzXFxyXFxuc2VsZWN0OmRpc2FibGVkIHtcXHJcXG4gIGNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxufVxcclxcblxcclxcbi5zZWxlY3Qtd3JhcHBlci5kaXNhYmxlZCB7XFxyXFxuICArIGxhYmVsIHtcXHJcXG4gICAgY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG4gIH1cXHJcXG4gIC5jYXJldCB7XFxyXFxuICAgIGZpbGw6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLnNlbGVjdC13cmFwcGVyIGlucHV0LnNlbGVjdC1kcm9wZG93bjpkaXNhYmxlZCB7XFxyXFxuICBjb2xvcjogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgY3Vyc29yOiBkZWZhdWx0O1xcclxcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbi5zZWxlY3Qtd3JhcHBlciBpIHtcXHJcXG4gIGNvbG9yOiAkc2VsZWN0LWRpc2FibGVkLWNvbG9yO1xcclxcbn1cXHJcXG5cXHJcXG4uc2VsZWN0LWRyb3Bkb3duIGxpLmRpc2FibGVkLFxcclxcbi5zZWxlY3QtZHJvcGRvd24gbGkuZGlzYWJsZWQgPiBzcGFuLFxcclxcbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAge1xcclxcbiAgY29sb3I6ICRzZWxlY3QtZGlzYWJsZWQtY29sb3I7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG59XFxyXFxuXFxyXFxuYm9keS5rZXlib2FyZC1mb2N1c2VkIHtcXHJcXG4gIC5zZWxlY3QtZHJvcGRvd24uZHJvcGRvd24tY29udGVudCBsaTpmb2N1cyB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWxlY3Qtb3B0aW9uLWZvY3VzO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4uc2VsZWN0LWRyb3Bkb3duLmRyb3Bkb3duLWNvbnRlbnQge1xcclxcbiAgbGkge1xcclxcbiAgICAmOmhvdmVyIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LW9wdGlvbi1ob3ZlcjtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmLnNlbGVjdGVkIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LW9wdGlvbi1zZWxlY3RlZDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBQcmVmaXggSWNvbnNcXHJcXG4ucHJlZml4IH4gLnNlbGVjdC13cmFwcGVyIHtcXHJcXG4gIG1hcmdpbi1sZWZ0OiAzcmVtO1xcclxcbiAgd2lkdGg6IDkyJTtcXHJcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtKTtcXHJcXG59XFxyXFxuXFxyXFxuLnByZWZpeCB+IGxhYmVsIHsgbWFyZ2luLWxlZnQ6IDNyZW07IH1cXHJcXG5cXHJcXG4vLyBJY29uc1xcclxcbi5zZWxlY3QtZHJvcGRvd24gbGkge1xcclxcbiAgaW1nIHtcXHJcXG4gICAgLy8gaGVpZ2h0OiAkZHJvcGRvd24taXRlbS1oZWlnaHQgLSAxMDtcXHJcXG4gICAgLy8gd2lkdGg6ICRkcm9wZG93bi1pdGVtLWhlaWdodCAtIDEwO1xcclxcbiAgICBtYXJnaW46IDVweCAxNXB4O1xcclxcbiAgICBmbG9hdDogcmlnaHQ7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIE9wdGdyb3VwIHN0eWxlc1xcclxcbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAge1xcclxcbiAgLy8gYm9yZGVyLXRvcDogMXB4IHNvbGlkICRkcm9wZG93bi1ob3Zlci1iZy1jb2xvcjtcXHJcXG5cXHJcXG4gICYuc2VsZWN0ZWQgPiBzcGFuIHtcXHJcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjcpO1xcclxcbiAgfVxcclxcblxcclxcbiAgJiA+IHNwYW4ge1xcclxcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuNCk7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmIH4gbGkub3B0Z3JvdXAtb3B0aW9uIHtcXHJcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIixcIi8qIEZpbGUgSW5wdXRcXHJcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcclxcblxcclxcbi5maWxlLWZpZWxkIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG5cXHJcXG4gIC5maWxlLXBhdGgtd3JhcHBlciB7XFxyXFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICAgIHBhZGRpbmctbGVmdDogMTBweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIGlucHV0LmZpbGUtcGF0aCB7IHdpZHRoOiAxMDAlOyB9XFxyXFxuXFxyXFxuICAuYnRuIHtcXHJcXG4gICAgZmxvYXQ6IGxlZnQ7XFxyXFxuICAgIGhlaWdodDogJGlucHV0LWhlaWdodDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBzcGFuIHtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgfVxcclxcblxcclxcbiAgaW5wdXRbdHlwZT1maWxlXSB7XFxyXFxuXFxyXFxuICAgIC8vIE5lZWRlZCB0byBvdmVycmlkZSB3ZWJraXQgYnV0dG9uXFxyXFxuICAgICY6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcXHJcXG4gICAgICBkaXNwbGF5OiBub25lO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICByaWdodDogMDtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgYm90dG9tOiAwO1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgbWFyZ2luOiAwO1xcclxcbiAgICBwYWRkaW5nOiAwO1xcclxcbiAgICBmb250LXNpemU6IDIwcHg7XFxyXFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgb3BhY2l0eTogMDtcXHJcXG4gICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIixcIi8qIFJhbmdlXFxyXFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXHJcXG5cXHJcXG4ucmFuZ2UtZmllbGQge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbn1cXHJcXG5cXHJcXG5pbnB1dFt0eXBlPXJhbmdlXSxcXHJcXG5pbnB1dFt0eXBlPXJhbmdlXSArIC50aHVtYiB7XFxyXFxuICAvLyBAZXh0ZW5kIC5uby1zZWxlY3Q7XFxyXFxuICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgYm9yZGVyOiBub25lO1xcclxcbiAgb3V0bGluZTogbm9uZTtcXHJcXG4gIHdpZHRoOiAxMDAlO1xcclxcbiAgbWFyZ2luOiAxNXB4IDA7XFxyXFxuICBwYWRkaW5nOiAwO1xcclxcblxcclxcbiAgJjpmb2N1cyB7XFxyXFxuICAgIG91dGxpbmU6IG5vbmU7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRvcDogMTBweDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICBib3JkZXI6IG5vbmU7XFxyXFxuICBoZWlnaHQ6IDA7XFxyXFxuICB3aWR0aDogMDtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRyYWRpby1maWxsLWNvbG9yO1xcclxcbiAgbWFyZ2luLWxlZnQ6IDdweDtcXHJcXG5cXHJcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XFxyXFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcclxcblxcclxcbiAgLnZhbHVlIHtcXHJcXG4gICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgIHdpZHRoOiAzMHB4O1xcclxcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgIGNvbG9yOiAkcmFkaW8tZmlsbC1jb2xvcjtcXHJcXG4gICAgZm9udC1zaXplOiAwO1xcclxcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmLmFjdGl2ZSB7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNTAlIDA7XFxyXFxuXFxyXFxuICAgIC52YWx1ZSB7XFxyXFxuICAgICAgY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kO1xcclxcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xcclxcbiAgICAgIG1hcmdpbi10b3A6IDhweDtcXHJcXG4gICAgICBmb250LXNpemU6IDEwcHg7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gU2hhcmVkXFxyXFxuQG1peGluIHJhbmdlLXRyYWNrIHtcXHJcXG4gIGhlaWdodDogJHRyYWNrLWhlaWdodDtcXHJcXG4gIGJhY2tncm91bmQ6ICNjMmMwYzI7XFxyXFxuICBib3JkZXI6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbkBtaXhpbiByYW5nZS10aHVtYiB7XFxyXFxuICBib3JkZXI6IG5vbmU7XFxyXFxuICBoZWlnaHQ6ICRyYW5nZS1oZWlnaHQ7XFxyXFxuICB3aWR0aDogJHJhbmdlLXdpZHRoO1xcclxcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgYmFja2dyb3VuZDogJHJhZGlvLWZpbGwtY29sb3I7XFxyXFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IC4zcztcXHJcXG59XFxyXFxuXFxyXFxuLy8gV2ViS2l0XFxyXFxuaW5wdXRbdHlwZT1yYW5nZV0ge1xcclxcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG5pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xcclxcbiAgQGluY2x1ZGUgcmFuZ2UtdHJhY2s7XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci10aHVtYiB7XFxyXFxuICBAaW5jbHVkZSByYW5nZS10aHVtYjtcXHJcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRyYWRpby1maWxsLWNvbG9yO1xcclxcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcXHJcXG4gIG1hcmdpbjogLTVweCAwIDAgMDtcXHJcXG5cXHJcXG59XFxyXFxuXFxyXFxuLmtleWJvYXJkLWZvY3VzZWQgaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXM6bm90KC5hY3RpdmUpOjotd2Via2l0LXNsaWRlci10aHVtYiB7XFxyXFxuICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoJHJhZGlvLWZpbGwtY29sb3IsIC4yNik7XFxyXFxufVxcclxcblxcclxcbi8vIEZpcmVGb3hcXHJcXG5pbnB1dFt0eXBlPXJhbmdlXSB7XFxyXFxuICAvKiBmaXggZm9yIEZGIHVuYWJsZSB0byBhcHBseSBmb2N1cyBzdHlsZSBidWcgICovXFxyXFxuICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcXHJcXG5cXHJcXG4gIC8qcmVxdWlyZWQgZm9yIHByb3BlciB0cmFjayBzaXppbmcgaW4gRkYqL1xcclxcbn1cXHJcXG5cXHJcXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10cmFjayB7XFxyXFxuICBAaW5jbHVkZSByYW5nZS10cmFjaztcXHJcXG59XFxyXFxuXFxyXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tb3otZm9jdXMtaW5uZXIge1xcclxcbiAgYm9yZGVyOiAwO1xcclxcbn1cXHJcXG5cXHJcXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10aHVtYiB7XFxyXFxuICBAaW5jbHVkZSByYW5nZS10aHVtYjtcXHJcXG4gIG1hcmdpbi10b3A6IC01cHg7XFxyXFxufVxcclxcblxcclxcbi8vIGhpZGUgdGhlIG91dGxpbmUgYmVoaW5kIHRoZSBib3JkZXJcXHJcXG5pbnB1dFt0eXBlPXJhbmdlXTotbW96LWZvY3VzcmluZyB7XFxyXFxuICBvdXRsaW5lOiAxcHggc29saWQgI2ZmZjtcXHJcXG4gIG91dGxpbmUtb2Zmc2V0OiAtMXB4O1xcclxcbn1cXHJcXG5cXHJcXG4ua2V5Ym9hcmQtZm9jdXNlZCBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czpub3QoLmFjdGl2ZSk6Oi1tb3otcmFuZ2UtdGh1bWIge1xcclxcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKCRyYWRpby1maWxsLWNvbG9yLCAuMjYpO1xcclxcbn1cXHJcXG5cXHJcXG4vLyBJRSAxMCtcXHJcXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRyYWNrIHtcXHJcXG4gIGhlaWdodDogJHRyYWNrLWhlaWdodDtcXHJcXG5cXHJcXG4gIC8vIHJlbW92ZSBiZyBjb2xvdXIgZnJvbSB0aGUgdHJhY2ssIHdlJ2xsIHVzZSBtcy1maWxsLWxvd2VyIGFuZCBtcy1maWxsLXVwcGVyIGluc3RlYWRcXHJcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcclxcblxcclxcbiAgLy8gbGVhdmUgcm9vbSBmb3IgdGhlIGxhcmdlciB0aHVtYiB0byBvdmVyZmxvdyB3aXRoIGEgdHJhbnNwYXJlbnQgYm9yZGVyICovXFxyXFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgYm9yZGVyLXdpZHRoOiA2cHggMDtcXHJcXG5cXHJcXG4gIC8qcmVtb3ZlIGRlZmF1bHQgdGljayBtYXJrcyovXFxyXFxuICBjb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC1sb3dlciB7XFxyXFxuICBiYWNrZ3JvdW5kOiAjNzc3O1xcclxcbn1cXHJcXG5cXHJcXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLWZpbGwtdXBwZXIge1xcclxcbiAgYmFja2dyb3VuZDogI2RkZDtcXHJcXG59XFxyXFxuXFxyXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10aHVtYiB7XFxyXFxuICBAaW5jbHVkZSByYW5nZS10aHVtYjtcXHJcXG59XFxyXFxuXFxyXFxuLmtleWJvYXJkLWZvY3VzZWQgaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXM6bm90KC5hY3RpdmUpOjotbXMtdGh1bWIge1xcclxcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKCRyYWRpby1maWxsLWNvbG9yLCAuMjYpO1xcclxcbn1cXHJcXG5cIixcIi5wYXJhbGxheCB7XFxyXFxuXFxyXFxuICAvKiBTZXQgYSBzcGVjaWZpYyBoZWlnaHQgKi9cXHJcXG4gIG1pbi1oZWlnaHQ6IDUwMHB4O1xcclxcblxcclxcbiAgLyogQ3JlYXRlIHRoZSBwYXJhbGxheCBzY3JvbGxpbmcgZWZmZWN0ICovXFxyXFxuICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkO1xcclxcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcclxcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXHJcXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxyXFxufVwiLFwiJGN1YmUtaGVpZ2h0OjIwMHB4O1xcclxcbiogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XFxyXFxuXFxyXFxuYm9keSB7IGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyB9XFxyXFxuXFxyXFxuLnNjZW5lIHtcXHJcXG4gIHdpZHRoOiAkY3ViZS1oZWlnaHQ7XFxyXFxuICBoZWlnaHQ6ICRjdWJlLWhlaWdodDtcXHJcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNDQ0M7XFxyXFxuICBtYXJnaW46IDgwcHg7XFxyXFxuICBwZXJzcGVjdGl2ZTogNDAwcHg7XFxyXFxufVxcclxcblxcclxcbi5jdWJlIHtcXHJcXG4gIHdpZHRoOiAkY3ViZS1oZWlnaHQ7XFxyXFxuICBoZWlnaHQ6ICRjdWJlLWhlaWdodDtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XFxyXFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTQwMHB4KTtcXHJcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxcztcXHJcXG59XFxyXFxuXFxyXFxuLmN1YmUuc2hvdy1mcm9udCAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoICAgMGRlZyk7IH1cXHJcXG4uY3ViZS5zaG93LXJpZ2h0ICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWSggLTkwZGVnKTsgfVxcclxcbi5jdWJlLnNob3ctYmFjayAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVZKC0xODBkZWcpOyB9XFxyXFxuLmN1YmUuc2hvdy1sZWZ0ICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoICA5MGRlZyk7IH1cXHJcXG4uY3ViZS5zaG93LXRvcCAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWCggLTkwZGVnKTsgfVxcclxcbi5jdWJlLnNob3ctYm90dG9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVYKCAgOTBkZWcpOyB9XFxyXFxuXFxyXFxuLmN1YmVfX2ZhY2Uge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgd2lkdGg6ICRjdWJlLWhlaWdodDtcXHJcXG4gIGhlaWdodDogJGN1YmUtaGVpZ2h0O1xcclxcbiAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7XFxyXFxuICBsaW5lLWhlaWdodDogJGN1YmUtaGVpZ2h0O1xcclxcbiAgZm9udC1zaXplOiA0MHB4O1xcclxcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuICBjb2xvcjogd2hpdGU7XFxyXFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxufVxcclxcblxcclxcbi5jdWJlX19mYWNlLS1mcm9udCAgeyBiYWNrZ3JvdW5kOiBoc2xhKCAgMCwgMTAwJSwgNTAlLCAwLjcpOyB9XFxyXFxuLmN1YmVfX2ZhY2UtLXJpZ2h0ICB7IGJhY2tncm91bmQ6IGhzbGEoIDYwLCAxMDAlLCA1MCUsIDAuNyk7IH1cXHJcXG4uY3ViZV9fZmFjZS0tYmFjayAgIHsgYmFja2dyb3VuZDogaHNsYSgxMjAsIDEwMCUsIDUwJSwgMC43KTsgfVxcclxcbi5jdWJlX19mYWNlLS1sZWZ0ICAgeyBiYWNrZ3JvdW5kOiBoc2xhKDE4MCwgMTAwJSwgNTAlLCAwLjcpOyB9XFxyXFxuLmN1YmVfX2ZhY2UtLXRvcCAgICB7IGJhY2tncm91bmQ6IGhzbGEoMjQwLCAxMDAlLCA1MCUsIDAuNyk7IH1cXHJcXG4uY3ViZV9fZmFjZS0tYm90dG9tIHsgYmFja2dyb3VuZDogaHNsYSgzMDAsIDEwMCUsIDUwJSwgMC43KTsgfVxcclxcblxcclxcbi5jdWJlX19mYWNlLS1mcm9udCAgeyB0cmFuc2Zvcm06IHJvdGF0ZVkoICAwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTsgfVxcclxcbi5jdWJlX19mYWNlLS1yaWdodCAgeyB0cmFuc2Zvcm06IHJvdGF0ZVkoIDkwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTsgfVxcclxcbi5jdWJlX19mYWNlLS1iYWNrICAgeyB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTsgfVxcclxcbi5jdWJlX19mYWNlLS1sZWZ0ICAgeyB0cmFuc2Zvcm06IHJvdGF0ZVkoLTkwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTsgfVxcclxcbi5jdWJlX19mYWNlLS10b3AgICAgeyB0cmFuc2Zvcm06IHJvdGF0ZVgoIDkwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTsgfVxcclxcbi5jdWJlX19mYWNlLS1ib3R0b20geyB0cmFuc2Zvcm06IHJvdGF0ZVgoLTkwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTsgfVxcclxcblxcclxcbmxhYmVsIHsgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9XCIsXCJAdXNlIFxcXCJzYXNzOm1hdGhcXFwiO1xcclxcbi5jb250YWluZXIge1xcclxcbiAgbWFyZ2luOiAwIGF1dG87XFxyXFxuICBtYXgtd2lkdGg6IDEyODBweDtcXHJcXG4gIHdpZHRoOiA5MCU7XFxyXFxufVxcclxcbkBtZWRpYSAjeyRtZWRpdW0tYW5kLXVwfSB7XFxyXFxuICAuY29udGFpbmVyIHtcXHJcXG4gICAgd2lkdGg6IDg1JTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuQG1lZGlhICN7JGxhcmdlLWFuZC11cH0ge1xcclxcbiAgLmNvbnRhaW5lciB7XFxyXFxuICAgIHdpZHRoOiA3MCU7XFxyXFxuICB9XFxyXFxufVxcclxcbi5jb2wgLnJvdyB7XFxyXFxuICBtYXJnaW4tbGVmdDogbWF0aC5kaXYoLTEgKiAkZ3V0dGVyLXdpZHRoICwgMik7XFxyXFxuICBtYXJnaW4tcmlnaHQ6IG1hdGguZGl2KC0xICogJGd1dHRlci13aWR0aCAsIDIpO1xcclxcbn1cXHJcXG5cXHJcXG4uc2VjdGlvbiB7XFxyXFxuICBwYWRkaW5nLXRvcDogMXJlbTtcXHJcXG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xcclxcblxcclxcbiAgJi5uby1wYWQge1xcclxcbiAgICBwYWRkaW5nOiAwO1xcclxcbiAgfVxcclxcbiAgJi5uby1wYWQtYm90IHtcXHJcXG4gICAgcGFkZGluZy1ib3R0b206IDA7XFxyXFxuICB9XFxyXFxuICAmLm5vLXBhZC10b3Age1xcclxcbiAgICBwYWRkaW5nLXRvcDogMDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLy8gTWl4aW5zIHRvIGVsaW1pbmF0ZSBjb2RlIHJlcGl0aXRpb25cXHJcXG5AbWl4aW4gcmVzZXQtb2Zmc2V0IHtcXHJcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcclxcbiAgbGVmdDogYXV0bztcXHJcXG4gIHJpZ2h0OiBhdXRvO1xcclxcbn1cXHJcXG5AbWl4aW4gZ3JpZC1jbGFzc2VzKCRzaXplLCAkaSwgJHBlcmMpIHtcXHJcXG4gICYub2Zmc2V0LSN7JHNpemV9I3skaX0ge1xcclxcbiAgICBtYXJnaW4tbGVmdDogJHBlcmM7XFxyXFxuICB9XFxyXFxuICAmLnB1bGwtI3skc2l6ZX0jeyRpfSB7XFxyXFxuICAgIHJpZ2h0OiAkcGVyYztcXHJcXG4gIH1cXHJcXG4gICYucHVzaC0jeyRzaXplfSN7JGl9IHtcXHJcXG4gICAgbGVmdDogJHBlcmM7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcblxcclxcbi5yb3cge1xcclxcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxyXFxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxyXFxuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xcclxcblxcclxcbiAgLy8gQ2xlYXIgZmxvYXRpbmcgY2hpbGRyZW5cXHJcXG4gICY6YWZ0ZXIge1xcclxcbiAgICBjb250ZW50OiBcXFwiXFxcIjtcXHJcXG4gICAgZGlzcGxheTogdGFibGU7XFxyXFxuICAgIGNsZWFyOiBib3RoO1xcclxcbiAgfVxcclxcblxcclxcbiAgLmNvbCB7XFxyXFxuICAgIGZsb2F0OiBsZWZ0O1xcclxcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcclxcbiAgICBwYWRkaW5nOiAwIG1hdGguZGl2KCRndXR0ZXItd2lkdGggLCAyKTtcXHJcXG4gICAgbWluLWhlaWdodDogMXB4O1xcclxcblxcclxcbiAgICAmW2NsYXNzKj1cXFwicHVzaC1cXFwiXSxcXHJcXG4gICAgJltjbGFzcyo9XFxcInB1bGwtXFxcIl0ge1xcclxcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAkaTogMTtcXHJcXG4gICAgQHdoaWxlICRpIDw9ICRudW0tY29scyB7XFxyXFxuICAgICAgJHBlcmM6IHVucXVvdGUobWF0aC5kaXYoMTAwICwgbWF0aC5kaXYoJG51bS1jb2xzICwgJGkpKSArIFxcXCIlXFxcIik7XFxyXFxuICAgICAgJi5zI3skaX0ge1xcclxcbiAgICAgICAgd2lkdGg6ICRwZXJjO1xcclxcbiAgICAgICAgQGluY2x1ZGUgcmVzZXQtb2Zmc2V0O1xcclxcbiAgICAgIH1cXHJcXG4gICAgICAkaTogJGkgKyAxO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICRpOiAxO1xcclxcbiAgICBAd2hpbGUgJGkgPD0gJG51bS1jb2xzIHtcXHJcXG4gICAgICAkcGVyYzogdW5xdW90ZShtYXRoLmRpdigxMDAgLCBtYXRoLmRpdigkbnVtLWNvbHMgLCAkaSkpICsgXFxcIiVcXFwiKTtcXHJcXG4gICAgICBAaW5jbHVkZSBncmlkLWNsYXNzZXMoXFxcInNcXFwiLCAkaSwgJHBlcmMpO1xcclxcbiAgICAgICRpOiAkaSArIDE7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgQG1lZGlhICN7JG1lZGl1bS1hbmQtdXB9IHtcXHJcXG5cXHJcXG4gICAgICAkaTogMTtcXHJcXG4gICAgICBAd2hpbGUgJGkgPD0gJG51bS1jb2xzIHtcXHJcXG4gICAgICAgICRwZXJjOiB1bnF1b3RlKG1hdGguZGl2KDEwMCAsIG1hdGguZGl2KCRudW0tY29scyAsICRpKSkgKyBcXFwiJVxcXCIpO1xcclxcbiAgICAgICAgJi5tI3skaX0ge1xcclxcbiAgICAgICAgICB3aWR0aDogJHBlcmM7XFxyXFxuICAgICAgICAgIEBpbmNsdWRlIHJlc2V0LW9mZnNldDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgICRpOiAkaSArIDFcXHJcXG4gICAgICB9XFxyXFxuXFxyXFxuICAgICAgJGk6IDE7XFxyXFxuICAgICAgQHdoaWxlICRpIDw9ICRudW0tY29scyB7XFxyXFxuICAgICAgICAkcGVyYzogdW5xdW90ZShtYXRoLmRpdigxMDAgLCBtYXRoLmRpdigkbnVtLWNvbHMgLCAkaSkpICsgXFxcIiVcXFwiKTtcXHJcXG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY2xhc3NlcyhcXFwibVxcXCIsICRpLCAkcGVyYyk7XFxyXFxuICAgICAgICAkaTogJGkgKyAxO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBAbWVkaWEgI3skbGFyZ2UtYW5kLXVwfSB7XFxyXFxuXFxyXFxuICAgICAgJGk6IDE7XFxyXFxuICAgICAgQHdoaWxlICRpIDw9ICRudW0tY29scyB7XFxyXFxuICAgICAgICAkcGVyYzogdW5xdW90ZShtYXRoLmRpdigxMDAgLCBtYXRoLmRpdigkbnVtLWNvbHMgLCAkaSkpICsgXFxcIiVcXFwiKTtcXHJcXG4gICAgICAgICYubCN7JGl9IHtcXHJcXG4gICAgICAgICAgd2lkdGg6ICRwZXJjO1xcclxcbiAgICAgICAgICBAaW5jbHVkZSByZXNldC1vZmZzZXQ7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICAkaTogJGkgKyAxO1xcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAkaTogMTtcXHJcXG4gICAgICBAd2hpbGUgJGkgPD0gJG51bS1jb2xzIHtcXHJcXG4gICAgICAgICRwZXJjOiB1bnF1b3RlKG1hdGguZGl2KDEwMCAsIG1hdGguZGl2KCRudW0tY29scyAsICRpKSkgKyBcXFwiJVxcXCIpO1xcclxcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jbGFzc2VzKFxcXCJsXFxcIiwgJGksICRwZXJjKTtcXHJcXG4gICAgICAgICRpOiAkaSArIDE7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIEBtZWRpYSAjeyRleHRyYS1sYXJnZS1hbmQtdXB9IHtcXHJcXG5cXHJcXG4gICAgICAkaTogMTtcXHJcXG4gICAgICBAd2hpbGUgJGkgPD0gJG51bS1jb2xzIHtcXHJcXG4gICAgICAgICRwZXJjOiB1bnF1b3RlKG1hdGguZGl2KDEwMCAsIG1hdGguZGl2KCRudW0tY29scyAsICRpKSkgKyBcXFwiJVxcXCIpO1xcclxcbiAgICAgICAgJi54bCN7JGl9IHtcXHJcXG4gICAgICAgICAgd2lkdGg6ICRwZXJjO1xcclxcbiAgICAgICAgICBAaW5jbHVkZSByZXNldC1vZmZzZXQ7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICAkaTogJGkgKyAxO1xcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAkaTogMTtcXHJcXG4gICAgICBAd2hpbGUgJGkgPD0gJG51bS1jb2xzIHtcXHJcXG4gICAgICAgICRwZXJjOiB1bnF1b3RlKG1hdGguZGl2KDEwMCAsIG1hdGguZGl2KCRudW0tY29scyAsICRpKSkgKyBcXFwiJVxcXCIpO1xcclxcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jbGFzc2VzKFxcXCJ4bFxcXCIsICRpLCAkcGVyYyk7XFxyXFxuICAgICAgICAkaTogJGkgKyAxO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cIixcIkB1c2UgXFxcInNhc3M6bWF0aFxcXCI7XFxyXFxuc3Zne1xcclxcbiAgLy9maWxsOnJlZDtcXHJcXG59XFxyXFxuLnNpZGVuYXYge1xcclxcbiAgcG9zaXRpb246IGZpeGVkO1xcclxcbiAgd2lkdGg6ICRzaWRlbmF2LXdpZHRoO1xcclxcbiAgbGVmdDogMDtcXHJcXG4gIHRvcDogMDtcXHJcXG4gIG1hcmdpbjogMDtcXHJcXG4gIC8vdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXHJcXG4gIGhlaWdodDogMTAwJTtcXHJcXG4gIGhlaWdodDogY2FsYygxMDAlICsgNjBweCk7XFxyXFxuICBoZWlnaHQ6IC1tb3otY2FsYygxMDAlKTsgLy9UZW1wb3JhcnkgRmlyZWZveCBGaXhcXHJcXG4gIHBhZGRpbmctYm90dG9tOiA2MHB4O1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNpZGVuYXYtYmctY29sb3I7XFxyXFxuICB6LWluZGV4OiA5OTk7XFxyXFxuICBvdmVyZmxvdy15OiBhdXRvO1xcclxcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXHJcXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTA1JSk7XFxyXFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMXM7XFxyXFxuXFxyXFxuICAvL0BleHRlbmQgLnNoYWRvdy0xO1xcclxcblxcclxcbiAgLy8gUmlnaHQgQWxpZ25cXHJcXG4gICYucmlnaHQtYWxpZ25lZCB7XFxyXFxuICAgIHJpZ2h0OiAwO1xcclxcbiAgICAvL3RyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDUlKTtcXHJcXG4gICAgbGVmdDogYXV0bztcXHJcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcclxcbiAgfVxcclxcblxcclxcbiAgLmNvbGxhcHNpYmxlIHtcXHJcXG4gICAgbWFyZ2luOiAwO1xcclxcbiAgfVxcclxcblxcclxcblxcclxcbiAgbGkge1xcclxcbiAgICBmbG9hdDogbm9uZTtcXHJcXG4gICAgIC8vbGluZS1oZWlnaHQ6ICRzaWRlbmF2LWxpbmUtaGVpZ2h0O1xcclxcbiAgICAvLyBtYXJnaW46IDE1cHggMDtcXHJcXG4gICAvLyBoZWlnaHQ6IDQ1cHg7XFxyXFxuICAgIC5pY29uU2lkZUxpbmsge1xcclxcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gIFxcclxcbiAgICAgICAgc3ZnIHtcXHJcXG4gICAgICAgICAgIC8vc3Ryb2tlOnJnYmEoMCwgMCwgMCwgMC4yKTtcXHJcXG4gICAgICAgICAgLy8gZmlsbDogd2hpdGU7XFxyXFxuICAgICAgICAgIHN0cm9rZTpyZ2JhKDAsIDAsIDAsIDAuMik7XFxyXFxuICAgICAgICAgICB3aWR0aDogMzBweDtcXHJcXG4gICAgICAgIH1cXHJcXG4gIFxcclxcbiAgICB9XFxyXFxuICAgICYuYWN0aXZlIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcclxcbiAgICAgIHN2ZyB7XFxyXFxuICAgICAgICBzdHJva2U6IHdoaXRlIWltcG9ydGFudDtcXHJcXG4gICAgICAgIC8vZmlsbDogd2hpdGUhaW1wb3J0YW50O1xcclxcbiAgICAgICAgd2lkdGg6IDMwcHg7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYubGFzdCB7XFxyXFxuICAgICAgcG9zaXRpb246IHN0aWNreTtcXHJcXG4gICAgICB0b3A6IGNhbGMoMTAwJSAtICN7JHNpZGVuYXYtaXRlbS1oZWlnaHR9IC0gMzVweCk7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIGxpID4gYSB7XFxyXFxuICAgIGNvbG9yOiAkc2lkZW5hdi1mb250LWNvbG9yO1xcclxcbiAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICBmb250LXNpemU6ICRzaWRlbmF2LWZvbnQtc2l6ZTtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXHJcXG4gICAgaGVpZ2h0OiAkc2lkZW5hdi1pdGVtLWhlaWdodDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6ICRzaWRlbmF2LWxpbmUtaGVpZ2h0O1xcclxcbiAgICBwYWRkaW5nOiAwICgkc2lkZW5hdi1wYWRkaW5nICogMik7XFxyXFxuXFxyXFxuICAgICY6aG92ZXIge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJi5idG4sXFxyXFxuICAgICYuYnRuLWxhcmdlLFxcclxcbiAgICAmLmJ0bi1mbGF0LFxcclxcbiAgICAmLmJ0bi1mbG9hdGluZyB7XFxyXFxuICAgICAgbWFyZ2luOiAxMHB4IDE1cHg7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJi5idG4sXFxyXFxuICAgICYuYnRuLWxhcmdlLFxcclxcbiAgICAmLmJ0bi1mbG9hdGluZyB7XFxyXFxuICAgICAgY29sb3I6ICRidXR0b24tcmFpc2VkLWNvbG9yO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYuYnRuLWZsYXQge1xcclxcbiAgICAgIGNvbG9yOiAkYnV0dG9uLWZsYXQtY29sb3I7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJi5idG46aG92ZXIsXFxyXFxuICAgICYuYnRuLWxhcmdlOmhvdmVyIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRidXR0b24tcmFpc2VkLWJhY2tncm91bmQsIDUlKTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmLmJ0bi1mbG9hdGluZzpob3ZlciB7XFxyXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1yYWlzZWQtYmFja2dyb3VuZDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmID4gaSxcXHJcXG4gICAgJiA+IFtjbGFzc149XFxcIm1kaS1cXFwiXSxcXHJcXG4gICAgbGkgPiBhID4gW2NsYXNzKj1cXFwibWRpLVxcXCJdLFxcclxcbiAgICAmID4gaS5zLWljb24ge1xcclxcbiAgICAgIGZsb2F0OiBsZWZ0O1xcclxcbiAgICAgIGhlaWdodDogJHNpZGVuYXYtaXRlbS1oZWlnaHQ7XFxyXFxuICAgICAgbGluZS1oZWlnaHQ6ICRzaWRlbmF2LWxpbmUtaGVpZ2h0O1xcclxcbiAgICAgIG1hcmdpbjogMCAoJHNpZGVuYXYtcGFkZGluZyAqIDIpIDAgMDtcXHJcXG4gICAgICB3aWR0aDogbWF0aC5kaXYoJHNpZGVuYXYtaXRlbS1oZWlnaHQsIDIpO1xcclxcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuZGl2aWRlciB7XFxyXFxuICAgIG1hcmdpbjogbWF0aC5kaXYoJHNpZGVuYXYtcGFkZGluZywgMikgMCAwIDA7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuc3ViaGVhZGVyIHtcXHJcXG4gICAgJjpob3ZlciB7XFxyXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgY3Vyc29yOiBpbml0aWFsO1xcclxcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxyXFxuICAgIGZvbnQtc2l6ZTogJHNpZGVuYXYtZm9udC1zaXplO1xcclxcbiAgICBmb250LXdlaWdodDogNTAwO1xcclxcbiAgICBsaW5lLWhlaWdodDogJHNpZGVuYXYtbGluZS1oZWlnaHQ7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAudXNlci12aWV3IHtcXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICBwYWRkaW5nOiAoJHNpZGVuYXYtcGFkZGluZyAqIDIpICgkc2lkZW5hdi1wYWRkaW5nICogMikgMDtcXHJcXG4gICAgbWFyZ2luLWJvdHRvbTogbWF0aC5kaXYoJHNpZGVuYXYtcGFkZGluZywgMik7XFxyXFxuXFxyXFxuICAgICYgPiBhIHtcXHJcXG4gICAgICAmOmhvdmVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICBoZWlnaHQ6IGF1dG87XFxyXFxuICAgICAgcGFkZGluZzogMDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAuYmFja2dyb3VuZCB7XFxyXFxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgICAgdG9wOiAwO1xcclxcbiAgICAgIHJpZ2h0OiAwO1xcclxcbiAgICAgIGJvdHRvbTogMDtcXHJcXG4gICAgICBsZWZ0OiAwO1xcclxcbiAgICAgIHotaW5kZXg6IC0xO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5jaXJjbGUsXFxyXFxuICAgIC5uYW1lLFxcclxcbiAgICAuZW1haWwge1xcclxcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5jaXJjbGUge1xcclxcbiAgICAgIGhlaWdodDogNjRweDtcXHJcXG4gICAgICB3aWR0aDogNjRweDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAubmFtZSxcXHJcXG4gICAgLmVtYWlsIHtcXHJcXG4gICAgICBmb250LXNpemU6ICRzaWRlbmF2LWZvbnQtc2l6ZTtcXHJcXG4gICAgICBsaW5lLWhlaWdodDogbWF0aC5kaXYoJHNpZGVuYXYtbGluZS1oZWlnaHQsIDIpO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5uYW1lIHtcXHJcXG4gICAgICBtYXJnaW4tdG9wOiAxNnB4O1xcclxcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLmVtYWlsIHtcXHJcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDtcXHJcXG4gICAgICBmb250LXdlaWdodDogNDAwO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIFRvdWNoIGludGVyYWN0aW9uXFxyXFxuLmRyYWctdGFyZ2V0IHtcXHJcXG4gIC8vIFJpZ2h0IEFsaWduXFxyXFxuICAmLnJpZ2h0LWFsaWduZWQge1xcclxcbiAgICByaWdodDogMDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIGhlaWdodDogMTAwJTtcXHJcXG4gIHdpZHRoOiAxMHB4O1xcclxcbiAgcG9zaXRpb246IGZpeGVkO1xcclxcbiAgdG9wOiAwO1xcclxcbiAgei1pbmRleDogOTk4O1xcclxcbn1cXHJcXG5cXHJcXG4vLyBGaXhlZCBTaWRlbmF2IHNob3duXFxyXFxuLnNpZGVuYXYuc2lkZW5hdi1maXhlZCB7XFxyXFxuICAvLyBSaWdodCBBbGlnblxcclxcbiAgJi5yaWdodC1hbGlnbmVkIHtcXHJcXG4gICAgcmlnaHQ6IDA7XFxyXFxuICAgIGxlZnQ6IGF1dG87XFxyXFxuICB9XFxyXFxuXFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcclxcbiAgcG9zaXRpb246IGZpeGVkO1xcclxcbn1cXHJcXG5cXHJcXG4vLyBGaXhlZCBTaWRlbmF2IGhpZGUgb24gc21hbGxlclxcclxcbkBtZWRpYSAjeyRtZWRpdW0tYW5kLWRvd259IHtcXHJcXG4gIC5zaWRlbmF2IHtcXHJcXG4gICAgJi5zaWRlbmF2LWZpeGVkIHtcXHJcXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwNSUpO1xcclxcblxcclxcbiAgICAgICYucmlnaHQtYWxpZ25lZCB7XFxyXFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTA1JSk7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgID4gYSB7XFxyXFxuICAgICAgcGFkZGluZzogMCAkc2lkZW5hdi1wYWRkaW5nO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC51c2VyLXZpZXcge1xcclxcbiAgICAgIHBhZGRpbmc6ICRzaWRlbmF2LXBhZGRpbmcgJHNpZGVuYXYtcGFkZGluZyAwO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1ib2R5ID4gdWw6bm90KC5jb2xsYXBzaWJsZSkgPiBsaS5hY3RpdmUsXFxyXFxuLnNpZGVuYXYuc2lkZW5hdi1maXhlZCAuY29sbGFwc2libGUtYm9keSA+IHVsOm5vdCguY29sbGFwc2libGUpID4gbGkuYWN0aXZlIHtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xcclxcblxcclxcbiAgYSB7XFxyXFxuICAgIGNvbG9yOiAkc2lkZW5hdi1iZy1jb2xvcjtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHkge1xcclxcbiAgcGFkZGluZzogMDtcXHJcXG59XFxyXFxuXFxyXFxuLnNpZGVuYXYtb3ZlcmxheSB7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICB0b3A6IDA7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgcmlnaHQ6IDA7XFxyXFxuICBvcGFjaXR5OiAwO1xcclxcbiAgaGVpZ2h0OiAxMjB2aDtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcXHJcXG4gIHotaW5kZXg6IDk5NztcXHJcXG4gIGRpc3BsYXk6IG5vbmU7XFxyXFxufVxcclxcblxcclxcblxcclxcblxcclxcblxcclxcbiAgLndpdGgtc2lkZS1uYXYtb3BlbntcXHJcXG4gICAgcGFkZGluZy1sZWZ0OiAzMDBweDtcXHJcXG4gICAgdHJhbnNpdGlvbjogcGFkZGluZyAxcztcXHJcXG4gIH1cXHJcXG5cIixcIi8vIHNoYXJlZCBzdHlsZXNcXHJcXG5cXHJcXG4uYnRuLFxcclxcbi5idG4tZmxhdCB7XFxyXFxuICBib3JkZXI6ICRidXR0b24tYm9yZGVyO1xcclxcbiAgYm9yZGVyLXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBoZWlnaHQ6ICRidXR0b24taGVpZ2h0O1xcclxcbiAgbGluZS1oZWlnaHQ6ICRidXR0b24taGVpZ2h0O1xcclxcbiAgcGFkZGluZzogJGJ1dHRvbi1wYWRkaW5nO1xcclxcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXHJcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxyXFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OyAvLyBHZXRzIHJpZCBvZiB0YXAgYWN0aXZlIHN0YXRlXFxyXFxufVxcclxcblxcclxcbi8vIERpc2FibGVkIHNoYXJlZCBzdHlsZVxcclxcbi5idG4uZGlzYWJsZWQsXFxyXFxuLmJ0bi1mbG9hdGluZy5kaXNhYmxlZCxcXHJcXG4uYnRuLWxhcmdlLmRpc2FibGVkLFxcclxcbi5idG4tc21hbGwuZGlzYWJsZWQsXFxyXFxuLmJ0bi1mbGF0LmRpc2FibGVkLFxcclxcbi5idG46ZGlzYWJsZWQsXFxyXFxuLmJ0bi1mbG9hdGluZzpkaXNhYmxlZCxcXHJcXG4uYnRuLWxhcmdlOmRpc2FibGVkLFxcclxcbi5idG4tc21hbGw6ZGlzYWJsZWQsXFxyXFxuLmJ0bi1mbGF0OmRpc2FibGVkLFxcclxcbi5idG5bZGlzYWJsZWRdLFxcclxcbi5idG4tZmxvYXRpbmdbZGlzYWJsZWRdLFxcclxcbi5idG4tbGFyZ2VbZGlzYWJsZWRdLFxcclxcbi5idG4tc21hbGxbZGlzYWJsZWRdLFxcclxcbi5idG4tZmxhdFtkaXNhYmxlZF0ge1xcclxcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWRpc2FibGVkLWJhY2tncm91bmQgIWltcG9ydGFudDtcXHJcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICBjb2xvcjogJGJ1dHRvbi1kaXNhYmxlZC1jb2xvciAhaW1wb3J0YW50O1xcclxcbiAgY3Vyc29yOiBkZWZhdWx0O1xcclxcbiAgJjpob3ZlciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZGlzYWJsZWQtYmFja2dyb3VuZCAhaW1wb3J0YW50O1xcclxcbiAgICBjb2xvcjogJGJ1dHRvbi1kaXNhYmxlZC1jb2xvciAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBTaGFyZWQgaWNvbiBzdHlsZXNcXHJcXG4uYnRuLFxcclxcbi5idG4tZmxvYXRpbmcsXFxyXFxuLmJ0bi1sYXJnZSxcXHJcXG4uYnRuLXNtYWxsLFxcclxcbi5idG4tZmxhdCB7XFxyXFxuICBmb250LXNpemU6ICRidXR0b24tZm9udC1zaXplO1xcclxcbiAgb3V0bGluZTogMDtcXHJcXG4gIGkge1xcclxcbiAgICBmb250LXNpemU6ICRidXR0b24taWNvbi1mb250LXNpemU7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBTaGFyZWQgZm9jdXMgYnV0dG9uIHN0eWxlXFxyXFxuLmJ0bixcXHJcXG4uYnRuLWZsb2F0aW5nIHtcXHJcXG4gICY6Zm9jdXMge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGJ1dHRvbi1yYWlzZWQtYmFja2dyb3VuZCwgMTAlKTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gUmFpc2VkIEJ1dHRvblxcclxcbi5idG4ge1xcclxcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcbiAgY29sb3I6ICRidXR0b24tcmFpc2VkLWNvbG9yO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1yYWlzZWQtYmFja2dyb3VuZDtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gIGxldHRlci1zcGFjaW5nOiAuNXB4O1xcclxcbiAgQGV4dGVuZCAuc2hhZG93LTE7XFxyXFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlLW91dDtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICY6aG92ZXIge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLXJhaXNlZC1iYWNrZ3JvdW5kLWhvdmVyO1xcclxcbiAgICBAZXh0ZW5kIC5zaGFkb3ctMS1oYWxmO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBGbG9hdGluZyBidXR0b25cXHJcXG4uYnRuLWZsb2F0aW5nIHtcXHJcXG4gICY6aG92ZXIge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWZsb2F0aW5nLWJhY2tncm91bmQtaG92ZXI7XFxyXFxuICAgIEBleHRlbmQgLnNoYWRvdy0xLWhhbGY7XFxyXFxuICB9XFxyXFxuICAmOmJlZm9yZSB7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDA7XFxyXFxuICB9XFxyXFxuICAmLmJ0bi1sYXJnZSB7XFxyXFxuICAgICYuaGFsZndheS1mYWIge1xcclxcbiAgICAgIGJvdHRvbTogY2FsYygkYnV0dG9uLWZsb2F0aW5nLWxhcmdlLXNpemUgLyAyKTtcXHJcXG4gICAgfVxcclxcbiAgICB3aWR0aDogJGJ1dHRvbi1mbG9hdGluZy1sYXJnZS1zaXplO1xcclxcbiAgICBoZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctbGFyZ2Utc2l6ZTtcXHJcXG4gICAgcGFkZGluZzogMDtcXHJcXG4gICAgaSB7XFxyXFxuICAgICAgbGluZS1oZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctbGFyZ2Utc2l6ZTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgJi5idG4tc21hbGwge1xcclxcbiAgICAmLmhhbGZ3YXktZmFiIHtcXHJcXG4gICAgICBib3R0b206IGNhbGMoJGJ1dHRvbi1mbG9hdGluZy1zbWFsbC1zaXplIC8gMik7XFxyXFxuICAgIH1cXHJcXG4gICAgd2lkdGg6ICRidXR0b24tZmxvYXRpbmctc21hbGwtc2l6ZTtcXHJcXG4gICAgaGVpZ2h0OiAkYnV0dG9uLWZsb2F0aW5nLXNtYWxsLXNpemU7XFxyXFxuICAgIGkge1xcclxcbiAgICAgIGxpbmUtaGVpZ2h0OiAkYnV0dG9uLWZsb2F0aW5nLXNtYWxsLXNpemU7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYuaGFsZndheS1mYWIge1xcclxcbiAgICAmLmxlZnQge1xcclxcbiAgICAgIHJpZ2h0OiBhdXRvO1xcclxcbiAgICAgIGxlZnQ6IDI0cHg7XFxyXFxuICAgIH1cXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICByaWdodDogMjRweDtcXHJcXG4gICAgYm90dG9tOiBjYWxjKCRidXR0b24tZmxvYXRpbmctc2l6ZSAvIDIpO1xcclxcbiAgfVxcclxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgY29sb3I6ICRidXR0b24tZmxvYXRpbmctY29sb3I7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgei1pbmRleDogMTtcXHJcXG4gIHdpZHRoOiAkYnV0dG9uLWZsb2F0aW5nLXNpemU7XFxyXFxuICBoZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctc2l6ZTtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAkYnV0dG9uLWZsb2F0aW5nLXNpemU7XFxyXFxuICBwYWRkaW5nOiAwO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1mbG9hdGluZy1iYWNrZ3JvdW5kO1xcclxcbiAgYm9yZGVyLXJhZGl1czogJGJ1dHRvbi1mbG9hdGluZy1yYWRpdXM7XFxyXFxuICBAZXh0ZW5kIC5zaGFkb3ctMTtcXHJcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzO1xcclxcbiAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG4gIGkge1xcclxcbiAgICB3aWR0aDogaW5oZXJpdDtcXHJcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgIGNvbG9yOiAkYnV0dG9uLWZsb2F0aW5nLWNvbG9yO1xcclxcbiAgICBmb250LXNpemU6ICRidXR0b24tbGFyZ2UtaWNvbi1mb250LXNpemU7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAkYnV0dG9uLWZsb2F0aW5nLXNpemU7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIGJ1dHRvbiBmaXhcXHJcXG5idXR0b24uYnRuLWZsb2F0aW5nIHtcXHJcXG4gIGJvcmRlcjogJGJ1dHRvbi1ib3JkZXI7XFxyXFxufVxcclxcblxcclxcbi8vIEZpeGVkIEFjdGlvbiBCdXR0b25cXHJcXG4uZml4ZWQtYWN0aW9uLWJ0biB7XFxyXFxuICAmLmFjdGl2ZSB7XFxyXFxuICAgIHVsIHtcXHJcXG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBEaXJlY3Rpb25zXFxyXFxuICAmLmRpcmVjdGlvbi1sZWZ0LFxcclxcbiAgJi5kaXJlY3Rpb24tcmlnaHQge1xcclxcbiAgICBwYWRkaW5nOiAwIDAgMCAxNXB4O1xcclxcbiAgICB1bCB7XFxyXFxuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XFxyXFxuICAgICAgcmlnaHQ6IDY0cHg7XFxyXFxuICAgICAgdG9wOiA1MCU7XFxyXFxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xcclxcbiAgICAgIGhlaWdodDogMTAwJTtcXHJcXG4gICAgICBsZWZ0OiBhdXRvO1xcclxcbiAgICAgIC8qd2lkdGggMTAwJSBvbmx5IGdvZXMgdG8gd2lkdGggb2YgYnV0dG9uIGNvbnRhaW5lciAqL1xcclxcbiAgICAgIHdpZHRoOiA1MDBweDtcXHJcXG4gICAgICBsaSB7XFxyXFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgICAgICBtYXJnaW46IDcuNXB4IDE1cHggMCAwO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbiAgJi5kaXJlY3Rpb24tcmlnaHQge1xcclxcbiAgICBwYWRkaW5nOiAwIDE1cHggMCAwO1xcclxcbiAgICB1bCB7XFxyXFxuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcXHJcXG4gICAgICBkaXJlY3Rpb246IHJ0bDtcXHJcXG4gICAgICBsZWZ0OiA2NHB4O1xcclxcbiAgICAgIHJpZ2h0OiBhdXRvO1xcclxcbiAgICAgIGxpIHtcXHJcXG4gICAgICAgIG1hcmdpbjogNy41cHggMCAwIDE1cHg7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICAmLmRpcmVjdGlvbi1ib3R0b20ge1xcclxcbiAgICBwYWRkaW5nOiAwIDAgMTVweCAwO1xcclxcbiAgICB1bCB7XFxyXFxuICAgICAgdG9wOiA2NHB4O1xcclxcbiAgICAgIGJvdHRvbTogYXV0bztcXHJcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcXHJcXG4gICAgICBsaSB7XFxyXFxuICAgICAgICBtYXJnaW46IDE1cHggMCAwIDA7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICAmLnRvb2xiYXIge1xcclxcbiAgICAmLmFjdGl2ZSB7XFxyXFxuICAgICAgJj5hIGkge1xcclxcbiAgICAgICAgb3BhY2l0eTogMDtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gICAgcGFkZGluZzogMDtcXHJcXG4gICAgaGVpZ2h0OiAkYnV0dG9uLWZsb2F0aW5nLWxhcmdlLXNpemU7XFxyXFxuICAgIHVsIHtcXHJcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgIHRvcDogMDtcXHJcXG4gICAgICBib3R0b206IDA7XFxyXFxuICAgICAgei1pbmRleDogMTtcXHJcXG4gICAgICBsaSB7XFxyXFxuICAgICAgICBmbGV4OiAxO1xcclxcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgICAgICAgbWFyZ2luOiAwO1xcclxcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcXHJcXG4gICAgICAgIGEge1xcclxcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICAgICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gICAgICAgICAgY29sb3I6ICNmZmY7XFxyXFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkYnV0dG9uLWZsb2F0aW5nLWxhcmdlLXNpemU7XFxyXFxuICAgICAgICAgIHotaW5kZXg6IDE7XFxyXFxuICAgICAgICAgIGkge1xcclxcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcclxcbiAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICByaWdodDogMjNweDtcXHJcXG4gIGJvdHRvbTogMjNweDtcXHJcXG4gIHBhZGRpbmctdG9wOiAxNXB4O1xcclxcbiAgbWFyZ2luLWJvdHRvbTogMDtcXHJcXG4gIHotaW5kZXg6IDk5NztcXHJcXG4gIHVsIHtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgcmlnaHQ6IDA7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICBib3R0b206IDY0cHg7XFxyXFxuICAgIG1hcmdpbjogMDtcXHJcXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcclxcbiAgICBsaSB7XFxyXFxuICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcXHJcXG4gICAgfVxcclxcbiAgICBhLmJ0bi1mbG9hdGluZyB7XFxyXFxuICAgICAgb3BhY2l0eTogMDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbiAgLmZhYi1iYWNrZHJvcCB7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICB6LWluZGV4OiAtMTtcXHJcXG4gICAgd2lkdGg6ICRidXR0b24tZmxvYXRpbmctc2l6ZTtcXHJcXG4gICAgaGVpZ2h0OiAkYnV0dG9uLWZsb2F0aW5nLXNpemU7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZmxvYXRpbmctYmFja2dyb3VuZDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogJGJ1dHRvbi1mbG9hdGluZy1yYWRpdXM7XFxyXFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIEZsYXQgYnV0dG9uXFxyXFxuLmJ0bi1mbGF0IHtcXHJcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gIGNvbG9yOiAkYnV0dG9uLWZsYXQtY29sb3I7XFxyXFxuICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycztcXHJcXG4gICY6Zm9jdXMsXFxyXFxuICAmOmhvdmVyIHtcXHJcXG4gICAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gIH1cXHJcXG4gICY6Zm9jdXMge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4xKTtcXHJcXG4gIH1cXHJcXG4gICYuZGlzYWJsZWQsXFxyXFxuICAmLmJ0bi1mbGF0W2Rpc2FibGVkXSAge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcclxcbiAgICBjb2xvcjogJGJ1dHRvbi1mbGF0LWRpc2FibGVkLWNvbG9yICFpbXBvcnRhbnQ7XFxyXFxuICAgIGN1cnNvcjogZGVmYXVsdDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gTGFyZ2UgYnV0dG9uXFxyXFxuLmJ0bi1sYXJnZSB7XFxyXFxuICBAZXh0ZW5kIC5idG47XFxyXFxuICBoZWlnaHQ6ICRidXR0b24tbGFyZ2UtaGVpZ2h0O1xcclxcbiAgbGluZS1oZWlnaHQ6ICRidXR0b24tbGFyZ2UtaGVpZ2h0O1xcclxcbiAgZm9udC1zaXplOiAkYnV0dG9uLWxhcmdlLWZvbnQtc2l6ZTtcXHJcXG4gIHBhZGRpbmc6IDAgMjhweDtcXHJcXG5cXHJcXG4gIGkge1xcclxcbiAgICBmb250LXNpemU6ICRidXR0b24tbGFyZ2UtaWNvbi1mb250LXNpemU7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIFNtYWxsIGJ1dHRvblxcclxcbi5idG4tc21hbGwge1xcclxcbiAgQGV4dGVuZCAuYnRuO1xcclxcbiAgaGVpZ2h0OiAkYnV0dG9uLXNtYWxsLWhlaWdodDtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAkYnV0dG9uLXNtYWxsLWhlaWdodDtcXHJcXG4gIGZvbnQtc2l6ZTogJGJ1dHRvbi1zbWFsbC1mb250LXNpemU7XFxyXFxuICBpIHtcXHJcXG4gICAgZm9udC1zaXplOiAkYnV0dG9uLXNtYWxsLWljb24tZm9udC1zaXplO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBCbG9jayBidXR0b25cXHJcXG4uYnRuLWJsb2NrIHtcXHJcXG4gIGRpc3BsYXk6IGJsb2NrO1xcclxcbn1cXHJcXG5cIixcIiRtYWluQ29sb3I6IzAwNjJkNjtcXHJcXG4kb3RoZXJtYWluOiMwMzRkODI7XFxyXFxuJHNlY29uZENvbG9yOiMwMDc3RkE7XFxyXFxuJHRoaXJkQ29sb3I6IzA5YmRkZDtcXHJcXG4kZm9ydGhDb2xvcjojY2JlN2ZlO1xcclxcblxcclxcbiR0YWIxOiAkZm9ydGhDb2xvcjtcXHJcXG4kdGFiMjogZGFya2VuKCRmb3J0aENvbG9yLDE1JSk7XFxyXFxuJHRhYjM6IGRhcmtlbigkZm9ydGhDb2xvciwzMCUpO1xcclxcblxcclxcbi5jb21tdW5UYWJIZWFkZXIge1xcclxcbiAgaGVpZ2h0OiAxMDBweDtcXHJcXG4gIHBhZGRpbmc6IDQwcHg7XFxyXFxufVxcclxcblxcclxcbi50YWJzIHtcXHJcXG4gIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtIDE1MHB4KTtcXHJcXG4gIG1hcmdpbi10b3A6IDMwcHg7XFxyXFxuICBwYWRkaW5nOjAhaW1wb3J0YW50O1xcclxcbiAgYm9yZGVyLXJhZGl1czogNDBweCFpbXBvcnRhbnQ7XFxyXFxuLmlubmVycGFnZXtcXHJcXG4gIG1pbi1oZWlnaHQ6IDcwVkghaW1wb3J0YW50O1xcclxcbn1cXHJcXG4gIC50YWJzLWhlYWRlci1vdmVybGF5IHtcXHJcXG4gICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgaGVpZ2h0OiAxMDBweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYuYWN0aXZlVGFiLTAge1xcclxcbiAgICAudGFiLWhlYWRlci1vdmVyMCB7XFxyXFxuICAgICAgZmxleDogMTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMjtcXHJcXG4gICAgICBib3JkZXItcmFkaXVzOiA0MHB4IDAgMCAwO1xcclxcblxcclxcbiAgICAgIC50YWItaGVhZGVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIxO1xcclxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcXHJcXG4gICAgICAgIEBleHRlbmQgLmNvbW11blRhYkhlYWRlcjtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLnRhYi1oZWFkZXItb3ZlcjEge1xcclxcbiAgICAgIGZsZXg6IDE7XFxyXFxuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAkdGFiMSwgJHRhYjMpO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjI7XFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCA0MHB4O1xcclxcbiAgICAgICAgQGV4dGVuZCAuY29tbXVuVGFiSGVhZGVyO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAudGFiLWhlYWRlci1vdmVyMiB7XFxyXFxuICAgICAgZmxleDogMTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMjtcXHJcXG4gICAgICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCAwO1xcclxcblxcclxcbiAgICAgIC50YWItaGVhZGVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIzO1xcclxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgNDBweDtcXHJcXG4gICAgICAgIEBleHRlbmQgLmNvbW11blRhYkhlYWRlcjtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYuYWN0aXZlVGFiLTEge1xcclxcbiAgICAudGFiLWhlYWRlci1vdmVyMCB7XFxyXFxuICAgICAgZmxleDogMTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMTtcXHJcXG4gICAgICAvL2xpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgJHRhYjEsICR0YWIxKTtcXHJcXG4gICAgICAvL2xpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgJHRhYjEsICR0YWIxKTtcXHJcXG4gICAgICBib3JkZXItcmFkaXVzOiA0MHB4IDAgMCAwO1xcclxcblxcclxcbiAgICAgIC50YWItaGVhZGVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIyO1xcclxcbiAgICAgICAgLy8gYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcXHJcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggMCA0MHB4IDA7XFxyXFxuICAgICAgICBAZXh0ZW5kIC5jb21tdW5UYWJIZWFkZXI7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC50YWItaGVhZGVyLW92ZXIxIHtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgJHRhYjIsICR0YWIzKTtcXHJcXG4gICAgICAvLyR0YWIyO1xcclxcbiAgICAgIC8vYm9yZGVyLXJhZGl1czogNDBweCAgMCAwO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjE7XFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiA0MHB4IDQwcHggMCAwO1xcclxcbiAgICAgICAgQGV4dGVuZCAuY29tbXVuVGFiSGVhZGVyO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAudGFiLWhlYWRlci1vdmVyMiB7XFxyXFxuICAgICAgZmxleDogMTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMTtcXHJcXG4gICAgICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCAwO1xcclxcblxcclxcbiAgICAgIC50YWItaGVhZGVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIzO1xcclxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgNDBweDtcXHJcXG4gICAgICAgIEBleHRlbmQgLmNvbW11blRhYkhlYWRlcjtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG5cXHJcXG4gICYuYWN0aXZlVGFiLTIge1xcclxcbiAgICAudGFiLWhlYWRlci1vdmVyMCB7XFxyXFxuICAgICAgZmxleDogMTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMztcXHJcXG4gICAgICAvL2xpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgJHRhYjEsICR0YWIxKTtcXHJcXG4gICAgICAvL2xpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgJHRhYjEsICR0YWIxKTtcXHJcXG4gICAgICBib3JkZXItcmFkaXVzOiA0MHB4IDAgMCAwO1xcclxcblxcclxcbiAgICAgIC50YWItaGVhZGVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIyO1xcclxcbiAgICAgICAgLy8gYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcXHJcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggMCA0MHB4IDA7XFxyXFxuICAgICAgICBAZXh0ZW5kIC5jb21tdW5UYWJIZWFkZXI7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC50YWItaGVhZGVyLW92ZXIxIHtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwLjI1dHVybiwgJHRhYjIsICR0YWIxKTtcXHJcXG4gICAgICAvLyR0YWIyO1xcclxcbiAgICAgIC8vYm9yZGVyLXJhZGl1czogNDBweCAgMCAwO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjM7XFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiA0MHB4IDAgNDBweCAwO1xcclxcbiAgICAgICAgQGV4dGVuZCAuY29tbXVuVGFiSGVhZGVyO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAudGFiLWhlYWRlci1vdmVyMiB7XFxyXFxuICAgICAgZmxleDogMTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMztcXHJcXG4gICAgICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCAwO1xcclxcblxcclxcbiAgICAgIC50YWItaGVhZGVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIxO1xcclxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcXHJcXG4gICAgICAgIEBleHRlbmQgLmNvbW11blRhYkhlYWRlcjtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC50YWItY29udGVudCB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIxO1xcclxcbiAgICBwYWRkaW5nOiAxMHB4O1xcclxcbiAgICAvL2JvcmRlcjogMXB4IHNvbGlkIHJnYigyMDcsIDIwNSwgMjA1KTtcXHJcXG4gICAgYm9yZGVyLXRvcDogMDtcXHJcXG4gICAgbWluLWhlaWdodDogNzB2aDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDQwcHggNDBweDtcXHJcXG4gICAgcGFkZGluZy1ib3R0b206IDIwcHg7XFxyXFxuIFxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyAudGFicyB7XFxyXFxuLy8gICAgIC8vIGRpc3BsYXk6IGZsZXg7XFxyXFxuLy8gICAgIC8vIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxyXFxuLy8gICAgIC50YWJzLWhlYWRlci1vdmVybGF5IHtcXHJcXG4vLyAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuLy8gICAgICAgICBoZWlnaHQ6IDEwMHB4O1xcclxcblxcclxcbi8vICAgICAgICAgLnRhYi1oZWFkZXItb3ZlciB7XFxyXFxuLy8gICAgICAgICAgICAgZmxleDogMTtcXHJcXG4vLyAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBob3RwaW5rO1xcclxcbi8vICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XFxyXFxuLy8gICAgICAgICAgICAgJi5hY3RpdmUge1xcclxcbi8vICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU1LCAxNTIsIDE1Myk7XFxyXFxuLy8gICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XFxyXFxuLy8gICAgICAgICAgICAgfVxcclxcbi8vICAgICAgICAgICAgIC50YWItaGVhZGVyIHtcXHJcXG4vLyAgICAgICAgICAgICAgICAgJi5hY3RpdmUge1xcclxcbi8vICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaG90cGluaztcXHJcXG4vLyAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggNDBweCAwIDA7XFxyXFxuLy8gICAgICAgICAgICAgICAgIH1cXHJcXG4vLyAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4IDQwcHggMCA0MHB4O1xcclxcbi8vICAgICAgICAgICAgICAgICBwYWRkaW5nOiA0MHB4O1xcclxcbi8vICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU1LCAxNTIsIDE1Myk7XFxyXFxuLy8gICAgICAgICAgICAgfVxcclxcbi8vICAgICAgICAgfVxcclxcbi8vICAgICB9XFxyXFxuXFxyXFxuLy8gICAgIC50YWItY29udGVudCB7XFxyXFxuLy8gICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBob3RwaW5rO1xcclxcbi8vICAgICAgICAgcGFkZGluZzogMTBweDtcXHJcXG4vLyAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDcsIDIwNSwgMjA1KTtcXHJcXG4vLyAgICAgICAgIGJvcmRlci10b3A6IDA7XFxyXFxuLy8gICAgIH1cXHJcXG4vLyB9XFxyXFxuXCIsXCIubG9hZGVyLW92ZXJsYXkge1xcclxcbiAgICB6LWluZGV4OiA5OTk7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgaGVpZ2h0OiAxMDB2aDtcXHJcXG4gICAgd2lkdGg6IDEwMHZ3O1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAyLCAxMDAsIDEwMCwgMC42MDMpO1xcclxcbiAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXHJcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXHJcXG4gICAgLmxvYWRlciB7XFxyXFxuICAgICAgICBib3JkZXI6IDdweCBzb2xpZCAjZjNmM2YzOyAvKiBMaWdodCBncmV5ICovXFxyXFxuICAgICAgICBib3JkZXItdG9wOiA3cHggc29saWQgIzJlYTJjYzsgLyogQmx1ZSAqL1xcclxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgICAgICAgd2lkdGg6IDcwcHg7XFxyXFxuICAgICAgICBoZWlnaHQ6IDcwcHg7XFxyXFxuICAgICAgICBhbmltYXRpb246IHNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xcclxcbiAgICB9XFxyXFxuICAgIC5sb2FkZXItdGV4dHtcXHJcXG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XFxyXFxuICAgICAgICBmb250LXNpemU6IDI1cHg7XFxyXFxuICAgICAgICBjb2xvcjogIzJlYTJjYztcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBAa2V5ZnJhbWVzIHNwaW4ge1xcclxcbiAgICAgICAgMCUge1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgMTAwJSB7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cIixcIlxcclxcblxcclxcbi5jYXJkLXBhbmVsIHtcXHJcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjI1cztcXHJcXG4gIHBhZGRpbmc6ICRjYXJkLXBhZGRpbmc7XFxyXFxuICBtYXJnaW46ICRlbGVtZW50LXRvcC1tYXJnaW4gMCAkZWxlbWVudC1ib3R0b20tbWFyZ2luIDA7XFxyXFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxyXFxuICBAZXh0ZW5kIC5zaGFkb3ctMTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRjYXJkLWJnLWNvbG9yO1xcclxcbn1cXHJcXG5cXHJcXG4uY2FyZCB7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICBtYXJnaW46ICRlbGVtZW50LXRvcC1tYXJnaW4gMCAkZWxlbWVudC1ib3R0b20tbWFyZ2luIDA7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FyZC1iZy1jb2xvcjtcXHJcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjI1cztcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gIEBleHRlbmQgLnNoYWRvdy0xO1xcclxcblxcclxcblxcclxcbiAgLmNhcmQtdGl0bGUge1xcclxcbiAgICBmb250LXNpemU6IDI0cHg7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XFxyXFxuICAgICYuYWN0aXZhdG9yIHtcXHJcXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIENhcmQgU2l6ZXNcXHJcXG4gICYuc21hbGwsICYubWVkaXVtLCAmLmxhcmdlIHtcXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcblxcclxcbiAgICAuY2FyZC1pbWFnZSB7XFxyXFxuICAgICAgbWF4LWhlaWdodDogNjAlO1xcclxcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICAgIH1cXHJcXG4gICAgLmNhcmQtaW1hZ2UgKyAuY2FyZC1jb250ZW50IHtcXHJcXG4gICAgICBtYXgtaGVpZ2h0OiA0MCU7XFxyXFxuICAgIH1cXHJcXG4gICAgLmNhcmQtY29udGVudCB7XFxyXFxuICAgICAgbWF4LWhlaWdodDogMTAwJTtcXHJcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgICB9XFxyXFxuICAgIC5jYXJkLWFjdGlvbiB7XFxyXFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgIGJvdHRvbTogMDtcXHJcXG4gICAgICBsZWZ0OiAwO1xcclxcbiAgICAgIHJpZ2h0OiAwO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmLnNtYWxsIHtcXHJcXG4gICAgaGVpZ2h0OiAzMDBweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYubWVkaXVtIHtcXHJcXG4gICAgaGVpZ2h0OiA0MDBweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYubGFyZ2Uge1xcclxcbiAgICBoZWlnaHQ6IDUwMHB4O1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gSG9yaXpvbnRhbCBDYXJkc1xcclxcbiAgJi5ob3Jpem9udGFsIHtcXHJcXG4gICAgJi5zbWFsbCwgJi5tZWRpdW0sICYubGFyZ2Uge1xcclxcbiAgICAgIC5jYXJkLWltYWdlIHtcXHJcXG4gICAgICAgIGhlaWdodDogMTAwJTtcXHJcXG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XFxyXFxuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcXHJcXG5cXHJcXG4gICAgICAgIGltZyB7XFxyXFxuICAgICAgICAgIGhlaWdodDogMTAwJTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgZGlzcGxheTogZmxleDtcXHJcXG5cXHJcXG4gICAgLmNhcmQtaW1hZ2Uge1xcclxcbiAgICAgIG1heC13aWR0aDogNTAlO1xcclxcbiAgICAgIGltZyB7XFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHggMCAwIDJweDtcXHJcXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcXHJcXG4gICAgICAgIHdpZHRoOiBhdXRvO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAuY2FyZC1zdGFja2VkIHtcXHJcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxyXFxuICAgICAgZmxleDogMTtcXHJcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuXFxyXFxuICAgICAgLmNhcmQtY29udGVudCB7XFxyXFxuICAgICAgICBmbGV4LWdyb3c6IDE7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBTdGlja3kgQWN0aW9uIFNlY3Rpb25cXHJcXG4gICYuc3RpY2t5LWFjdGlvbiB7XFxyXFxuICAgIC5jYXJkLWFjdGlvbiB7XFxyXFxuICAgICAgei1pbmRleDogMjtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAuY2FyZC1yZXZlYWwge1xcclxcbiAgICAgIHotaW5kZXg6IDE7XFxyXFxuICAgICAgcGFkZGluZy1ib3R0b206IDY0cHg7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG4gIC5jYXJkLWltYWdlIHtcXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcblxcclxcbiAgICAvLyBJbWFnZSBiYWNrZ3JvdW5kIGZvciBjb250ZW50XFxyXFxuICAgIGltZyB7XFxyXFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgICAgYm9yZGVyLXJhZGl1czogMnB4IDJweCAwIDA7XFxyXFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICAgIGxlZnQ6IDA7XFxyXFxuICAgICAgcmlnaHQ6IDA7XFxyXFxuICAgICAgdG9wOiAwO1xcclxcbiAgICAgIGJvdHRvbTogMDtcXHJcXG4gICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAuY2FyZC10aXRsZSB7XFxyXFxuICAgICAgY29sb3I6ICRjYXJkLWJnLWNvbG9yO1xcclxcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgICBib3R0b206IDA7XFxyXFxuICAgICAgbGVmdDogMDtcXHJcXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XFxyXFxuICAgICAgcGFkZGluZzogJGNhcmQtcGFkZGluZztcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLmNhcmQtY29udGVudCB7XFxyXFxuICAgIHBhZGRpbmc6ICRjYXJkLXBhZGRpbmc7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4O1xcclxcblxcclxcbiAgICBwIHtcXHJcXG4gICAgICBtYXJnaW46IDA7XFxyXFxuICAgIH1cXHJcXG4gICAgLmNhcmQtdGl0bGUge1xcclxcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xcclxcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcXHJcXG5cXHJcXG4gICAgICBpIHtcXHJcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLmNhcmQtYWN0aW9uIHtcXHJcXG4gICAgJjpsYXN0LWNoaWxkIHtcXHJcXG4gICAgICBib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDtcXHJcXG4gICAgfVxcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OyAvLyBVc2UgaW5oZXJpdCB0byBpbmhlcml0IGNvbG9yIGNsYXNzZXNcXHJcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTYwLDE2MCwxNjAsLjIpO1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIHBhZGRpbmc6IDE2cHggJGNhcmQtcGFkZGluZztcXHJcXG5cXHJcXG4gICAgYTpub3QoLmJ0bik6bm90KC5idG4tbGFyZ2UpOm5vdCguYnRuLWZsb2F0aW5nKSB7XFxyXFxuICAgICAgY29sb3I6ICRjYXJkLWxpbmstY29sb3I7XFxyXFxuICAgICAgbWFyZ2luLXJpZ2h0OiAkY2FyZC1wYWRkaW5nO1xcclxcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIC4zcyBlYXNlO1xcclxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxyXFxuXFxyXFxuICAgICAgJjpob3ZlciB7IGNvbG9yOiAkY2FyZC1saW5rLWNvbG9yLWxpZ2h0OyB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5jYXJkLXJldmVhbCB7XFxyXFxuICAgIHBhZGRpbmc6ICRjYXJkLXBhZGRpbmc7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtYmctY29sb3I7XFxyXFxuICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICB0b3A6IDEwMCU7XFxyXFxuICAgIGhlaWdodDogMTAwJTtcXHJcXG4gICAgei1pbmRleDogMztcXHJcXG4gICAgZGlzcGxheTogbm9uZTtcXHJcXG5cXHJcXG4gICAgLmNhcmQtdGl0bGUge1xcclxcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cIixcIi8qXFxyXFxuICAgIEBsaWNlbnNlXFxyXFxuICAgIENvcHlyaWdodCAoYykgMjAxNCBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXFxyXFxuICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHRcXHJcXG4gICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHRcXHJcXG4gICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0XFxyXFxuICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvXFxyXFxuICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0XFxyXFxuICovXFxyXFxuXFxyXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xcclxcbi8qIFNUWUxFUyBGT1IgVEhFIFNQSU5ORVIgKi9cXHJcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxyXFxuXFxyXFxuLypcXHJcXG4gKiBDb25zdGFudHM6XFxyXFxuICogICAgICBTVFJPS0VXSURUSCA9IDNweFxcclxcbiAqICAgICAgQVJDU0laRSAgICAgPSAyNzAgZGVncmVlcyAoYW1vdW50IG9mIGNpcmNsZSB0aGUgYXJjIHRha2VzIHVwKVxcclxcbiAqICAgICAgQVJDVElNRSAgICAgPSAxMzMzbXMgKHRpbWUgaXQgdGFrZXMgdG8gZXhwYW5kIGFuZCBjb250cmFjdCBhcmMpXFxyXFxuICogICAgICBBUkNTVEFSVFJPVCA9IDIxNiBkZWdyZWVzIChob3cgbXVjaCB0aGUgc3RhcnQgbG9jYXRpb24gb2YgdGhlIGFyY1xcclxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcm90YXRlIGVhY2ggdGltZSwgMjE2IGdpdmVzIHVzIGFcXHJcXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSBwb2ludGVkIHN0YXIgc2hhcGUgKGl0J3MgMzYwLzUgKiAzKS5cXHJcXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgNyBwb2ludGVkIHN0YXIsIHdlIG1pZ2h0IGRvXFxyXFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2MC83ICogMyA9IDE1NC4yODYpXFxyXFxuICogICAgICBDT05UQUlORVJXSURUSCA9IDI4cHhcXHJcXG4gKiAgICAgIFNIUklOS19USU1FID0gNDAwbXNcXHJcXG4gKi9cXHJcXG5cXHJcXG5cXHJcXG4ucHJlbG9hZGVyLXdyYXBwZXIge1xcclxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgd2lkdGg6IDUwcHg7XFxyXFxuICBoZWlnaHQ6IDUwcHg7XFxyXFxuXFxyXFxuICAmLnNtYWxsIHtcXHJcXG4gICAgd2lkdGg6IDM2cHg7XFxyXFxuICAgIGhlaWdodDogMzZweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYuYmlnIHtcXHJcXG4gICAgd2lkdGg6IDY0cHg7XFxyXFxuICAgIGhlaWdodDogNjRweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYuYWN0aXZlIHtcXHJcXG4gICAgLyogZHVyYXRpb246IDM2MCAqIEFSQ1RJTUUgLyAoQVJDU1RBUlRST1QgKyAoMzYwLUFSQ1NJWkUpKSAqL1xcclxcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSAxNTY4bXMgbGluZWFyIGluZmluaXRlO1xcclxcbiAgICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgMTU2OG1zIGxpbmVhciBpbmZpbml0ZTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIGNvbnRhaW5lci1yb3RhdGUge1xcclxcbiAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgfVxcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIGNvbnRhaW5lci1yb3RhdGUge1xcclxcbiAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH1cXHJcXG59XFxyXFxuXFxyXFxuLnNwaW5uZXItbGF5ZXIge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgd2lkdGg6IDEwMCU7XFxyXFxuICBoZWlnaHQ6IDEwMCU7XFxyXFxuICBvcGFjaXR5OiAwO1xcclxcbiAgYm9yZGVyLWNvbG9yOiAkc3Bpbm5lci1kZWZhdWx0LWNvbG9yO1xcclxcbn1cXHJcXG5cXHJcXG4uc3Bpbm5lci1ibHVlLFxcclxcbi5zcGlubmVyLWJsdWUtb25seSB7XFxyXFxuICBib3JkZXItY29sb3I6ICM0Mjg1ZjQ7XFxyXFxufVxcclxcblxcclxcbi5zcGlubmVyLXJlZCxcXHJcXG4uc3Bpbm5lci1yZWQtb25seSB7XFxyXFxuICBib3JkZXItY29sb3I6ICNkYjQ0Mzc7XFxyXFxufVxcclxcblxcclxcbi5zcGlubmVyLXllbGxvdyxcXHJcXG4uc3Bpbm5lci15ZWxsb3ctb25seSB7XFxyXFxuICBib3JkZXItY29sb3I6ICNmNGI0MDA7XFxyXFxufVxcclxcblxcclxcbi5zcGlubmVyLWdyZWVuLFxcclxcbi5zcGlubmVyLWdyZWVuLW9ubHkge1xcclxcbiAgYm9yZGVyLWNvbG9yOiAjMGY5ZDU4O1xcclxcbn1cXHJcXG5cXHJcXG4vKipcXHJcXG4gKiBJTVBPUlRBTlQgTk9URSBBQk9VVCBDU1MgQU5JTUFUSU9OIFBST1BFUlRJRVMgKGtlYW51bGVlKTpcXHJcXG4gKlxcclxcbiAqIGlPUyBTYWZhcmkgKHRlc3RlZCBvbiBpT1MgOC4xKSBkb2VzIG5vdCBoYW5kbGUgYW5pbWF0aW9uLWRlbGF5IHZlcnkgd2VsbCAtIGl0IGRvZXNuJ3RcXHJcXG4gKiBndWFyYW50ZWUgdGhhdCB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQgX2V4YWN0bHlfIGFmdGVyIHRoYXQgdmFsdWUuIFNvIHdlIGF2b2lkIHVzaW5nXFxyXFxuICogYW5pbWF0aW9uLWRlbGF5IGFuZCBpbnN0ZWFkIHNldCBjdXN0b20ga2V5ZnJhbWVzIGZvciBlYWNoIGNvbG9yIChhcyByZWR1bmRhbnQgYXMgaXRcXHJcXG4gKiBzZWVtcykuXFxyXFxuICpcXHJcXG4gKiBXZSB3cml0ZSBvdXQgZWFjaCBhbmltYXRpb24gaW4gZnVsbCAoaW5zdGVhZCBvZiBzZXBhcmF0aW5nIGFuaW1hdGlvbi1uYW1lLFxcclxcbiAqIGFuaW1hdGlvbi1kdXJhdGlvbiwgZXRjLikgYmVjYXVzZSB1bmRlciB0aGUgcG9seWZpbGwsIFNhZmFyaSBkb2VzIG5vdCByZWNvZ25pemUgdGhvc2VcXHJcXG4gKiBzcGVjaWZpYyBwcm9wZXJ0aWVzIHByb3Blcmx5LCB0cmVhdHMgdGhlbSBhcyAtd2Via2l0LWFuaW1hdGlvbiwgYW5kIG92ZXJyaWRlcyB0aGVcXHJcXG4gKiBvdGhlciBhbmltYXRpb24gcnVsZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vUG9seW1lci9wbGF0Zm9ybS9pc3N1ZXMvNTMuXFxyXFxuICovXFxyXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLWJsdWUge1xcclxcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGJsdWUtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBibHVlLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXHJcXG59XFxyXFxuXFxyXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXJlZCB7XFxyXFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxyXFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgcmVkLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXHJcXG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgcmVkLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXHJcXG59XFxyXFxuXFxyXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXllbGxvdyB7XFxyXFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxyXFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgeWVsbG93LWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXHJcXG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgeWVsbG93LWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXHJcXG59XFxyXFxuXFxyXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLWdyZWVuIHtcXHJcXG4gIC8qIGR1cmF0aW9uczogNCAqIEFSQ1RJTUUgKi9cXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBncmVlbi1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxyXFxuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGdyZWVuLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXHJcXG59XFxyXFxuXFxyXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllcixcXHJcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItYmx1ZS1vbmx5LFxcclxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1yZWQtb25seSxcXHJcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXIteWVsbG93LW9ubHksXFxyXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLWdyZWVuLW9ubHkge1xcclxcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xcclxcbiAgb3BhY2l0eTogMTtcXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbn1cXHJcXG5cXHJcXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmlsbC11bmZpbGwtcm90YXRlIHtcXHJcXG4gIDEyLjUlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpOyAgfSAvKiAwLjUgKiBBUkNTSVpFICovXFxyXFxuICAyNSUgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsgIH0gLyogMSAgICogQVJDU0laRSAqL1xcclxcbiAgMzcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQwNWRlZyk7ICB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cXHJcXG4gIDUwJSAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpOyAgfSAvKiAyICAgKiBBUkNTSVpFICovXFxyXFxuICA2Mi41JSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKTsgIH0gLyogMi41ICogQVJDU0laRSAqL1xcclxcbiAgNzUlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDgxMGRlZyk7ICB9IC8qIDMgICAqIEFSQ1NJWkUgKi9cXHJcXG4gIDg3LjUlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5NDVkZWcpOyAgfSAvKiAzLjUgKiBBUkNTSVpFICovXFxyXFxuICB0byAgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZyk7IH0gLyogNCAgICogQVJDU0laRSAqL1xcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7XFxyXFxuICAxMi41JSB7IHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7ICB9IC8qIDAuNSAqIEFSQ1NJWkUgKi9cXHJcXG4gIDI1JSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsgIH0gLyogMSAgICogQVJDU0laRSAqL1xcclxcbiAgMzcuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg0MDVkZWcpOyAgfSAvKiAxLjUgKiBBUkNTSVpFICovXFxyXFxuICA1MCUgICB7IHRyYW5zZm9ybTogcm90YXRlKDU0MGRlZyk7ICB9IC8qIDIgICAqIEFSQ1NJWkUgKi9cXHJcXG4gIDYyLjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKTsgIH0gLyogMi41ICogQVJDU0laRSAqL1xcclxcbiAgNzUlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSg4MTBkZWcpOyAgfSAvKiAzICAgKiBBUkNTSVpFICovXFxyXFxuICA4Ny41JSB7IHRyYW5zZm9ybTogcm90YXRlKDk0NWRlZyk7ICB9IC8qIDMuNSAqIEFSQ1NJWkUgKi9cXHJcXG4gIHRvICAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZyk7IH0gLyogNCAgICogQVJDU0laRSAqL1xcclxcbn1cXHJcXG5cXHJcXG5ALXdlYmtpdC1rZXlmcmFtZXMgYmx1ZS1mYWRlLWluLW91dCB7XFxyXFxuICBmcm9tIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgMjUlIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgMjYlIHsgb3BhY2l0eTogMDsgfVxcclxcbiAgODklIHsgb3BhY2l0eTogMDsgfVxcclxcbiAgOTAlIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgMTAwJSB7IG9wYWNpdHk6IDE7IH1cXHJcXG59XFxyXFxuXFxyXFxuQGtleWZyYW1lcyBibHVlLWZhZGUtaW4tb3V0IHtcXHJcXG4gIGZyb20geyBvcGFjaXR5OiAxOyB9XFxyXFxuICAyNSUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICAyNiUgeyBvcGFjaXR5OiAwOyB9XFxyXFxuICA4OSUgeyBvcGFjaXR5OiAwOyB9XFxyXFxuICA5MCUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICAxMDAlIHsgb3BhY2l0eTogMTsgfVxcclxcbn1cXHJcXG5cXHJcXG5ALXdlYmtpdC1rZXlmcmFtZXMgcmVkLWZhZGUtaW4tb3V0IHtcXHJcXG4gIGZyb20geyBvcGFjaXR5OiAwOyB9XFxyXFxuICAxNSUgeyBvcGFjaXR5OiAwOyB9XFxyXFxuICAyNSUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICA1MCUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICA1MSUgeyBvcGFjaXR5OiAwOyB9XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgcmVkLWZhZGUtaW4tb3V0IHtcXHJcXG4gIGZyb20geyBvcGFjaXR5OiAwOyB9XFxyXFxuICAxNSUgeyBvcGFjaXR5OiAwOyB9XFxyXFxuICAyNSUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICA1MCUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICA1MSUgeyBvcGFjaXR5OiAwOyB9XFxyXFxufVxcclxcblxcclxcbkAtd2Via2l0LWtleWZyYW1lcyB5ZWxsb3ctZmFkZS1pbi1vdXQge1xcclxcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDQwJSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDUwJSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDc1JSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDc2JSB7IG9wYWNpdHk6IDA7IH1cXHJcXG59XFxyXFxuXFxyXFxuQGtleWZyYW1lcyB5ZWxsb3ctZmFkZS1pbi1vdXQge1xcclxcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDQwJSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDUwJSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDc1JSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDc2JSB7IG9wYWNpdHk6IDA7IH1cXHJcXG59XFxyXFxuXFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIGdyZWVuLWZhZGUtaW4tb3V0IHtcXHJcXG4gIGZyb20geyBvcGFjaXR5OiAwOyB9XFxyXFxuICA2NSUgeyBvcGFjaXR5OiAwOyB9XFxyXFxuICA3NSUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICA5MCUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICAxMDAlIHsgb3BhY2l0eTogMDsgfVxcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIGdyZWVuLWZhZGUtaW4tb3V0IHtcXHJcXG4gIGZyb20geyBvcGFjaXR5OiAwOyB9XFxyXFxuICA2NSUgeyBvcGFjaXR5OiAwOyB9XFxyXFxuICA3NSUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICA5MCUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICAxMDAlIHsgb3BhY2l0eTogMDsgfVxcclxcbn1cXHJcXG5cXHJcXG4vKipcXHJcXG4gKiBQYXRjaCB0aGUgZ2FwIHRoYXQgYXBwZWFyIGJldHdlZW4gdGhlIHR3byBhZGphY2VudCBkaXYuY2lyY2xlLWNsaXBwZXIgd2hpbGUgdGhlXFxyXFxuICogc3Bpbm5lciBpcyByb3RhdGluZyAoYXBwZWFycyBvbiBDaHJvbWUgMzgsIFNhZmFyaSA3LjEsIGFuZCBJRSAxMSkuXFxyXFxuICovXFxyXFxuLmdhcC1wYXRjaCB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB0b3A6IDA7XFxyXFxuICBsZWZ0OiA0NSU7XFxyXFxuICB3aWR0aDogMTAlO1xcclxcbiAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcXHJcXG59XFxyXFxuXFxyXFxuLmdhcC1wYXRjaCAuY2lyY2xlIHtcXHJcXG4gIHdpZHRoOiAxMDAwJTtcXHJcXG4gIGxlZnQ6IC00NTAlO1xcclxcbn1cXHJcXG5cXHJcXG4uY2lyY2xlLWNsaXBwZXIge1xcclxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgd2lkdGg6IDUwJTtcXHJcXG4gIGhlaWdodDogMTAwJTtcXHJcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XFxyXFxuXFxyXFxuICAuY2lyY2xlIHtcXHJcXG4gICAgd2lkdGg6IDIwMCU7XFxyXFxuICAgIGhlaWdodDogMTAwJTtcXHJcXG4gICAgYm9yZGVyLXdpZHRoOiAzcHg7IC8qIFNUUk9LRVdJRFRIICovXFxyXFxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxyXFxuICAgIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcXHJcXG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZTtcXHJcXG4gICAgYW5pbWF0aW9uOiBub25lO1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgcmlnaHQ6IDA7XFxyXFxuICAgIGJvdHRvbTogMDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYubGVmdCAuY2lyY2xlIHtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7XFxyXFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7XFxyXFxuICB9XFxyXFxuICAmLnJpZ2h0IC5jaXJjbGUge1xcclxcbiAgICBsZWZ0OiAtMTAwJTtcXHJcXG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XFxyXFxuICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMjlkZWcpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG4uYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUge1xcclxcbiAgLyogZHVyYXRpb246IEFSQ1RJTUUgKi9cXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBsZWZ0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbiAgYW5pbWF0aW9uOiBsZWZ0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbn1cXHJcXG5cXHJcXG4uYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5yaWdodCAuY2lyY2xlIHtcXHJcXG4gIC8qIGR1cmF0aW9uOiBBUkNUSU1FICovXFxyXFxuICAtd2Via2l0LWFuaW1hdGlvbjogcmlnaHQtc3BpbiAxMzMzbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxyXFxuICBhbmltYXRpb246IHJpZ2h0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbn1cXHJcXG5cXHJcXG5ALXdlYmtpdC1rZXlmcmFtZXMgbGVmdC1zcGluIHtcXHJcXG4gIGZyb20geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzMGRlZyk7IH1cXHJcXG4gIDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpOyB9XFxyXFxuICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTsgfVxcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIGxlZnQtc3BpbiB7XFxyXFxuICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTsgfVxcclxcbiAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpOyB9XFxyXFxuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDEzMGRlZyk7IH1cXHJcXG59XFxyXFxuXFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xcclxcbiAgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZyk7IH1cXHJcXG4gIDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNWRlZyk7IH1cXHJcXG4gIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTsgfVxcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xcclxcbiAgZnJvbSB7IHRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpOyB9XFxyXFxuICA1MCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKTsgfVxcclxcbiAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTsgfVxcclxcbn1cXHJcXG5cXHJcXG4jc3Bpbm5lckNvbnRhaW5lci5jb29sZG93biB7XFxyXFxuICAvKiBkdXJhdGlvbjogU0hSSU5LX1RJTUUgKi9cXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKTtcXHJcXG4gIGFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSAxNTY4bXMgbGluZWFyIGluZmluaXRlLCBmYWRlLW91dCA0MDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XFxyXFxufVxcclxcblxcclxcbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlLW91dCB7XFxyXFxuICBmcm9tIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgdG8geyBvcGFjaXR5OiAwOyB9XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgZmFkZS1vdXQge1xcclxcbiAgZnJvbSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIHRvIHsgb3BhY2l0eTogMDsgfVxcclxcbn1cXHJcXG5cIixcIlxcclxcbi8vIFByb2dyZXNzIEJhclxcclxcbi5wcm9ncmVzcyB7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICBoZWlnaHQ6IDRweDtcXHJcXG4gIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgd2lkdGg6IDEwMCU7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRwcm9ncmVzcy1iYXItY29sb3IsIDQwJSk7XFxyXFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxyXFxuICBtYXJnaW46ICRlbGVtZW50LXRvcC1tYXJnaW4gMCAkZWxlbWVudC1ib3R0b20tbWFyZ2luIDA7XFxyXFxuICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgLmRldGVybWluYXRlIHtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIGJvdHRvbTogMDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLWJhci1jb2xvcjtcXHJcXG4gICAgdHJhbnNpdGlvbjogd2lkdGggLjNzIGxpbmVhcjtcXHJcXG4gIH1cXHJcXG4gIC5pbmRldGVybWluYXRlIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLWJhci1jb2xvcjtcXHJcXG4gICAgJjpiZWZvcmUge1xcclxcbiAgICAgIGNvbnRlbnQ6ICcnO1xcclxcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xcclxcbiAgICAgIHRvcDogMDtcXHJcXG4gICAgICBsZWZ0OjA7XFxyXFxuICAgICAgYm90dG9tOiAwO1xcclxcbiAgICAgIHdpbGwtY2hhbmdlOiBsZWZ0LCByaWdodDtcXHJcXG4gICAgICAvLyBDdXN0b20gYmV6aWVyXFxyXFxuICAgICAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlIDIuMXMgY3ViaWMtYmV6aWVyKDAuNjUwLCAwLjgxNSwgMC43MzUsIDAuMzk1KSBpbmZpbml0ZTtcXHJcXG5cXHJcXG4gICAgfVxcclxcbiAgICAmOmFmdGVyIHtcXHJcXG4gICAgICBjb250ZW50OiAnJztcXHJcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcXHJcXG4gICAgICB0b3A6IDA7XFxyXFxuICAgICAgbGVmdDowO1xcclxcbiAgICAgIGJvdHRvbTogMDtcXHJcXG4gICAgICB3aWxsLWNoYW5nZTogbGVmdCwgcmlnaHQ7XFxyXFxuICAgICAgLy8gQ3VzdG9tIGJlemllclxcclxcbiAgICAgIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1zaG9ydCAyLjFzIGN1YmljLWJlemllcigwLjE2NSwgMC44NDAsIDAuNDQwLCAxLjAwMCkgaW5maW5pdGU7XFxyXFxuICAgICAgYW5pbWF0aW9uLWRlbGF5OiAxLjE1cztcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5Aa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUge1xcclxcbiAgMCUge1xcclxcbiAgICBsZWZ0OiAtMzUlO1xcclxcbiAgICByaWdodDoxMDAlO1xcclxcbiAgfVxcclxcbiAgNjAlIHtcXHJcXG4gICAgbGVmdDogMTAwJTtcXHJcXG4gICAgcmlnaHQ6IC05MCU7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgbGVmdDogMTAwJTtcXHJcXG4gICAgcmlnaHQ6IC05MCU7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZS1zaG9ydCB7XFxyXFxuICAwJSB7XFxyXFxuICAgIGxlZnQ6IC0yMDAlO1xcclxcbiAgICByaWdodDogMTAwJTtcXHJcXG4gIH1cXHJcXG4gIDYwJSB7XFxyXFxuICAgIGxlZnQ6IDEwNyU7XFxyXFxuICAgIHJpZ2h0OiAtOCU7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgbGVmdDogMTA3JTtcXHJcXG4gICAgcmlnaHQ6IC04JTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuXCIsXCIuZmxhc2gtbWVzc2FnZSB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICBwYWRkaW5nOiAycHggMTBweDtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcXHJcXG4gIHotaW5kZXg6IDk5OTk5O1xcclxcbiAgcmlnaHQ6IDA7XFxyXFxuICBib3R0b206IDA7XFxyXFxuICBmb250LXNpemU6IDE0cHg7XFxyXFxuXFxyXFxuXFxyXFxuICAmLmluZm8ge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmVkZGJlO1xcclxcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNzI4ZjcyO1xcclxcbiAgfVxcclxcblxcclxcbiAgJi53YXJuIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZTZkMDtcXHJcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2VhN2QxNztcXHJcXG4gIH1cXHJcXG4gICYuZXJyb3Ige1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTViMmJjO1xcclxcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTMzMjU3O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIG1lc3NhZ2VJbiB7XFxyXFxuICBmcm9tIHtcXHJcXG4gICAgcmlnaHQ6IDgwJTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIHRvIHtcXHJcXG4gICAgcmlnaHQ6IDA7XFxyXFxuXFxyXFxuICB9XFxyXFxufVwiLFwiLnB1bHNlIHtcXHJcXG4gICY6OmJlZm9yZSB7XFxyXFxuICAgIGNvbnRlbnQ6ICcnO1xcclxcbiAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XFxyXFxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzLCB0cmFuc2Zvcm0gLjNzO1xcclxcbiAgICBhbmltYXRpb246IHB1bHNlLWFuaW1hdGlvbiAxcyBjdWJpYy1iZXppZXIoMC4yNCwgMCwgMC4zOCwgMSkgaW5maW5pdGU7XFxyXFxuICAgIC8vei1pbmRleDogLTE7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG59XFxyXFxuXFxyXFxuQGtleWZyYW1lcyBwdWxzZS1hbmltYXRpb24ge1xcclxcbiAgMCUge1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xcclxcbiAgfVxcclxcbiAgNTAlIHtcXHJcXG4gICAgb3BhY2l0eTogMDtcXHJcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpO1xcclxcbiAgfVxcclxcbiAgMTAwJSB7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXCIsXCIuZHJvcGRvd24tY29udGVudCB7XFxyXFxuICAmOmZvY3VzIHtcXHJcXG4gICAgb3V0bGluZTogMDtcXHJcXG4gIH1cXHJcXG5cXHJcXG5cXHJcXG4gIEBleHRlbmQgLnNoYWRvdy0xO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWJnLWNvbG9yO1xcclxcbiAgbWFyZ2luOiAwO1xcclxcbiAgZGlzcGxheTogZmxvdztcXHJcXG4gIG1pbi13aWR0aDogMTAwcHg7XFxyXFxuICBvdmVyZmxvdy15OiBhdXRvO1xcclxcbiAgLy9vcGFjaXR5OiAwO1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgbGVmdDogMDtcXHJcXG4gIHRvcDogMDtcXHJcXG4gIHotaW5kZXg6IDk5OTk7IC8vIFRPRE86IENoZWNrIGlmIHRoaXMgZG9lc24ndCBicmVhayBvdGhlciB0aGluZ3NcXHJcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXHJcXG5cXHJcXG5cXHJcXG4gIGxpIHtcXHJcXG4gICAgJjpob3ZlciwgJi5hY3RpdmUge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1ob3Zlci1iZy1jb2xvcjtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmOmZvY3VzIHtcXHJcXG4gICAgICBvdXRsaW5lOiBub25lO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYuZGl2aWRlciB7XFxyXFxuICAgICAgbWluLWhlaWdodDogMDtcXHJcXG4gICAgICBoZWlnaHQ6IDFweDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmID4gYSwgJiA+IHNwYW4ge1xcclxcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICBjb2xvcjogJGRyb3Bkb3duLWNvbG9yO1xcclxcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xcclxcbiAgICAgIHBhZGRpbmc6IGNhbGMoKCRkcm9wZG93bi1pdGVtLWhlaWdodCAtIDIycHgpIC8gMikgMTZweDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmID4gc3BhbiA+IGxhYmVsIHtcXHJcXG4gICAgICB0b3A6IDFweDtcXHJcXG4gICAgICBsZWZ0OiAwO1xcclxcbiAgICAgIGhlaWdodDogMThweDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAvLyBJY29uIGFsaWdubWVudCBvdmVycmlkZVxcclxcbiAgICAmID4gYSA+IGkge1xcclxcbiAgICAgIGhlaWdodDogaW5oZXJpdDtcXHJcXG4gICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXHJcXG4gICAgICBmbG9hdDogbGVmdDtcXHJcXG4gICAgICBtYXJnaW46IDAgMjRweCAwIDA7XFxyXFxuICAgICAgd2lkdGg6IDI0cHg7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG5cXHJcXG4gICAgY2xlYXI6IGJvdGg7XFxyXFxuICAgIGNvbG9yOiAkb2ZmLWJsYWNrO1xcclxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgIG1pbi1oZWlnaHQ6ICRkcm9wZG93bi1pdGVtLWhlaWdodDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgIHRleHQtYWxpZ246IGxlZnQ7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbmJvZHkua2V5Ym9hcmQtZm9jdXNlZCB7XFxyXFxuICAuZHJvcGRvd24tY29udGVudCBsaTpmb2N1cyB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkZHJvcGRvd24taG92ZXItYmctY29sb3IsIDglKTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gSW5wdXQgZmllbGQgc3BlY2lmaWNpdHkgYnVnZml4XFxyXFxuLmlucHV0LWZpZWxkLmNvbCAuZHJvcGRvd24tY29udGVudCBbdHlwZT1cXFwiY2hlY2tib3hcXFwiXSArIGxhYmVsIHtcXHJcXG4gIHRvcDogMXB4O1xcclxcbiAgbGVmdDogMDtcXHJcXG4gIGhlaWdodDogMThweDtcXHJcXG4gIHRyYW5zZm9ybTogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuLmRyb3Bkb3duLXRyaWdnZXIge1xcclxcbiAgY3Vyc29yOiBwb2ludGVyO1xcclxcbn1cIixcIm5hdiB7XFxyXFxuICAmLm5hdi1leHRlbmRlZCB7XFxyXFxuICAgIGhlaWdodDogYXV0bztcXHJcXG5cXHJcXG4gICAgLm5hdi13cmFwcGVyIHtcXHJcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICAgICAgbWluLWhlaWdodDogJG5hdmJhci1oZWlnaHQtbW9iaWxlO1xcclxcbiAgICAgIGhlaWdodDogYXV0bztcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAubmF2LWNvbnRlbnQge1xcclxcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICBjb2xvcjogJG5hdmJhci1mb250LWNvbG9yO1xcclxcbiAgQGV4dGVuZCAuc2hhZG93LTE7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcXHJcXG4gIHdpZHRoOiAxMDAlO1xcclxcbiAgaGVpZ2h0OiAkbmF2YmFyLWhlaWdodC1tb2JpbGU7XFxyXFxuICBsaW5lLWhlaWdodDogJG5hdmJhci1saW5lLWhlaWdodC1tb2JpbGU7XFxyXFxuXFxyXFxuICBhIHsgY29sb3I6ICRuYXZiYXItZm9udC1jb2xvcjsgfVxcclxcblxcclxcbiAgaSxcXHJcXG4gIFtjbGFzc149XFxcIm1kaS1cXFwiXSwgW2NsYXNzKj1cXFwibWRpLVxcXCJdLFxcclxcbiAgaS5zLWljb25zIHtcXHJcXG4gICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgIGZvbnQtc2l6ZTogMjRweDtcXHJcXG4gICAgaGVpZ2h0OiAkbmF2YmFyLWhlaWdodC1tb2JpbGU7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAkbmF2YmFyLWxpbmUtaGVpZ2h0LW1vYmlsZTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5uYXYtd3JhcHBlciB7XFxyXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgfVxcclxcblxcclxcbiAgQG1lZGlhICN7JGxhcmdlLWFuZC11cH0ge1xcclxcbiAgICBhLnNpZGVuYXYtdHJpZ2dlciB7IGRpc3BsYXk6IG5vbmU7IH1cXHJcXG4gIH1cXHJcXG5cXHJcXG5cXHJcXG4gIC8vIENvbGxhcHNlIGJ1dHRvblxcclxcbiAgLnNpZGVuYXYtdHJpZ2dlciB7XFxyXFxuICAgIGZsb2F0OiBsZWZ0O1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIHotaW5kZXg6IDE7XFxyXFxuICAgIGhlaWdodDogJG5hdmJhci1oZWlnaHQtbW9iaWxlO1xcclxcbiAgICBtYXJnaW46IDAgMThweDtcXHJcXG5cXHJcXG4gICAgaSB7XFxyXFxuICAgICAgaGVpZ2h0OiAkbmF2YmFyLWhlaWdodC1tb2JpbGU7XFxyXFxuICAgICAgbGluZS1oZWlnaHQ6ICRuYXZiYXItbGluZS1oZWlnaHQtbW9iaWxlO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuXFxyXFxuICAvLyBMb2dvXFxyXFxuICAuYnJhbmQtbG9nbyB7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgY29sb3I6ICRuYXZiYXItZm9udC1jb2xvcjtcXHJcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgICBmb250LXNpemU6ICRuYXZiYXItYnJhbmQtZm9udC1zaXplO1xcclxcbiAgICBwYWRkaW5nOiAwO1xcclxcbiAgICBpbWcuY2lyY2xlIHtcXHJcXG4gICAgICBoZWlnaHQ6IDMycHg7XFxyXFxuICAgICAgd2lkdGg6IDMycHg7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJi5jZW50ZXIge1xcclxcbiAgICAgIGxlZnQ6IDUwJTtcXHJcXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgQG1lZGlhICN7JG1lZGl1bS1hbmQtZG93bn0ge1xcclxcbiAgICAgIGxlZnQ6IDUwJTtcXHJcXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxyXFxuXFxyXFxuICAgICAgJi5sZWZ0LCAmLnJpZ2h0IHtcXHJcXG4gICAgICAgIHBhZGRpbmc6IDA7XFxyXFxuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICAgICYubGVmdCB7IGxlZnQ6IDAuNXJlbTsgfVxcclxcbiAgICAgICYucmlnaHQge1xcclxcbiAgICAgICAgcmlnaHQ6IDAuNXJlbTtcXHJcXG4gICAgICAgIGxlZnQ6IGF1dG87XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYucmlnaHQge1xcclxcbiAgICAgIHJpZ2h0OiAwLjVyZW07XFxyXFxuICAgICAgcGFkZGluZzogMDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBpLFxcclxcbiAgICBbY2xhc3NePVxcXCJtZGktXFxcIl0sIFtjbGFzcyo9XFxcIm1kaS1cXFwiXSxcXHJcXG4gICAgaS5zLWljb25zIHtcXHJcXG4gICAgICBmbG9hdDogbGVmdDtcXHJcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG5cXHJcXG4gIC8vIFRpdGxlXFxyXFxuICAubmF2LXRpdGxlIHtcXHJcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgICBmb250LXNpemU6IDMycHg7XFxyXFxuICAgIHBhZGRpbmc6IDI4cHggMDtcXHJcXG4gIH1cXHJcXG5cXHJcXG5cXHJcXG4gIC8vIE5hdmJhciBMaW5rc1xcclxcbiAgdWwge1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuXFxyXFxuICAgIGxpIHtcXHJcXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4zcztcXHJcXG4gICAgICBmbG9hdDogbGVmdDtcXHJcXG4gICAgICBwYWRkaW5nOiAwO1xcclxcblxcclxcbiAgICAgICYuYWN0aXZlIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjEpO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgICBhIHtcXHJcXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4zcztcXHJcXG4gICAgICBmb250LXNpemU6ICRuYXZiYXItZm9udC1zaXplO1xcclxcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWZvbnQtY29sb3I7XFxyXFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgICAgcGFkZGluZzogMCAxNXB4O1xcclxcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG5cXHJcXG4gICAgICAmLmJ0biwgJi5idG4tbGFyZ2UsICYuYnRuLWZsYXQsICYuYnRuLWZsb2F0aW5nIHtcXHJcXG4gICAgICAgIG1hcmdpbi10b3A6IC0ycHg7XFxyXFxuICAgICAgICBtYXJnaW4tbGVmdDogMTVweDtcXHJcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcXHJcXG5cXHJcXG4gICAgICAgICYgPiAubWF0ZXJpYWwtaWNvbnMge1xcclxcbiAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAmOmhvdmVyIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjEpO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmLmxlZnQge1xcclxcbiAgICAgIGZsb2F0OiBsZWZ0O1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBOYXZiYXIgU2VhcmNoIEZvcm1cXHJcXG4gIGZvcm0ge1xcclxcbiAgICBoZWlnaHQ6IDEwMCU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuaW5wdXQtZmllbGQge1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuICAgIGhlaWdodDogMTAwJTtcXHJcXG5cXHJcXG4gICAgaW5wdXQge1xcclxcbiAgICAgIGhlaWdodDogMTAwJTtcXHJcXG4gICAgICBmb250LXNpemU6IDEuMnJlbTtcXHJcXG4gICAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgICAgcGFkZGluZy1sZWZ0OiAycmVtO1xcclxcblxcclxcbiAgICAgICY6Zm9jdXMsICZbdHlwZT10ZXh0XTp2YWxpZCwgJlt0eXBlPXBhc3N3b3JkXTp2YWxpZCxcXHJcXG4gICAgICAmW3R5cGU9ZW1haWxdOnZhbGlkLCAmW3R5cGU9dXJsXTp2YWxpZCwgJlt0eXBlPWRhdGVdOnZhbGlkIHtcXHJcXG4gICAgICAgIGJvcmRlcjogbm9uZTtcXHJcXG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIGxhYmVsIHtcXHJcXG4gICAgICB0b3A6IDA7XFxyXFxuICAgICAgbGVmdDogMDtcXHJcXG5cXHJcXG4gICAgICBpIHtcXHJcXG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC43KTtcXHJcXG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIC4zcztcXHJcXG4gICAgICB9XFxyXFxuICAgICAgJi5hY3RpdmUgaSB7IGNvbG9yOiAkbmF2YmFyLWZvbnQtY29sb3I7IH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBGaXhlZCBOYXZiYXJcXHJcXG4ubmF2YmFyLWZpeGVkIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIGhlaWdodDogJG5hdmJhci1oZWlnaHQtbW9iaWxlO1xcclxcbiAgei1pbmRleDogOTk3O1xcclxcblxcclxcbiAgbmF2IHtcXHJcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcclxcbiAgfVxcclxcbn1cXHJcXG5AbWVkaWEgI3skbWVkaXVtLWFuZC11cH0ge1xcclxcbiAgbmF2Lm5hdi1leHRlbmRlZCAubmF2LXdyYXBwZXIge1xcclxcbiAgICBtaW4taGVpZ2h0OiAkbmF2YmFyLWhlaWdodDtcXHJcXG4gIH1cXHJcXG4gIG5hdiwgbmF2IC5uYXYtd3JhcHBlciBpLCBuYXYgYS5zaWRlbmF2LXRyaWdnZXIsIG5hdiBhLnNpZGVuYXYtdHJpZ2dlciBpIHtcXHJcXG4gICAgaGVpZ2h0OiAkbmF2YmFyLWhlaWdodDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6ICRuYXZiYXItbGluZS1oZWlnaHQ7XFxyXFxuICB9XFxyXFxuICAubmF2YmFyLWZpeGVkIHtcXHJcXG4gICAgaGVpZ2h0OiAkbmF2YmFyLWhlaWdodDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdO1xuXG4gIC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1trXVswXTtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgdmFyIGNvbnRlbnQgPSBpdGVtWzFdO1xuICB2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc01lcmdlYWJsZU9iamVjdCA9IGZ1bmN0aW9uIGlzTWVyZ2VhYmxlT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiBpc05vbk51bGxPYmplY3QodmFsdWUpXG5cdFx0JiYgIWlzU3BlY2lhbCh2YWx1ZSlcbn07XG5cbmZ1bmN0aW9uIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSkge1xuXHRyZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzU3BlY2lhbCh2YWx1ZSkge1xuXHR2YXIgc3RyaW5nVmFsdWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuXG5cdHJldHVybiBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcblx0XHR8fCBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgRGF0ZV0nXG5cdFx0fHwgaXNSZWFjdEVsZW1lbnQodmFsdWUpXG59XG5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9iNWFjOTYzZmI3OTFkMTI5OGU3ZjM5NjIzNjM4M2JjOTU1ZjkxNmMxL3NyYy9pc29tb3JwaGljL2NsYXNzaWMvZWxlbWVudC9SZWFjdEVsZW1lbnQuanMjTDIxLUwyNVxudmFyIGNhblVzZVN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBjYW5Vc2VTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgOiAweGVhYzc7XG5cbmZ1bmN0aW9uIGlzUmVhY3RFbGVtZW50KHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFXG59XG5cbmZ1bmN0aW9uIGVtcHR5VGFyZ2V0KHZhbCkge1xuXHRyZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpID8gW10gOiB7fVxufVxuXG5mdW5jdGlvbiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCh2YWx1ZSwgb3B0aW9ucykge1xuXHRyZXR1cm4gKG9wdGlvbnMuY2xvbmUgIT09IGZhbHNlICYmIG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QodmFsdWUpKVxuXHRcdD8gZGVlcG1lcmdlKGVtcHR5VGFyZ2V0KHZhbHVlKSwgdmFsdWUsIG9wdGlvbnMpXG5cdFx0OiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0QXJyYXlNZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHRyZXR1cm4gdGFyZ2V0LmNvbmNhdChzb3VyY2UpLm1hcChmdW5jdGlvbihlbGVtZW50KSB7XG5cdFx0cmV0dXJuIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKGVsZW1lbnQsIG9wdGlvbnMpXG5cdH0pXG59XG5cbmZ1bmN0aW9uIGdldE1lcmdlRnVuY3Rpb24oa2V5LCBvcHRpb25zKSB7XG5cdGlmICghb3B0aW9ucy5jdXN0b21NZXJnZSkge1xuXHRcdHJldHVybiBkZWVwbWVyZ2Vcblx0fVxuXHR2YXIgY3VzdG9tTWVyZ2UgPSBvcHRpb25zLmN1c3RvbU1lcmdlKGtleSk7XG5cdHJldHVybiB0eXBlb2YgY3VzdG9tTWVyZ2UgPT09ICdmdW5jdGlvbicgPyBjdXN0b21NZXJnZSA6IGRlZXBtZXJnZVxufVxuXG5mdW5jdGlvbiBnZXRFbnVtZXJhYmxlT3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkge1xuXHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc1xuXHRcdD8gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpLmZpbHRlcihmdW5jdGlvbihzeW1ib2wpIHtcblx0XHRcdHJldHVybiBPYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXQsIHN5bWJvbClcblx0XHR9KVxuXHRcdDogW11cbn1cblxuZnVuY3Rpb24gZ2V0S2V5cyh0YXJnZXQpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKHRhcmdldCkuY29uY2F0KGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSlcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlJc09uT2JqZWN0KG9iamVjdCwgcHJvcGVydHkpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gcHJvcGVydHkgaW4gb2JqZWN0XG5cdH0gY2F0Y2goXykge1xuXHRcdHJldHVybiBmYWxzZVxuXHR9XG59XG5cbi8vIFByb3RlY3RzIGZyb20gcHJvdG90eXBlIHBvaXNvbmluZyBhbmQgdW5leHBlY3RlZCBtZXJnaW5nIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4uXG5mdW5jdGlvbiBwcm9wZXJ0eUlzVW5zYWZlKHRhcmdldCwga2V5KSB7XG5cdHJldHVybiBwcm9wZXJ0eUlzT25PYmplY3QodGFyZ2V0LCBrZXkpIC8vIFByb3BlcnRpZXMgYXJlIHNhZmUgdG8gbWVyZ2UgaWYgdGhleSBkb24ndCBleGlzdCBpbiB0aGUgdGFyZ2V0IHlldCxcblx0XHQmJiAhKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwga2V5KSAvLyB1bnNhZmUgaWYgdGhleSBleGlzdCB1cCB0aGUgcHJvdG90eXBlIGNoYWluLFxuXHRcdFx0JiYgT2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodGFyZ2V0LCBrZXkpKSAvLyBhbmQgYWxzbyB1bnNhZmUgaWYgdGhleSdyZSBub25lbnVtZXJhYmxlLlxufVxuXG5mdW5jdGlvbiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHR2YXIgZGVzdGluYXRpb24gPSB7fTtcblx0aWYgKG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QodGFyZ2V0KSkge1xuXHRcdGdldEtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuXHRcdFx0ZGVzdGluYXRpb25ba2V5XSA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHRhcmdldFtrZXldLCBvcHRpb25zKTtcblx0XHR9KTtcblx0fVxuXHRnZXRLZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcblx0XHRpZiAocHJvcGVydHlJc1Vuc2FmZSh0YXJnZXQsIGtleSkpIHtcblx0XHRcdHJldHVyblxuXHRcdH1cblxuXHRcdGlmIChwcm9wZXJ0eUlzT25PYmplY3QodGFyZ2V0LCBrZXkpICYmIG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3Qoc291cmNlW2tleV0pKSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gZ2V0TWVyZ2VGdW5jdGlvbihrZXksIG9wdGlvbnMpKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZChzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGRlc3RpbmF0aW9uXG59XG5cbmZ1bmN0aW9uIGRlZXBtZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0b3B0aW9ucy5hcnJheU1lcmdlID0gb3B0aW9ucy5hcnJheU1lcmdlIHx8IGRlZmF1bHRBcnJheU1lcmdlO1xuXHRvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0ID0gb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCB8fCBpc01lcmdlYWJsZU9iamVjdDtcblx0Ly8gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQgaXMgYWRkZWQgdG8gYG9wdGlvbnNgIHNvIHRoYXQgY3VzdG9tIGFycmF5TWVyZ2UoKVxuXHQvLyBpbXBsZW1lbnRhdGlvbnMgY2FuIHVzZSBpdC4gVGhlIGNhbGxlciBtYXkgbm90IHJlcGxhY2UgaXQuXG5cdG9wdGlvbnMuY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQgPSBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZDtcblxuXHR2YXIgc291cmNlSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoc291cmNlKTtcblx0dmFyIHRhcmdldElzQXJyYXkgPSBBcnJheS5pc0FycmF5KHRhcmdldCk7XG5cdHZhciBzb3VyY2VBbmRUYXJnZXRUeXBlc01hdGNoID0gc291cmNlSXNBcnJheSA9PT0gdGFyZ2V0SXNBcnJheTtcblxuXHRpZiAoIXNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2gpIHtcblx0XHRyZXR1cm4gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoc291cmNlLCBvcHRpb25zKVxuXHR9IGVsc2UgaWYgKHNvdXJjZUlzQXJyYXkpIHtcblx0XHRyZXR1cm4gb3B0aW9ucy5hcnJheU1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucylcblx0fVxufVxuXG5kZWVwbWVyZ2UuYWxsID0gZnVuY3Rpb24gZGVlcG1lcmdlQWxsKGFycmF5LCBvcHRpb25zKSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShhcnJheSkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheScpXG5cdH1cblxuXHRyZXR1cm4gYXJyYXkucmVkdWNlKGZ1bmN0aW9uKHByZXYsIG5leHQpIHtcblx0XHRyZXR1cm4gZGVlcG1lcmdlKHByZXYsIG5leHQsIG9wdGlvbnMpXG5cdH0sIHt9KVxufTtcblxudmFyIGRlZXBtZXJnZV8xID0gZGVlcG1lcmdlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZXBtZXJnZV8xO1xuIiwiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24oKSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbiAgdmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuICB2YXIgaGFzID0gcmVxdWlyZSgnLi9saWIvaGFzJyk7XG5cbiAgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24odGV4dCkge1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyB0ZXh0O1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKHgpIHsgLyoqLyB9XG4gIH07XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlcyBtYXRjaCB3aXRoIHRoZSB0eXBlIHNwZWNzLlxuICogRXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZFxuICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRcIlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy5cbiAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBnZXRTdGFjayBSZXR1cm5zIHRoZSBjb21wb25lbnQgc3RhY2suXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGdldFN0YWNrKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xuICAgICAgaWYgKGhhcyh0eXBlU3BlY3MsIHR5cGVTcGVjTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yO1xuICAgICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG4gICAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIGVyciA9IEVycm9yKFxuICAgICAgICAgICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7ICcgK1xuICAgICAgICAgICAgICAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gKyAnYC4nICtcbiAgICAgICAgICAgICAgJ1RoaXMgb2Z0ZW4gaGFwcGVucyBiZWNhdXNlIG9mIHR5cG9zIHN1Y2ggYXMgYFByb3BUeXBlcy5mdW5jdGlvbmAgaW5zdGVhZCBvZiBgUHJvcFR5cGVzLmZ1bmNgLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXJyb3IgPSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvciAmJiAhKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICAgKGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJykgKyAnOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJyArXG4gICAgICAgICAgICBsb2NhdGlvbiArICcgYCcgKyB0eXBlU3BlY05hbWUgKyAnYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgK1xuICAgICAgICAgICAgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICcgKyB0eXBlb2YgZXJyb3IgKyAnLiAnICtcbiAgICAgICAgICAgICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICtcbiAgICAgICAgICAgICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgK1xuICAgICAgICAgICAgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6ICcnO1xuXG4gICAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICAgJ0ZhaWxlZCAnICsgbG9jYXRpb24gKyAnIHR5cGU6ICcgKyBlcnJvci5tZXNzYWdlICsgKHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNldHMgd2FybmluZyBjYWNoZSB3aGVuIHRlc3RpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2hlY2tQcm9wVHlwZXMucmVzZXRXYXJuaW5nQ2FjaGUgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9saWIvaGFzJyk7XG52YXIgY2hlY2tQcm9wVHlwZXMgPSByZXF1aXJlKCcuL2NoZWNrUHJvcFR5cGVzJyk7XG5cbnZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbigpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBwcmludFdhcm5pbmcgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIHRleHQ7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcbn1cblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbCgpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtcbiAgLyogZ2xvYmFsIFN5bWJvbCAqL1xuICB2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG4gIHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4gICAqXG4gICAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICAgKlxuICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICAgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICAgKiAgICAgICAuLi5cbiAgICogICAgIH1cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcbiAgICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcbiAgICpcbiAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycpO1xuICAgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIHByb3AgbmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1lZCBcImNhdGVnb3J5XCIuXG4gICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAgICpcbiAgICogICAgICAgLy8gQSBwcm9wIG5hbWVkIFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXG4gICAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcbiAgICogICAgIH0sXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XG4gICAqXG4gICAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cbiAgICpcbiAgICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpc1xuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqICB2YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG4gICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4gICAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAgICogICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAqICAgICAgICAgICk7XG4gICAqICAgICAgICB9XG4gICAqICAgICAgfVxuICAgKiAgICB9LFxuICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cbiAgICogIH0pO1xuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cbiAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+JztcblxuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcbiAgICBiaWdpbnQ6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdiaWdpbnQnKSxcbiAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicpLFxuICAgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxuICAgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLFxuXG4gICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcbiAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxcbiAgICBlbGVtZW50VHlwZTogY3JlYXRlRWxlbWVudFR5cGVUeXBlQ2hlY2tlcigpLFxuICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG4gICAgbm9kZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcbiAgICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcbiAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuICAgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcbiAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcixcbiAgICBleGFjdDogY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcixcbiAgfTtcblxuICAvKipcbiAgICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcbiAgICovXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi9cbiAgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgICBpZiAoeCA9PT0geSkge1xuICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcbiAgICB9XG4gIH1cbiAgLyplc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSovXG5cbiAgLyoqXG4gICAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGxcbiAgICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwgd2UgZG9uJ3QgdXNlIHJlYWxcbiAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3QgdGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuICAgKiBpcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZSBpZiB0aGV5IGFyZSBjcmVhdGVkIHRvbyBvZnRlbiwgc3VjaCBhcyB3aGF0XG4gICAqIGhhcHBlbnMgaW4gb25lT2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC5cbiAgICovXG4gIGZ1bmN0aW9uIFByb3BUeXBlRXJyb3IobWVzc2FnZSwgZGF0YSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5kYXRhID0gZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgPyBkYXRhOiB7fTtcbiAgICB0aGlzLnN0YWNrID0gJyc7XG4gIH1cbiAgLy8gTWFrZSBgaW5zdGFuY2VvZiBFcnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLlxuICBQcm9wVHlwZUVycm9yLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZTtcblxuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA9IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVkLCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTO1xuICAgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuXG4gICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgICBpZiAodGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAgICAgICAgIC8vIE5ldyBiZWhhdmlvciBvbmx5IGZvciB1c2VycyBvZiBgcHJvcC10eXBlc2AgcGFja2FnZVxuICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gT2xkIGJlaGF2aW9yIGZvciBwZW9wbGUgdXNpbmcgUmVhY3QuUHJvcFR5cGVzXG4gICAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyArIHByb3BOYW1lO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gJiZcbiAgICAgICAgICAgIC8vIEF2b2lkIHNwYW1taW5nIHRoZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90IGFjdGlvbmFibGUgZXhjZXB0IGZvciBsaWIgYXV0aG9yc1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPCAzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAgICdZb3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlvbiAnICtcbiAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGZvciB0aGUgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBwcm9wIG9uIGAnICsgY29tcG9uZW50TmFtZSArICdgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICAgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09IGV4cGVjdGVkVHlwZSkge1xuICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2ZmZXIgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG4gICAgICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSxcbiAgICAgICAgICB7ZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGV9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZVR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghUmVhY3RJcy5pc1ZhbGlkRWxlbWVudFR5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQgdHlwZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCEocHJvcHNbcHJvcE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHtcbiAgICAgICAgdmFyIGV4cGVjdGVkQ2xhc3NOYW1lID0gZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgICAgdmFyIGFjdHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9wTmFtZV0pO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFzc05hbWUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2luc3RhbmNlIG9mIGAnICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVudW1UeXBlQ2hlY2tlcihleHBlY3RlZFZhbHVlcykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gYXJyYXksIGdvdCAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgYXJndW1lbnRzLiAnICtcbiAgICAgICAgICAgICdBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHdyaXRlIG9uZU9mKHgsIHksIHopIGluc3RlYWQgb2Ygb25lT2YoW3gsIHksIHpdKS4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGFycmF5LicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpcyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcywgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuICAgICAgICB2YXIgdHlwZSA9IGdldFByZWNpc2VUeXBlKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgU3RyaW5nKHByb3BWYWx1ZSkgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKGhhcyhwcm9wVmFsdWUsIGtleSkpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheU9mVHlwZUNoZWNrZXJzKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHByaW50V2FybmluZygnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGw7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgY2hlY2sgZnVuY3Rpb25zLCBidXQgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkICcgKyBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcoY2hlY2tlcikgKyAnIGF0IGluZGV4ICcgKyBpICsgJy4nXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICAgIHZhciBjaGVja2VyUmVzdWx0ID0gY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGNoZWNrZXJSZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGVja2VyUmVzdWx0LmRhdGEgJiYgaGFzKGNoZWNrZXJSZXN1bHQuZGF0YSwgJ2V4cGVjdGVkVHlwZScpKSB7XG4gICAgICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGNoZWNrZXJSZXN1bHQuZGF0YS5leHBlY3RlZFR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgZXhwZWN0ZWRUeXBlc01lc3NhZ2UgPSAoZXhwZWN0ZWRUeXBlcy5sZW5ndGggPiAwKSA/ICcsIGV4cGVjdGVkIG9uZSBvZiB0eXBlIFsnICsgZXhwZWN0ZWRUeXBlcy5qb2luKCcsICcpICsgJ10nOiAnJztcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AnICsgZXhwZWN0ZWRUeXBlc01lc3NhZ2UgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU5vZGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGludmFsaWRWYWxpZGF0b3JFcnJvcihjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBrZXksIHR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoXG4gICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHByb3BGdWxsTmFtZSArICcuJyArIGtleSArICdgIGlzIGludmFsaWQ7ICcgK1xuICAgICAgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZSArICdgLidcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBpbnZhbGlkVmFsaWRhdG9yRXJyb3IoY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwga2V5LCBnZXRQcmVjaXNlVHlwZShjaGVja2VyKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwga2V5cyBpbiBjYXNlIHNvbWUgYXJlIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGZyb20gcHJvcHMuXG4gICAgICB2YXIgYWxsS2V5cyA9IGFzc2lnbih7fSwgcHJvcHNbcHJvcE5hbWVdLCBzaGFwZVR5cGVzKTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBhbGxLZXlzKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gc2hhcGVUeXBlc1trZXldO1xuICAgICAgICBpZiAoaGFzKHNoYXBlVHlwZXMsIGtleSkgJiYgdHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gaW52YWxpZFZhbGlkYXRvckVycm9yKGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIGtleSwgZ2V0UHJlY2lzZVR5cGUoY2hlY2tlcikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hlY2tlcikge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcihcbiAgICAgICAgICAgICdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBrZXkgYCcgKyBrZXkgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nICtcbiAgICAgICAgICAgICdcXG5CYWQgb2JqZWN0OiAnICsgSlNPTi5zdHJpbmdpZnkocHJvcHNbcHJvcE5hbWVdLCBudWxsLCAnICAnKSArXG4gICAgICAgICAgICAnXFxuVmFsaWQga2V5czogJyArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHNoYXBlVHlwZXMpLCBudWxsLCAnICAnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiAhcHJvcFZhbHVlO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpO1xuICAgICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuICAgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcbiAgICAvLyBOYXRpdmUgU3ltYm9sLlxuICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGZhbHN5IHZhbHVlIGNhbid0IGJlIGEgU3ltYm9sXG4gICAgaWYgKCFwcm9wVmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuICAgIGlmIChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cbiAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAgdmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAgLy8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9ibGEvXG4gICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcG9zdGZpeGVkIHRvIGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBleGFtcGxlLCBcInVuZGVmaW5lZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICByZXR1cm4gJ2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55LlxuICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gICAgaWYgKCFwcm9wVmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgICByZXR1cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNrUHJvcFR5cGVzO1xuICBSZWFjdFByb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZSA9IGNoZWNrUHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cblxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50LWxpa2UgdHlwZXMuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcbi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbnZhciBoYXNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5mb3I7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIDogMHhlYWM3O1xudmFyIFJFQUNUX1BPUlRBTF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucG9ydGFsJykgOiAweGVhY2E7XG52YXIgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZyYWdtZW50JykgOiAweGVhY2I7XG52YXIgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN0cmljdF9tb2RlJykgOiAweGVhY2M7XG52YXIgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnByb2ZpbGVyJykgOiAweGVhZDI7XG52YXIgUkVBQ1RfUFJPVklERVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnByb3ZpZGVyJykgOiAweGVhY2Q7XG52YXIgUkVBQ1RfQ09OVEVYVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuY29udGV4dCcpIDogMHhlYWNlOyAvLyBUT0RPOiBXZSBkb24ndCB1c2UgQXN5bmNNb2RlIG9yIENvbmN1cnJlbnRNb2RlIGFueW1vcmUuIFRoZXkgd2VyZSB0ZW1wb3Jhcnlcbi8vICh1bnN0YWJsZSkgQVBJcyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkLiBDYW4gd2UgcmVtb3ZlIHRoZSBzeW1ib2xzP1xuXG52YXIgUkVBQ1RfQVNZTkNfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuYXN5bmNfbW9kZScpIDogMHhlYWNmO1xudmFyIFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuY29uY3VycmVudF9tb2RlJykgOiAweGVhY2Y7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJykgOiAweGVhZDA7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJykgOiAweGVhZDE7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpIDogMHhlYWQ4O1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKSA6IDB4ZWFkMztcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5JykgOiAweGVhZDQ7XG52YXIgUkVBQ1RfQkxPQ0tfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmJsb2NrJykgOiAweGVhZDk7XG52YXIgUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZ1bmRhbWVudGFsJykgOiAweGVhZDU7XG52YXIgUkVBQ1RfUkVTUE9OREVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5yZXNwb25kZXInKSA6IDB4ZWFkNjtcbnZhciBSRUFDVF9TQ09QRV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc2NvcGUnKSA6IDB4ZWFkNztcblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCAvLyBOb3RlOiBpdHMgdHlwZW9mIG1pZ2h0IGJlIG90aGVyIHRoYW4gJ3N5bWJvbCcgb3IgJ251bWJlcicgaWYgaXQncyBhIHBvbHlmaWxsLlxuICB0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9QUk9WSURFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUkVTUE9OREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfU0NPUEVfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9CTE9DS19UWVBFKTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKG9iamVjdCkge1xuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsKSB7XG4gICAgdmFyICQkdHlwZW9mID0gb2JqZWN0LiQkdHlwZW9mO1xuXG4gICAgc3dpdGNoICgkJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgIHZhciB0eXBlID0gb2JqZWN0LnR5cGU7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB2YXIgJCR0eXBlb2ZUeXBlID0gdHlwZSAmJiB0eXBlLiQkdHlwZW9mO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKCQkdHlwZW9mVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCR0eXBlb2ZUeXBlO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59IC8vIEFzeW5jTW9kZSBpcyBkZXByZWNhdGVkIGFsb25nIHdpdGggaXNBc3luY01vZGVcblxudmFyIEFzeW5jTW9kZSA9IFJFQUNUX0FTWU5DX01PREVfVFlQRTtcbnZhciBDb25jdXJyZW50TW9kZSA9IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFO1xudmFyIENvbnRleHRDb25zdW1lciA9IFJFQUNUX0NPTlRFWFRfVFlQRTtcbnZhciBDb250ZXh0UHJvdmlkZXIgPSBSRUFDVF9QUk9WSURFUl9UWVBFO1xudmFyIEVsZW1lbnQgPSBSRUFDVF9FTEVNRU5UX1RZUEU7XG52YXIgRm9yd2FyZFJlZiA9IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU7XG52YXIgRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xudmFyIExhenkgPSBSRUFDVF9MQVpZX1RZUEU7XG52YXIgTWVtbyA9IFJFQUNUX01FTU9fVFlQRTtcbnZhciBQb3J0YWwgPSBSRUFDVF9QT1JUQUxfVFlQRTtcbnZhciBQcm9maWxlciA9IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG52YXIgU3RyaWN0TW9kZSA9IFJFQUNUX1NUUklDVF9NT0RFX1RZUEU7XG52YXIgU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xudmFyIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gZmFsc2U7IC8vIEFzeW5jTW9kZSBzaG91bGQgYmUgZGVwcmVjYXRlZFxuXG5mdW5jdGlvbiBpc0FzeW5jTW9kZShvYmplY3QpIHtcbiAge1xuICAgIGlmICghaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUpIHtcbiAgICAgIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gdHJ1ZTsgLy8gVXNpbmcgY29uc29sZVsnd2FybiddIHRvIGV2YWRlIEJhYmVsIGFuZCBFU0xpbnRcblxuICAgICAgY29uc29sZVsnd2FybiddKCdUaGUgUmVhY3RJcy5pc0FzeW5jTW9kZSgpIGFsaWFzIGhhcyBiZWVuIGRlcHJlY2F0ZWQsICcgKyAnYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBSZWFjdCAxNysuIFVwZGF0ZSB5b3VyIGNvZGUgdG8gdXNlICcgKyAnUmVhY3RJcy5pc0NvbmN1cnJlbnRNb2RlKCkgaW5zdGVhZC4gSXQgaGFzIHRoZSBleGFjdCBzYW1lIEFQSS4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXNDb25jdXJyZW50TW9kZShvYmplY3QpIHx8IHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU7XG59XG5mdW5jdGlvbiBpc0NvbmN1cnJlbnRNb2RlKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb250ZXh0Q29uc3VtZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb250ZXh0UHJvdmlkZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRm9yd2FyZFJlZihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFO1xufVxuZnVuY3Rpb24gaXNGcmFnbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNMYXp5KG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0xBWllfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTWVtbyhvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9NRU1PX1RZUEU7XG59XG5mdW5jdGlvbiBpc1BvcnRhbChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9QT1JUQUxfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzUHJvZmlsZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3RyaWN0TW9kZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNTdXNwZW5zZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xufVxuXG5leHBvcnRzLkFzeW5jTW9kZSA9IEFzeW5jTW9kZTtcbmV4cG9ydHMuQ29uY3VycmVudE1vZGUgPSBDb25jdXJyZW50TW9kZTtcbmV4cG9ydHMuQ29udGV4dENvbnN1bWVyID0gQ29udGV4dENvbnN1bWVyO1xuZXhwb3J0cy5Db250ZXh0UHJvdmlkZXIgPSBDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLkVsZW1lbnQgPSBFbGVtZW50O1xuZXhwb3J0cy5Gb3J3YXJkUmVmID0gRm9yd2FyZFJlZjtcbmV4cG9ydHMuRnJhZ21lbnQgPSBGcmFnbWVudDtcbmV4cG9ydHMuTGF6eSA9IExhenk7XG5leHBvcnRzLk1lbW8gPSBNZW1vO1xuZXhwb3J0cy5Qb3J0YWwgPSBQb3J0YWw7XG5leHBvcnRzLlByb2ZpbGVyID0gUHJvZmlsZXI7XG5leHBvcnRzLlN0cmljdE1vZGUgPSBTdHJpY3RNb2RlO1xuZXhwb3J0cy5TdXNwZW5zZSA9IFN1c3BlbnNlO1xuZXhwb3J0cy5pc0FzeW5jTW9kZSA9IGlzQXN5bmNNb2RlO1xuZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlID0gaXNDb25jdXJyZW50TW9kZTtcbmV4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXIgPSBpc0NvbnRleHRDb25zdW1lcjtcbmV4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXIgPSBpc0NvbnRleHRQcm92aWRlcjtcbmV4cG9ydHMuaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuZXhwb3J0cy5pc0ZvcndhcmRSZWYgPSBpc0ZvcndhcmRSZWY7XG5leHBvcnRzLmlzRnJhZ21lbnQgPSBpc0ZyYWdtZW50O1xuZXhwb3J0cy5pc0xhenkgPSBpc0xhenk7XG5leHBvcnRzLmlzTWVtbyA9IGlzTWVtbztcbmV4cG9ydHMuaXNQb3J0YWwgPSBpc1BvcnRhbDtcbmV4cG9ydHMuaXNQcm9maWxlciA9IGlzUHJvZmlsZXI7XG5leHBvcnRzLmlzU3RyaWN0TW9kZSA9IGlzU3RyaWN0TW9kZTtcbmV4cG9ydHMuaXNTdXNwZW5zZSA9IGlzU3VzcGVuc2U7XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZSA9IGlzVmFsaWRFbGVtZW50VHlwZTtcbmV4cG9ydHMudHlwZU9mID0gdHlwZU9mO1xuICB9KSgpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAndXNlIHN0cmljdCc7XG5cbi8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbmlmIChcbiAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5yZWdpc3RlckludGVybmFsTW9kdWxlU3RhcnQgPT09XG4gICAgJ2Z1bmN0aW9uJ1xuKSB7XG4gIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5yZWdpc3RlckludGVybmFsTW9kdWxlU3RhcnQobmV3IEVycm9yKCkpO1xufVxuICAgICAgICAgIHZhciBSZWFjdFZlcnNpb24gPSAnMTguMi4wJztcblxuLy8gQVRURU5USU9OXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXG4vLyBQbGVhc2UgY29uc2lkZXIgYWxzbyBhZGRpbmcgdG8gJ3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9SZWFjdFN5bWJvbHMnXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50Jyk7XG52YXIgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3J0YWwnKTtcbnZhciBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZnJhZ21lbnQnKTtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKTtcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvZmlsZXInKTtcbnZhciBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvdmlkZXInKTtcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jb250ZXh0Jyk7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpO1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKTtcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5Jyk7XG52YXIgUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5vZmZzY3JlZW4nKTtcbnZhciBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgdHlwZW9mIG1heWJlSXRlcmFibGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgbWF5YmVJdGVyYXRvciA9IE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF07XG5cbiAgaWYgKHR5cGVvZiBtYXliZUl0ZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1heWJlSXRlcmF0b3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBkaXNwYXRjaGVyLlxuICovXG52YXIgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciA9IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJyZW50OiBudWxsXG59O1xuXG4vKipcbiAqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IGJhdGNoJ3MgY29uZmlndXJhdGlvbiBzdWNoIGFzIGhvdyBsb25nIGFuIHVwZGF0ZVxuICogc2hvdWxkIHN1c3BlbmQgZm9yIGlmIGl0IG5lZWRzIHRvLlxuICovXG52YXIgUmVhY3RDdXJyZW50QmF0Y2hDb25maWcgPSB7XG4gIHRyYW5zaXRpb246IG51bGxcbn07XG5cbnZhciBSZWFjdEN1cnJlbnRBY3RRdWV1ZSA9IHtcbiAgY3VycmVudDogbnVsbCxcbiAgLy8gVXNlZCB0byByZXByb2R1Y2UgYmVoYXZpb3Igb2YgYGJhdGNoZWRVcGRhdGVzYCBpbiBsZWdhY3kgbW9kZS5cbiAgaXNCYXRjaGluZ0xlZ2FjeTogZmFsc2UsXG4gIGRpZFNjaGVkdWxlTGVnYWN5VXBkYXRlOiBmYWxzZVxufTtcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci5cbiAqXG4gKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlXG4gKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJyZW50OiBudWxsXG59O1xuXG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IHt9O1xudmFyIGN1cnJlbnRFeHRyYVN0YWNrRnJhbWUgPSBudWxsO1xuZnVuY3Rpb24gc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKSB7XG4gIHtcbiAgICBjdXJyZW50RXh0cmFTdGFja0ZyYW1lID0gc3RhY2s7XG4gIH1cbn1cblxue1xuICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZSA9IGZ1bmN0aW9uIChzdGFjaykge1xuICAgIHtcbiAgICAgIGN1cnJlbnRFeHRyYVN0YWNrRnJhbWUgPSBzdGFjaztcbiAgICB9XG4gIH07IC8vIFN0YWNrIGltcGxlbWVudGF0aW9uIGluamVjdGVkIGJ5IHRoZSBjdXJyZW50IHJlbmRlcmVyLlxuXG5cbiAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5nZXRDdXJyZW50U3RhY2sgPSBudWxsO1xuXG4gIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0U3RhY2tBZGRlbmR1bSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RhY2sgPSAnJzsgLy8gQWRkIGFuIGV4dHJhIHRvcCBmcmFtZSB3aGlsZSBhbiBlbGVtZW50IGlzIGJlaW5nIHZhbGlkYXRlZFxuXG4gICAgaWYgKGN1cnJlbnRFeHRyYVN0YWNrRnJhbWUpIHtcbiAgICAgIHN0YWNrICs9IGN1cnJlbnRFeHRyYVN0YWNrRnJhbWU7XG4gICAgfSAvLyBEZWxlZ2F0ZSB0byB0aGUgaW5qZWN0ZWQgcmVuZGVyZXItc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cblxuXG4gICAgdmFyIGltcGwgPSBSZWFjdERlYnVnQ3VycmVudEZyYW1lLmdldEN1cnJlbnRTdGFjaztcblxuICAgIGlmIChpbXBsKSB7XG4gICAgICBzdGFjayArPSBpbXBsKCkgfHwgJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG52YXIgZW5hYmxlU2NvcGVBUEkgPSBmYWxzZTsgLy8gRXhwZXJpbWVudGFsIENyZWF0ZSBFdmVudCBIYW5kbGUgQVBJLlxudmFyIGVuYWJsZUNhY2hlRWxlbWVudCA9IGZhbHNlO1xudmFyIGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nID0gZmFsc2U7IC8vIE5vIGtub3duIGJ1Z3MsIGJ1dCBuZWVkcyBwZXJmb3JtYW5jZSB0ZXN0aW5nXG5cbnZhciBlbmFibGVMZWdhY3lIaWRkZW4gPSBmYWxzZTsgLy8gRW5hYmxlcyB1bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjayBmZWF0dXJlIGluIEZpYmVyXG4vLyBzdHVmZi4gSW50ZW5kZWQgdG8gZW5hYmxlIFJlYWN0IGNvcmUgbWVtYmVycyB0byBtb3JlIGVhc2lseSBkZWJ1ZyBzY2hlZHVsaW5nXG4vLyBpc3N1ZXMgaW4gREVWIGJ1aWxkcy5cblxudmFyIGVuYWJsZURlYnVnVHJhY2luZyA9IGZhbHNlOyAvLyBUcmFjayB3aGljaCBGaWJlcihzKSBzY2hlZHVsZSByZW5kZXIgd29yay5cblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0ge1xuICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyOiBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLFxuICBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzogUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsXG4gIFJlYWN0Q3VycmVudE93bmVyOiBSZWFjdEN1cnJlbnRPd25lclxufTtcblxue1xuICBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50QWN0UXVldWUgPSBSZWFjdEN1cnJlbnRBY3RRdWV1ZTtcbn1cblxuLy8gYnkgY2FsbHMgdG8gdGhlc2UgbWV0aG9kcyBieSBhIEJhYmVsIHBsdWdpbi5cbi8vXG4vLyBJbiBQUk9EIChvciBpbiBwYWNrYWdlcyB3aXRob3V0IGFjY2VzcyB0byBSZWFjdCBpbnRlcm5hbHMpLFxuLy8gdGhleSBhcmUgbGVmdCBhcyB0aGV5IGFyZSBpbnN0ZWFkLlxuXG5mdW5jdGlvbiB3YXJuKGZvcm1hdCkge1xuICB7XG4gICAge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nKCd3YXJuJywgZm9ybWF0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGVycm9yKGZvcm1hdCkge1xuICB7XG4gICAge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nKCdlcnJvcicsIGZvcm1hdCwgYXJncyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByaW50V2FybmluZyhsZXZlbCwgZm9ybWF0LCBhcmdzKSB7XG4gIC8vIFdoZW4gY2hhbmdpbmcgdGhpcyBsb2dpYywgeW91IG1pZ2h0IHdhbnQgdG8gYWxzb1xuICAvLyB1cGRhdGUgY29uc29sZVdpdGhTdGFja0Rldi53d3cuanMgYXMgd2VsbC5cbiAge1xuICAgIHZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbiAgICB2YXIgc3RhY2sgPSBSZWFjdERlYnVnQ3VycmVudEZyYW1lLmdldFN0YWNrQWRkZW5kdW0oKTtcblxuICAgIGlmIChzdGFjayAhPT0gJycpIHtcbiAgICAgIGZvcm1hdCArPSAnJXMnO1xuICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KFtzdGFja10pO1xuICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG5cblxuICAgIHZhciBhcmdzV2l0aEZvcm1hdCA9IGFyZ3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGl0ZW0pO1xuICAgIH0pOyAvLyBDYXJlZnVsOiBSTiBjdXJyZW50bHkgZGVwZW5kcyBvbiB0aGlzIHByZWZpeFxuXG4gICAgYXJnc1dpdGhGb3JtYXQudW5zaGlmdCgnV2FybmluZzogJyArIGZvcm1hdCk7IC8vIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIHNwcmVhZCAob3IgLmFwcGx5KSBkaXJlY3RseSBiZWNhdXNlIGl0XG4gICAgLy8gYnJlYWtzIElFOTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMzYxMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmdcblxuICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGVbbGV2ZWxdLCBjb25zb2xlLCBhcmdzV2l0aEZvcm1hdCk7XG4gIH1cbn1cblxudmFyIGRpZFdhcm5TdGF0ZVVwZGF0ZUZvclVubW91bnRlZENvbXBvbmVudCA9IHt9O1xuXG5mdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICB7XG4gICAgdmFyIF9jb25zdHJ1Y3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgIHZhciBjb21wb25lbnROYW1lID0gX2NvbnN0cnVjdG9yICYmIChfY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgX2NvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJztcbiAgICB2YXIgd2FybmluZ0tleSA9IGNvbXBvbmVudE5hbWUgKyBcIi5cIiArIGNhbGxlck5hbWU7XG5cbiAgICBpZiAoZGlkV2FyblN0YXRlVXBkYXRlRm9yVW5tb3VudGVkQ29tcG9uZW50W3dhcm5pbmdLZXldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXJyb3IoXCJDYW4ndCBjYWxsICVzIG9uIGEgY29tcG9uZW50IHRoYXQgaXMgbm90IHlldCBtb3VudGVkLiBcIiArICdUaGlzIGlzIGEgbm8tb3AsIGJ1dCBpdCBtaWdodCBpbmRpY2F0ZSBhIGJ1ZyBpbiB5b3VyIGFwcGxpY2F0aW9uLiAnICsgJ0luc3RlYWQsIGFzc2lnbiB0byBgdGhpcy5zdGF0ZWAgZGlyZWN0bHkgb3IgZGVmaW5lIGEgYHN0YXRlID0ge307YCAnICsgJ2NsYXNzIHByb3BlcnR5IHdpdGggdGhlIGRlc2lyZWQgc3RhdGUgaW4gdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjb21wb25lbnROYW1lKTtcblxuICAgIGRpZFdhcm5TdGF0ZVVwZGF0ZUZvclVubW91bnRlZENvbXBvbmVudFt3YXJuaW5nS2V5XSA9IHRydWU7XG4gIH1cbn1cbi8qKlxuICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUgcXVldWUuXG4gKi9cblxuXG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSB7XG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGZpbmFsXG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBjb21wb25lbnQgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHs/c3RyaW5nfSBjYWxsZXJOYW1lIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgY29tcG9uZW50IGlzIHVwZGF0ZWQuXG4gICAqIEBwYXJhbSB7P3N0cmluZ30gY2FsbGVyTmFtZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgY29tcG9uZW50IGlzIHVwZGF0ZWQuXG4gICAqIEBwYXJhbSB7P3N0cmluZ30gTmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcbiAgfVxufTtcblxudmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbnZhciBlbXB0eU9iamVjdCA9IHt9O1xuXG57XG4gIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpO1xufVxuLyoqXG4gKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5cbiAqL1xuXG5cbmZ1bmN0aW9uIENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7IC8vIElmIGEgY29tcG9uZW50IGhhcyBzdHJpbmcgcmVmcywgd2Ugd2lsbCBhc3NpZ24gYSBkaWZmZXJlbnQgb2JqZWN0IGxhdGVyLlxuXG4gIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0OyAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZVxuICAvLyByZW5kZXJlci5cblxuICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufVxuXG5Db21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbi8qKlxuICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVcbiAqIHN0YXRlLiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJvbm91c2x5LFxuICogYXMgdGhleSBtYXkgZXZlbnR1YWxseSBiZSBiYXRjaGVkIHRvZ2V0aGVyLiAgWW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsXG4gKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuICogY29tcGxldGVkLlxuICpcbiAqIFdoZW4gYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXQgc29tZSBwb2ludCBpblxuICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9ub3VzbHkpLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXG4gKiBjb21wb25lbnQgYXJndW1lbnRzIChzdGF0ZSwgcHJvcHMsIGNvbnRleHQpLiBUaGVzZSB2YWx1ZXMgY2FuIGJlIGRpZmZlcmVudFxuICogZnJvbSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2ZVByb3BzIGJ1dCBiZWZvcmVcbiAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSwgYW5kIHRoaXMgbmV3IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBub3QgeWV0IGJlXG4gKiBhc3NpZ25lZCB0byB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9uIHRvXG4gKiAgICAgICAgcHJvZHVjZSBuZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggY3VycmVudCBzdGF0ZS5cbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5cbkNvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIHBhcnRpYWxTdGF0ZSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIHBhcnRpYWxTdGF0ZSAhPT0gJ2Z1bmN0aW9uJyAmJiBwYXJ0aWFsU3RhdGUgIT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSAnICsgJ2Z1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy4nKTtcbiAgfVxuXG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywgcGFydGlhbFN0YXRlLCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7XG59O1xuLyoqXG4gKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAqXG4gKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAqXG4gKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICpcbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblxuXG5Db21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpO1xufTtcbi8qKlxuICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBBUElzIHVzZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZVxuICogd2Ugd291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhlbSBvdmVyIHRvIHRoaXNcbiAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZpbmUgYSBnZXR0ZXIgdGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLlxuICovXG5cblxue1xuICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7XG4gICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLFxuICAgIHJlcGxhY2VTdGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzMyMzYpLiddXG4gIH07XG5cbiAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lLCBpbmZvKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbXBvbmVudC5wcm90b3R5cGUsIG1ldGhvZE5hbWUsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICB3YXJuKCclcyguLi4pIGlzIGRlcHJlY2F0ZWQgaW4gcGxhaW4gSmF2YVNjcmlwdCBSZWFjdCBjbGFzc2VzLiAlcycsIGluZm9bMF0sIGluZm9bMV0pO1xuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIgZm5OYW1lIGluIGRlcHJlY2F0ZWRBUElzKSB7XG4gICAgaWYgKGRlcHJlY2F0ZWRBUElzLmhhc093blByb3BlcnR5KGZuTmFtZSkpIHtcbiAgICAgIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyhmbk5hbWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBDb21wb25lbnREdW1teSgpIHt9XG5cbkNvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG4vKipcbiAqIENvbnZlbmllbmNlIGNvbXBvbmVudCB3aXRoIGRlZmF1bHQgc2hhbGxvdyBlcXVhbGl0eSBjaGVjayBmb3Igc0NVLlxuICovXG5cbmZ1bmN0aW9uIFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OyAvLyBJZiBhIGNvbXBvbmVudCBoYXMgc3RyaW5nIHJlZnMsIHdlIHdpbGwgYXNzaWduIGEgZGlmZmVyZW50IG9iamVjdCBsYXRlci5cblxuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxudmFyIHB1cmVDb21wb25lbnRQcm90b3R5cGUgPSBQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpO1xucHVyZUNvbXBvbmVudFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFB1cmVDb21wb25lbnQ7IC8vIEF2b2lkIGFuIGV4dHJhIHByb3RvdHlwZSBqdW1wIGZvciB0aGVzZSBtZXRob2RzLlxuXG5hc3NpZ24ocHVyZUNvbXBvbmVudFByb3RvdHlwZSwgQ29tcG9uZW50LnByb3RvdHlwZSk7XG5wdXJlQ29tcG9uZW50UHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblxuLy8gYW4gaW1tdXRhYmxlIG9iamVjdCB3aXRoIGEgc2luZ2xlIG11dGFibGUgdmFsdWVcbmZ1bmN0aW9uIGNyZWF0ZVJlZigpIHtcbiAgdmFyIHJlZk9iamVjdCA9IHtcbiAgICBjdXJyZW50OiBudWxsXG4gIH07XG5cbiAge1xuICAgIE9iamVjdC5zZWFsKHJlZk9iamVjdCk7XG4gIH1cblxuICByZXR1cm4gcmVmT2JqZWN0O1xufVxuXG52YXIgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYSkge1xuICByZXR1cm4gaXNBcnJheUltcGwoYSk7XG59XG5cbi8qXG4gKiBUaGUgYCcnICsgdmFsdWVgIHBhdHRlcm4gKHVzZWQgaW4gaW4gcGVyZi1zZW5zaXRpdmUgY29kZSkgdGhyb3dzIGZvciBTeW1ib2xcbiAqIGFuZCBUZW1wb3JhbC4qIHR5cGVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjIwNjQuXG4gKlxuICogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB3aWxsIHRocm93IGFuIGVhc2llci10by11bmRlcnN0YW5kLFxuICogZWFzaWVyLXRvLWRlYnVnIGV4Y2VwdGlvbiB3aXRoIGEgY2xlYXIgZXJyb3JzIG1lc3NhZ2UgbWVzc2FnZSBleHBsYWluaW5nIHRoZVxuICogcHJvYmxlbS4gKEluc3RlYWQgb2YgYSBjb25mdXNpbmcgZXhjZXB0aW9uIHRocm93biBpbnNpZGUgdGhlIGltcGxlbWVudGF0aW9uXG4gKiBvZiB0aGUgYHZhbHVlYCBvYmplY3QpLlxuICovXG4vLyAkRmxvd0ZpeE1lIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxuZnVuY3Rpb24gdHlwZU5hbWUodmFsdWUpIHtcbiAge1xuICAgIC8vIHRvU3RyaW5nVGFnIGlzIG5lZWRlZCBmb3IgbmFtZXNwYWNlZCB0eXBlcyBsaWtlIFRlbXBvcmFsLkluc3RhbnRcbiAgICB2YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC50b1N0cmluZ1RhZztcbiAgICB2YXIgdHlwZSA9IGhhc1RvU3RyaW5nVGFnICYmIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ10gfHwgdmFsdWUuY29uc3RydWN0b3IubmFtZSB8fCAnT2JqZWN0JztcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxufSAvLyAkRmxvd0ZpeE1lIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxuXG5cbmZ1bmN0aW9uIHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSB7XG4gIHtcbiAgICB0cnkge1xuICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gIC8vIElmIHlvdSBlbmRlZCB1cCBoZXJlIGJ5IGZvbGxvd2luZyBhbiBleGNlcHRpb24gY2FsbCBzdGFjaywgaGVyZSdzIHdoYXQnc1xuICAvLyBoYXBwZW5lZDogeW91IHN1cHBsaWVkIGFuIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gUmVhY3QgKGFzIGEgcHJvcCwga2V5LFxuICAvLyBET00gYXR0cmlidXRlLCBDU1MgcHJvcGVydHksIHN0cmluZyByZWYsIGV0Yy4pIGFuZCB3aGVuIFJlYWN0IHRyaWVkIHRvXG4gIC8vIGNvZXJjZSBpdCB0byBhIHN0cmluZyB1c2luZyBgJycgKyB2YWx1ZWAsIGFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duLlxuICAvL1xuICAvLyBUaGUgbW9zdCBjb21tb24gdHlwZXMgdGhhdCB3aWxsIGNhdXNlIHRoaXMgZXhjZXB0aW9uIGFyZSBgU3ltYm9sYCBpbnN0YW5jZXNcbiAgLy8gYW5kIFRlbXBvcmFsIG9iamVjdHMgbGlrZSBgVGVtcG9yYWwuSW5zdGFudGAuIEJ1dCBhbnkgb2JqZWN0IHRoYXQgaGFzIGFcbiAgLy8gYHZhbHVlT2ZgIG9yIGBbU3ltYm9sLnRvUHJpbWl0aXZlXWAgbWV0aG9kIHRoYXQgdGhyb3dzIHdpbGwgYWxzbyBjYXVzZSB0aGlzXG4gIC8vIGV4Y2VwdGlvbi4gKExpYnJhcnkgYXV0aG9ycyBkbyB0aGlzIHRvIHByZXZlbnQgdXNlcnMgZnJvbSB1c2luZyBidWlsdC1pblxuICAvLyBudW1lcmljIG9wZXJhdG9ycyBsaWtlIGArYCBvciBjb21wYXJpc29uIG9wZXJhdG9ycyBsaWtlIGA+PWAgYmVjYXVzZSBjdXN0b21cbiAgLy8gbWV0aG9kcyBhcmUgbmVlZGVkIHRvIHBlcmZvcm0gYWNjdXJhdGUgYXJpdGhtZXRpYyBvciBjb21wYXJpc29uLilcbiAgLy9cbiAgLy8gVG8gZml4IHRoZSBwcm9ibGVtLCBjb2VyY2UgdGhpcyBvYmplY3Qgb3Igc3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIGJlZm9yZVxuICAvLyBwYXNzaW5nIGl0IHRvIFJlYWN0LiBUaGUgbW9zdCByZWxpYWJsZSB3YXkgaXMgdXN1YWxseSBgU3RyaW5nKHZhbHVlKWAuXG4gIC8vXG4gIC8vIFRvIGZpbmQgd2hpY2ggdmFsdWUgaXMgdGhyb3dpbmcsIGNoZWNrIHRoZSBicm93c2VyIG9yIGRlYnVnZ2VyIGNvbnNvbGUuXG4gIC8vIEJlZm9yZSB0aGlzIGV4Y2VwdGlvbiB3YXMgdGhyb3duLCB0aGVyZSBzaG91bGQgYmUgYGNvbnNvbGUuZXJyb3JgIG91dHB1dFxuICAvLyB0aGF0IHNob3dzIHRoZSB0eXBlIChTeW1ib2wsIFRlbXBvcmFsLlBsYWluRGF0ZSwgZXRjLikgdGhhdCBjYXVzZWQgdGhlXG4gIC8vIHByb2JsZW0gYW5kIGhvdyB0aGF0IHR5cGUgd2FzIHVzZWQ6IGtleSwgYXRycmlidXRlLCBpbnB1dCB2YWx1ZSBwcm9wLCBldGMuXG4gIC8vIEluIG1vc3QgY2FzZXMsIHRoaXMgY29uc29sZSBvdXRwdXQgYWxzbyBzaG93cyB0aGUgY29tcG9uZW50IGFuZCBpdHNcbiAgLy8gYW5jZXN0b3IgY29tcG9uZW50cyB3aGVyZSB0aGUgZXhjZXB0aW9uIGhhcHBlbmVkLlxuICAvL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cbiAgcmV0dXJuICcnICsgdmFsdWU7XG59XG5mdW5jdGlvbiBjaGVja0tleVN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gIHtcbiAgICBpZiAod2lsbENvZXJjaW9uVGhyb3codmFsdWUpKSB7XG4gICAgICBlcnJvcignVGhlIHByb3ZpZGVkIGtleSBpcyBhbiB1bnN1cHBvcnRlZCB0eXBlICVzLicgKyAnIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSBiZWZvcmUgdXNpbmcgaXQgaGVyZS4nLCB0eXBlTmFtZSh2YWx1ZSkpO1xuXG4gICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTsgLy8gdGhyb3cgKHRvIGhlbHAgY2FsbGVycyBmaW5kIHRyb3VibGVzaG9vdGluZyBjb21tZW50cylcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0V3JhcHBlZE5hbWUob3V0ZXJUeXBlLCBpbm5lclR5cGUsIHdyYXBwZXJOYW1lKSB7XG4gIHZhciBkaXNwbGF5TmFtZSA9IG91dGVyVHlwZS5kaXNwbGF5TmFtZTtcblxuICBpZiAoZGlzcGxheU5hbWUpIHtcbiAgICByZXR1cm4gZGlzcGxheU5hbWU7XG4gIH1cblxuICB2YXIgZnVuY3Rpb25OYW1lID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8ICcnO1xuICByZXR1cm4gZnVuY3Rpb25OYW1lICE9PSAnJyA/IHdyYXBwZXJOYW1lICsgXCIoXCIgKyBmdW5jdGlvbk5hbWUgKyBcIilcIiA6IHdyYXBwZXJOYW1lO1xufSAvLyBLZWVwIGluIHN5bmMgd2l0aCByZWFjdC1yZWNvbmNpbGVyL2dldENvbXBvbmVudE5hbWVGcm9tRmliZXJcblxuXG5mdW5jdGlvbiBnZXRDb250ZXh0TmFtZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8ICdDb250ZXh0Jztcbn0gLy8gTm90ZSB0aGF0IHRoZSByZWNvbmNpbGVyIHBhY2thZ2Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIGdldENvbXBvbmVudE5hbWVGcm9tRmliZXIoKSBpbnN0ZWFkLlxuXG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICAvLyBIb3N0IHJvb3QsIHRleHQgbm9kZSBvciBqdXN0IGludmFsaWQgdHlwZS5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHtcbiAgICBpZiAodHlwZW9mIHR5cGUudGFnID09PSAnbnVtYmVyJykge1xuICAgICAgZXJyb3IoJ1JlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0IGluIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSgpLiAnICsgJ1RoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfRlJBR01FTlRfVFlQRTpcbiAgICAgIHJldHVybiAnRnJhZ21lbnQnO1xuXG4gICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgIHJldHVybiAnUG9ydGFsJztcblxuICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgIHJldHVybiAnUHJvZmlsZXInO1xuXG4gICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgcmV0dXJuICdTdHJpY3RNb2RlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2UnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlTGlzdCc7XG5cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfQ09OVEVYVF9UWVBFOlxuICAgICAgICB2YXIgY29udGV4dCA9IHR5cGU7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShjb250ZXh0KSArICcuQ29uc3VtZXInO1xuXG4gICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgIHZhciBwcm92aWRlciA9IHR5cGU7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShwcm92aWRlci5fY29udGV4dCkgKyAnLlByb3ZpZGVyJztcblxuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZ2V0V3JhcHBlZE5hbWUodHlwZSwgdHlwZS5yZW5kZXIsICdGb3J3YXJkUmVmJyk7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICB2YXIgb3V0ZXJOYW1lID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsO1xuXG4gICAgICAgIGlmIChvdXRlck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gb3V0ZXJOYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8ICdNZW1vJztcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGluaXQocGF5bG9hZCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBrZXk6IHRydWUsXG4gIHJlZjogdHJ1ZSxcbiAgX19zZWxmOiB0cnVlLFxuICBfX3NvdXJjZTogdHJ1ZVxufTtcbnZhciBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biwgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24sIGRpZFdhcm5BYm91dFN0cmluZ1JlZnM7XG5cbntcbiAgZGlkV2FybkFib3V0U3RyaW5nUmVmcyA9IHt9O1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZFJlZihjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ3JlZicpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdyZWYnKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdrZXknKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLmtleSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1bmN0aW9uICgpIHtcbiAgICB7XG4gICAgICBpZiAoIXNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ2tleScsIHtcbiAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rpb24gKCkge1xuICAgIHtcbiAgICAgIGlmICghc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24pIHtcbiAgICAgICAgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24gPSB0cnVlO1xuXG4gICAgICAgIGVycm9yKCclczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgd2FybkFib3V0QWNjZXNzaW5nUmVmLmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVmJywge1xuICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuZnVuY3Rpb24gd2FybklmU3RyaW5nUmVmQ2Fubm90QmVBdXRvQ29udmVydGVkKGNvbmZpZykge1xuICB7XG4gICAgaWYgKHR5cGVvZiBjb25maWcucmVmID09PSAnc3RyaW5nJyAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIGNvbmZpZy5fX3NlbGYgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5zdGF0ZU5vZGUgIT09IGNvbmZpZy5fX3NlbGYpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSk7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0U3RyaW5nUmVmc1tjb21wb25lbnROYW1lXSkge1xuICAgICAgICBlcnJvcignQ29tcG9uZW50IFwiJXNcIiBjb250YWlucyB0aGUgc3RyaW5nIHJlZiBcIiVzXCIuICcgKyAnU3VwcG9ydCBmb3Igc3RyaW5nIHJlZnMgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHJlbGVhc2UuICcgKyAnVGhpcyBjYXNlIGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBhbiBhcnJvdyBmdW5jdGlvbi4gJyArICdXZSBhc2sgeW91IHRvIG1hbnVhbGx5IGZpeCB0aGlzIGNhc2UgYnkgdXNpbmcgdXNlUmVmKCkgb3IgY3JlYXRlUmVmKCkgaW5zdGVhZC4gJyArICdMZWFybiBtb3JlIGFib3V0IHVzaW5nIHJlZnMgc2FmZWx5IGhlcmU6ICcgKyAnaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3N0cmljdC1tb2RlLXN0cmluZy1yZWYnLCBjb21wb25lbnROYW1lLCBjb25maWcucmVmKTtcblxuICAgICAgICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBpbnN0YW5jZW9mIGNoZWNrXG4gKiB3aWxsIG5vdCB3b3JrLiBJbnN0ZWFkIHRlc3QgJCR0eXBlb2YgZmllbGQgYWdhaW5zdCBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgdG8gY2hlY2tcbiAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0geyp9IHByb3BzXG4gKiBAcGFyYW0geyp9IGtleVxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWZcbiAqIEBwYXJhbSB7Kn0gb3duZXJcbiAqIEBwYXJhbSB7Kn0gc2VsZiBBICp0ZW1wb3JhcnkqIGhlbHBlciB0byBkZXRlY3QgcGxhY2VzIHdoZXJlIGB0aGlzYCBpc1xuICogZGlmZmVyZW50IGZyb20gdGhlIGBvd25lcmAgd2hlbiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNhbGxlZCwgc28gdGhhdCB3ZVxuICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3dcbiAqIGZ1bmN0aW9ucywgYW5kIGFzIGxvbmcgYXMgYHRoaXNgIGFuZCBvd25lciBhcmUgdGhlIHNhbWUsIHRoZXJlIHdpbGwgYmUgbm9cbiAqIGNoYW5nZSBpbiBiZWhhdmlvci5cbiAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKVxuICogaW5kaWNhdGluZyBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZC9vciBvdGhlciBpbmZvcm1hdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG5cblxudmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgdmFyIGVsZW1lbnQgPSB7XG4gICAgLy8gVGhpcyB0YWcgYWxsb3dzIHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcbiAgICAvLyBCdWlsdC1pbiBwcm9wZXJ0aWVzIHRoYXQgYmVsb25nIG9uIHRoZSBlbGVtZW50XG4gICAgdHlwZTogdHlwZSxcbiAgICBrZXk6IGtleSxcbiAgICByZWY6IHJlZixcbiAgICBwcm9wczogcHJvcHMsXG4gICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC5cbiAgICBfb3duZXI6IG93bmVyXG4gIH07XG5cbiAge1xuICAgIC8vIFRoZSB2YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb25cbiAgICAvLyBhbiBleHRlcm5hbCBiYWNraW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIGZyZWV6ZSB0aGUgd2hvbGUgb2JqZWN0LlxuICAgIC8vIFRoaXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW5cbiAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy5cbiAgICBlbGVtZW50Ll9zdG9yZSA9IHt9OyAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBmYWxzZVxuICAgIH0pOyAvLyBzZWxmIGFuZCBzb3VyY2UgYXJlIERFViBvbmx5IHByb3BlcnRpZXMuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zZWxmJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHNlbGZcbiAgICB9KTsgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWRcbiAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBzb3VyY2VcbiAgICB9KTtcblxuICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07XG4vKipcbiAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjY3JlYXRlZWxlbWVudFxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7IC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblxuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIGtleSA9IG51bGw7XG4gIHZhciByZWYgPSBudWxsO1xuICB2YXIgc2VsZiA9IG51bGw7XG4gIHZhciBzb3VyY2UgPSBudWxsO1xuXG4gIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XG4gICAgICByZWYgPSBjb25maWcucmVmO1xuXG4gICAgICB7XG4gICAgICAgIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24oY29uZmlnLmtleSk7XG4gICAgICB9XG5cbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICBzZWxmID0gY29uZmlnLl9fc2VsZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NlbGY7XG4gICAgc291cmNlID0gY29uZmlnLl9fc291cmNlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc291cmNlOyAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0XG5cbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuXG5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG5cbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgfVxuXG4gICAge1xuICAgICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7XG4gIH0gLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG5cblxuICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBlLmRlZmF1bHRQcm9wcztcblxuICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB7XG4gICAgaWYgKGtleSB8fCByZWYpIHtcbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG59XG5mdW5jdGlvbiBjbG9uZUFuZFJlcGxhY2VLZXkob2xkRWxlbWVudCwgbmV3S2V5KSB7XG4gIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQudHlwZSwgbmV3S2V5LCBvbGRFbGVtZW50LnJlZiwgb2xkRWxlbWVudC5fc2VsZiwgb2xkRWxlbWVudC5fc291cmNlLCBvbGRFbGVtZW50Ll9vd25lciwgb2xkRWxlbWVudC5wcm9wcyk7XG4gIHJldHVybiBuZXdFbGVtZW50O1xufVxuLyoqXG4gKiBDbG9uZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCB1c2luZyBlbGVtZW50IGFzIHRoZSBzdGFydGluZyBwb2ludC5cbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjY2xvbmVlbGVtZW50XG4gKi9cblxuZnVuY3Rpb24gY2xvbmVFbGVtZW50KGVsZW1lbnQsIGNvbmZpZywgY2hpbGRyZW4pIHtcbiAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUmVhY3QuY2xvbmVFbGVtZW50KC4uLik6IFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgXCIgKyBlbGVtZW50ICsgXCIuXCIpO1xuICB9XG5cbiAgdmFyIHByb3BOYW1lOyAvLyBPcmlnaW5hbCBwcm9wcyBhcmUgY29waWVkXG5cbiAgdmFyIHByb3BzID0gYXNzaWduKHt9LCBlbGVtZW50LnByb3BzKTsgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuXG4gIHZhciBrZXkgPSBlbGVtZW50LmtleTtcbiAgdmFyIHJlZiA9IGVsZW1lbnQucmVmOyAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5jZSB0aGUgb3duZXIgaXMgcHJlc2VydmVkLlxuXG4gIHZhciBzZWxmID0gZWxlbWVudC5fc2VsZjsgLy8gU291cmNlIGlzIHByZXNlcnZlZCBzaW5jZSBjbG9uZUVsZW1lbnQgaXMgdW5saWtlbHkgdG8gYmUgdGFyZ2V0ZWQgYnkgYVxuICAvLyB0cmFuc3BpbGVyLCBhbmQgdGhlIG9yaWdpbmFsIHNvdXJjZSBpcyBwcm9iYWJseSBhIGJldHRlciBpbmRpY2F0b3Igb2YgdGhlXG4gIC8vIHRydWUgb3duZXIuXG5cbiAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTsgLy8gT3duZXIgd2lsbCBiZSBwcmVzZXJ2ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJpZGRlblxuXG4gIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuXG4gIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XG4gICAgICAvLyBTaWxlbnRseSBzdGVhbCB0aGUgcmVmIGZyb20gdGhlIHBhcmVudC5cbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgICBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcbiAgICAgIHtcbiAgICAgICAgY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihjb25maWcua2V5KTtcbiAgICAgIH1cblxuICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuICAgIH0gLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJvcHNcblxuXG4gICAgdmFyIGRlZmF1bHRQcm9wcztcblxuICAgIGlmIChlbGVtZW50LnR5cGUgJiYgZWxlbWVudC50eXBlLmRlZmF1bHRQcm9wcykge1xuICAgICAgZGVmYXVsdFByb3BzID0gZWxlbWVudC50eXBlLmRlZmF1bHRQcm9wcztcbiAgICB9XG5cbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBpZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG5cblxuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcblxuICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG5cbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7XG4gIH1cblxuICByZXR1cm4gUmVhY3RFbGVtZW50KGVsZW1lbnQudHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKTtcbn1cbi8qKlxuICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjaXN2YWxpZGVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgUmVhY3RFbGVtZW50LlxuICogQGZpbmFsXG4gKi9cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5cbnZhciBTRVBBUkFUT1IgPSAnLic7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuLyoqXG4gKiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8gdXNlIGFzIGEgcmVhY3RpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gYmUgZXNjYXBlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGVzY2FwZWQga2V5LlxuICovXG5cbmZ1bmN0aW9uIGVzY2FwZShrZXkpIHtcbiAgdmFyIGVzY2FwZVJlZ2V4ID0gL1s9Ol0vZztcbiAgdmFyIGVzY2FwZXJMb29rdXAgPSB7XG4gICAgJz0nOiAnPTAnLFxuICAgICc6JzogJz0yJ1xuICB9O1xuICB2YXIgZXNjYXBlZFN0cmluZyA9IGtleS5yZXBsYWNlKGVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICByZXR1cm4gZXNjYXBlckxvb2t1cFttYXRjaF07XG4gIH0pO1xuICByZXR1cm4gJyQnICsgZXNjYXBlZFN0cmluZztcbn1cbi8qKlxuICogVE9ETzogVGVzdCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUga2V5XG4gKiBwYXR0ZXJuLlxuICovXG5cblxudmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcbnZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCA9IC9cXC8rL2c7XG5cbmZ1bmN0aW9uIGVzY2FwZVVzZXJQcm92aWRlZEtleSh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTtcbn1cbi8qKlxuICogR2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGVsZW1lbnQgd2l0aGluIGEgc2V0LlxuICpcbiAqIEBwYXJhbSB7Kn0gZWxlbWVudCBBIGVsZW1lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuXG5cbmZ1bmN0aW9uIGdldEVsZW1lbnRLZXkoZWxlbWVudCwgaW5kZXgpIHtcbiAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmVcbiAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMuXG4gIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCcgJiYgZWxlbWVudCAhPT0gbnVsbCAmJiBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgLy8gRXhwbGljaXQga2V5XG4gICAge1xuICAgICAgY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihlbGVtZW50LmtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVzY2FwZSgnJyArIGVsZW1lbnQua2V5KTtcbiAgfSAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNldFxuXG5cbiAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cblxuZnVuY3Rpb24gbWFwSW50b0FycmF5KGNoaWxkcmVuLCBhcnJheSwgZXNjYXBlZFByZWZpeCwgbmFtZVNvRmFyLCBjYWxsYmFjaykge1xuICB2YXIgdHlwZSA9IHR5cGVvZiBjaGlsZHJlbjtcblxuICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgLy8gQWxsIG9mIHRoZSBhYm92ZSBhcmUgcGVyY2VpdmVkIGFzIG51bGwuXG4gICAgY2hpbGRyZW4gPSBudWxsO1xuICB9XG5cbiAgdmFyIGludm9rZUNhbGxiYWNrID0gZmFsc2U7XG5cbiAgaWYgKGNoaWxkcmVuID09PSBudWxsKSB7XG4gICAgaW52b2tlQ2FsbGJhY2sgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIGludm9rZUNhbGxiYWNrID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHN3aXRjaCAoY2hpbGRyZW4uJCR0eXBlb2YpIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX0VMRU1FTlRfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgICAgaW52b2tlQ2FsbGJhY2sgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBpZiAoaW52b2tlQ2FsbGJhY2spIHtcbiAgICB2YXIgX2NoaWxkID0gY2hpbGRyZW47XG4gICAgdmFyIG1hcHBlZENoaWxkID0gY2FsbGJhY2soX2NoaWxkKTsgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzOlxuXG4gICAgdmFyIGNoaWxkS2V5ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiArIGdldEVsZW1lbnRLZXkoX2NoaWxkLCAwKSA6IG5hbWVTb0ZhcjtcblxuICAgIGlmIChpc0FycmF5KG1hcHBlZENoaWxkKSkge1xuICAgICAgdmFyIGVzY2FwZWRDaGlsZEtleSA9ICcnO1xuXG4gICAgICBpZiAoY2hpbGRLZXkgIT0gbnVsbCkge1xuICAgICAgICBlc2NhcGVkQ2hpbGRLZXkgPSBlc2NhcGVVc2VyUHJvdmlkZWRLZXkoY2hpbGRLZXkpICsgJy8nO1xuICAgICAgfVxuXG4gICAgICBtYXBJbnRvQXJyYXkobWFwcGVkQ2hpbGQsIGFycmF5LCBlc2NhcGVkQ2hpbGRLZXksICcnLCBmdW5jdGlvbiAoYykge1xuICAgICAgICByZXR1cm4gYztcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobWFwcGVkQ2hpbGQgIT0gbnVsbCkge1xuICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KG1hcHBlZENoaWxkKSkge1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhlIGBpZmAgc3RhdGVtZW50IGhlcmUgcHJldmVudHMgYXV0by1kaXNhYmxpbmcgb2YgdGhlIHNhZmVcbiAgICAgICAgICAvLyBjb2VyY2lvbiBFU0xpbnQgcnVsZSwgc28gd2UgbXVzdCBtYW51YWxseSBkaXNhYmxlIGl0IGJlbG93LlxuICAgICAgICAgIC8vICRGbG93Rml4TWUgRmxvdyBpbmNvcnJlY3RseSB0aGlua3MgUmVhY3QuUG9ydGFsIGRvZXNuJ3QgaGF2ZSBhIGtleVxuICAgICAgICAgIGlmIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFfY2hpbGQgfHwgX2NoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5KSkge1xuICAgICAgICAgICAgY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihtYXBwZWRDaGlsZC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG1hcHBlZENoaWxkID0gY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBlZENoaWxkLCAvLyBLZWVwIGJvdGggdGhlIChtYXBwZWQpIGFuZCBvbGQga2V5cyBpZiB0aGV5IGRpZmZlciwganVzdCBhc1xuICAgICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cbiAgICAgICAgZXNjYXBlZFByZWZpeCArICggLy8gJEZsb3dGaXhNZSBGbG93IGluY29ycmVjdGx5IHRoaW5rcyBSZWFjdC5Qb3J0YWwgZG9lc24ndCBoYXZlIGEga2V5XG4gICAgICAgIG1hcHBlZENoaWxkLmtleSAmJiAoIV9jaGlsZCB8fCBfY2hpbGQua2V5ICE9PSBtYXBwZWRDaGlsZC5rZXkpID8gLy8gJEZsb3dGaXhNZSBGbG93IGluY29ycmVjdGx5IHRoaW5rcyBleGlzdGluZyBlbGVtZW50J3Mga2V5IGNhbiBiZSBhIG51bWJlclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cbiAgICAgICAgZXNjYXBlVXNlclByb3ZpZGVkS2V5KCcnICsgbWFwcGVkQ2hpbGQua2V5KSArICcvJyA6ICcnKSArIGNoaWxkS2V5KTtcbiAgICAgIH1cblxuICAgICAgYXJyYXkucHVzaChtYXBwZWRDaGlsZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB2YXIgY2hpbGQ7XG4gIHZhciBuZXh0TmFtZTtcbiAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1YnRyZWUuXG5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldEVsZW1lbnRLZXkoY2hpbGQsIGkpO1xuICAgICAgc3VidHJlZUNvdW50ICs9IG1hcEludG9BcnJheShjaGlsZCwgYXJyYXksIGVzY2FwZWRQcmVmaXgsIG5leHROYW1lLCBjYWxsYmFjayk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG5cbiAgICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciBpdGVyYWJsZUNoaWxkcmVuID0gY2hpbGRyZW47XG5cbiAgICAgIHtcbiAgICAgICAgLy8gV2FybiBhYm91dCB1c2luZyBNYXBzIGFzIGNoaWxkcmVuXG4gICAgICAgIGlmIChpdGVyYXRvckZuID09PSBpdGVyYWJsZUNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoIWRpZFdhcm5BYm91dE1hcHMpIHtcbiAgICAgICAgICAgIHdhcm4oJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHN1cHBvcnRlZC4gJyArICdVc2UgYW4gYXJyYXkgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChpdGVyYWJsZUNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAgdmFyIGlpID0gMDtcblxuICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG4gICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRFbGVtZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgc3VidHJlZUNvdW50ICs9IG1hcEludG9BcnJheShjaGlsZCwgYXJyYXksIGVzY2FwZWRQcmVmaXgsIG5leHROYW1lLCBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG4gICAgICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIiArIChjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcpICsgXCIpLiBcIiArICdJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZC4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3VidHJlZUNvdW50O1xufVxuXG4vKipcbiAqIE1hcHMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjaGlsZHJlbm1hcFxuICpcbiAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG4gKiBsZWFmIGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmdW5jIFRoZSBtYXAgZnVuY3Rpb24uXG4gKiBAcGFyYW0geyp9IGNvbnRleHQgQ29udGV4dCBmb3IgbWFwRnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuYywgY29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGNvdW50ID0gMDtcbiAgbWFwSW50b0FycmF5KGNoaWxkcmVuLCByZXN1bHQsICcnLCAnJywgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgY291bnQrKyk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXNcbiAqIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGNoaWxkcmVuY291bnRcbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbi5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgdmFyIG4gPSAwO1xuICBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKCkge1xuICAgIG4rKzsgLy8gRG9uJ3QgcmV0dXJuIGFueXRoaW5nXG4gIH0pO1xuICByZXR1cm4gbjtcbn1cblxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI3JlYWN0Y2hpbGRyZW5mb3JlYWNoXG4gKlxuICogVGhlIHByb3ZpZGVkIGZvckVhY2hGdW5jKGNoaWxkLCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZvckVhY2hGdW5jXG4gKiBAcGFyYW0geyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgZm9yIGZvckVhY2hDb250ZXh0LlxuICovXG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCkge1xuICBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKCkge1xuICAgIGZvckVhY2hGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIERvbid0IHJldHVybiBhbnl0aGluZy5cbiAgfSwgZm9yRWFjaENvbnRleHQpO1xufVxuLyoqXG4gKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZFxuICogcmV0dXJuIGFuIGFycmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI3JlYWN0Y2hpbGRyZW50b2FycmF5XG4gKi9cblxuXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4gIHJldHVybiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KSB8fCBbXTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgaW4gYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlXG4gKiBpcyBvbmx5IG9uZSBjaGlsZCBpbiB0aGUgY29sbGVjdGlvbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI3JlYWN0Y2hpbGRyZW5vbmx5XG4gKlxuICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgYSBzaW5nbGUgY2hpbGQgZ2V0c1xuICogcGFzc2VkIHdpdGhvdXQgYSB3cmFwcGVyLCBidXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgdG9cbiAqIGFic3RyYWN0IGF3YXkgdGhlIHBhcnRpY3VsYXIgc3RydWN0dXJlIG9mIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSB7P29iamVjdH0gY2hpbGRyZW4gQ2hpbGQgY29sbGVjdGlvbiBzdHJ1Y3R1cmUuXG4gKiBAcmV0dXJuIHtSZWFjdEVsZW1lbnR9IFRoZSBmaXJzdCBhbmQgb25seSBgUmVhY3RFbGVtZW50YCBjb250YWluZWQgaW4gdGhlXG4gKiBzdHJ1Y3R1cmUuXG4gKi9cblxuXG5mdW5jdGlvbiBvbmx5Q2hpbGQoY2hpbGRyZW4pIHtcbiAgaWYgKCFpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpO1xuICB9XG5cbiAgcmV0dXJuIGNoaWxkcmVuO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb250ZXh0KGRlZmF1bHRWYWx1ZSkge1xuICAvLyBUT0RPOiBTZWNvbmQgYXJndW1lbnQgdXNlZCB0byBiZSBhbiBvcHRpb25hbCBgY2FsY3VsYXRlQ2hhbmdlZEJpdHNgXG4gIC8vIGZ1bmN0aW9uLiBXYXJuIHRvIHJlc2VydmUgZm9yIGZ1dHVyZSB1c2U/XG4gIHZhciBjb250ZXh0ID0ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9DT05URVhUX1RZUEUsXG4gICAgLy8gQXMgYSB3b3JrYXJvdW5kIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29uY3VycmVudCByZW5kZXJlcnMsIHdlIGNhdGVnb3JpemVcbiAgICAvLyBzb21lIHJlbmRlcmVycyBhcyBwcmltYXJ5IGFuZCBvdGhlcnMgYXMgc2Vjb25kYXJ5LiBXZSBvbmx5IGV4cGVjdFxuICAgIC8vIHRoZXJlIHRvIGJlIHR3byBjb25jdXJyZW50IHJlbmRlcmVycyBhdCBtb3N0OiBSZWFjdCBOYXRpdmUgKHByaW1hcnkpIGFuZFxuICAgIC8vIEZhYnJpYyAoc2Vjb25kYXJ5KTsgUmVhY3QgRE9NIChwcmltYXJ5KSBhbmQgUmVhY3QgQVJUIChzZWNvbmRhcnkpLlxuICAgIC8vIFNlY29uZGFyeSByZW5kZXJlcnMgc3RvcmUgdGhlaXIgY29udGV4dCB2YWx1ZXMgb24gc2VwYXJhdGUgZmllbGRzLlxuICAgIF9jdXJyZW50VmFsdWU6IGRlZmF1bHRWYWx1ZSxcbiAgICBfY3VycmVudFZhbHVlMjogZGVmYXVsdFZhbHVlLFxuICAgIC8vIFVzZWQgdG8gdHJhY2sgaG93IG1hbnkgY29uY3VycmVudCByZW5kZXJlcnMgdGhpcyBjb250ZXh0IGN1cnJlbnRseVxuICAgIC8vIHN1cHBvcnRzIHdpdGhpbiBpbiBhIHNpbmdsZSByZW5kZXJlci4gU3VjaCBhcyBwYXJhbGxlbCBzZXJ2ZXIgcmVuZGVyaW5nLlxuICAgIF90aHJlYWRDb3VudDogMCxcbiAgICAvLyBUaGVzZSBhcmUgY2lyY3VsYXJcbiAgICBQcm92aWRlcjogbnVsbCxcbiAgICBDb25zdW1lcjogbnVsbCxcbiAgICAvLyBBZGQgdGhlc2UgdG8gdXNlIHNhbWUgaGlkZGVuIGNsYXNzIGluIFZNIGFzIFNlcnZlckNvbnRleHRcbiAgICBfZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIF9nbG9iYWxOYW1lOiBudWxsXG4gIH07XG4gIGNvbnRleHQuUHJvdmlkZXIgPSB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX1BST1ZJREVSX1RZUEUsXG4gICAgX2NvbnRleHQ6IGNvbnRleHRcbiAgfTtcbiAgdmFyIGhhc1dhcm5lZEFib3V0VXNpbmdOZXN0ZWRDb250ZXh0Q29uc3VtZXJzID0gZmFsc2U7XG4gIHZhciBoYXNXYXJuZWRBYm91dFVzaW5nQ29uc3VtZXJQcm92aWRlciA9IGZhbHNlO1xuICB2YXIgaGFzV2FybmVkQWJvdXREaXNwbGF5TmFtZU9uQ29uc3VtZXIgPSBmYWxzZTtcblxuICB7XG4gICAgLy8gQSBzZXBhcmF0ZSBvYmplY3QsIGJ1dCBwcm94aWVzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNvbnRleHQgb2JqZWN0IGZvclxuICAgIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBJdCBoYXMgYSBkaWZmZXJlbnQgJCR0eXBlb2YsIHNvIHdlIGNhbiBwcm9wZXJseVxuICAgIC8vIHdhcm4gZm9yIHRoZSBpbmNvcnJlY3QgdXNhZ2Ugb2YgQ29udGV4dCBhcyBhIENvbnN1bWVyLlxuICAgIHZhciBDb25zdW1lciA9IHtcbiAgICAgICQkdHlwZW9mOiBSRUFDVF9DT05URVhUX1RZUEUsXG4gICAgICBfY29udGV4dDogY29udGV4dFxuICAgIH07IC8vICRGbG93Rml4TWU6IEZsb3cgY29tcGxhaW5zIGFib3V0IG5vdCBzZXR0aW5nIGEgdmFsdWUsIHdoaWNoIGlzIGludGVudGlvbmFsIGhlcmVcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKENvbnN1bWVyLCB7XG4gICAgICBQcm92aWRlcjoge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIWhhc1dhcm5lZEFib3V0VXNpbmdDb25zdW1lclByb3ZpZGVyKSB7XG4gICAgICAgICAgICBoYXNXYXJuZWRBYm91dFVzaW5nQ29uc3VtZXJQcm92aWRlciA9IHRydWU7XG5cbiAgICAgICAgICAgIGVycm9yKCdSZW5kZXJpbmcgPENvbnRleHQuQ29uc3VtZXIuUHJvdmlkZXI+IGlzIG5vdCBzdXBwb3J0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAnICsgJ2EgZnV0dXJlIG1ham9yIHJlbGVhc2UuIERpZCB5b3UgbWVhbiB0byByZW5kZXIgPENvbnRleHQuUHJvdmlkZXI+IGluc3RlYWQ/Jyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuUHJvdmlkZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKF9Qcm92aWRlcikge1xuICAgICAgICAgIGNvbnRleHQuUHJvdmlkZXIgPSBfUHJvdmlkZXI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBfY3VycmVudFZhbHVlOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9jdXJyZW50VmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKF9jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICBjb250ZXh0Ll9jdXJyZW50VmFsdWUgPSBfY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgX2N1cnJlbnRWYWx1ZTI6IHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuX2N1cnJlbnRWYWx1ZTI7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKF9jdXJyZW50VmFsdWUyKSB7XG4gICAgICAgICAgY29udGV4dC5fY3VycmVudFZhbHVlMiA9IF9jdXJyZW50VmFsdWUyO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgX3RocmVhZENvdW50OiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjb250ZXh0Ll90aHJlYWRDb3VudDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoX3RocmVhZENvdW50KSB7XG4gICAgICAgICAgY29udGV4dC5fdGhyZWFkQ291bnQgPSBfdGhyZWFkQ291bnQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBDb25zdW1lcjoge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIWhhc1dhcm5lZEFib3V0VXNpbmdOZXN0ZWRDb250ZXh0Q29uc3VtZXJzKSB7XG4gICAgICAgICAgICBoYXNXYXJuZWRBYm91dFVzaW5nTmVzdGVkQ29udGV4dENvbnN1bWVycyA9IHRydWU7XG5cbiAgICAgICAgICAgIGVycm9yKCdSZW5kZXJpbmcgPENvbnRleHQuQ29uc3VtZXIuQ29uc3VtZXI+IGlzIG5vdCBzdXBwb3J0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAnICsgJ2EgZnV0dXJlIG1ham9yIHJlbGVhc2UuIERpZCB5b3UgbWVhbiB0byByZW5kZXIgPENvbnRleHQuQ29uc3VtZXI+IGluc3RlYWQ/Jyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuQ29uc3VtZXI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBkaXNwbGF5TmFtZToge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5kaXNwbGF5TmFtZTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICBpZiAoIWhhc1dhcm5lZEFib3V0RGlzcGxheU5hbWVPbkNvbnN1bWVyKSB7XG4gICAgICAgICAgICB3YXJuKCdTZXR0aW5nIGBkaXNwbGF5TmFtZWAgb24gQ29udGV4dC5Db25zdW1lciBoYXMgbm8gZWZmZWN0LiAnICsgXCJZb3Ugc2hvdWxkIHNldCBpdCBkaXJlY3RseSBvbiB0aGUgY29udGV4dCB3aXRoIENvbnRleHQuZGlzcGxheU5hbWUgPSAnJXMnLlwiLCBkaXNwbGF5TmFtZSk7XG5cbiAgICAgICAgICAgIGhhc1dhcm5lZEFib3V0RGlzcGxheU5hbWVPbkNvbnN1bWVyID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTsgLy8gJEZsb3dGaXhNZTogRmxvdyBjb21wbGFpbnMgYWJvdXQgbWlzc2luZyBwcm9wZXJ0aWVzIGJlY2F1c2UgaXQgZG9lc24ndCB1bmRlcnN0YW5kIGRlZmluZVByb3BlcnR5XG5cbiAgICBjb250ZXh0LkNvbnN1bWVyID0gQ29uc3VtZXI7XG4gIH1cblxuICB7XG4gICAgY29udGV4dC5fY3VycmVudFJlbmRlcmVyID0gbnVsbDtcbiAgICBjb250ZXh0Ll9jdXJyZW50UmVuZGVyZXIyID0gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuXG52YXIgVW5pbml0aWFsaXplZCA9IC0xO1xudmFyIFBlbmRpbmcgPSAwO1xudmFyIFJlc29sdmVkID0gMTtcbnZhciBSZWplY3RlZCA9IDI7XG5cbmZ1bmN0aW9uIGxhenlJbml0aWFsaXplcihwYXlsb2FkKSB7XG4gIGlmIChwYXlsb2FkLl9zdGF0dXMgPT09IFVuaW5pdGlhbGl6ZWQpIHtcbiAgICB2YXIgY3RvciA9IHBheWxvYWQuX3Jlc3VsdDtcbiAgICB2YXIgdGhlbmFibGUgPSBjdG9yKCk7IC8vIFRyYW5zaXRpb24gdG8gdGhlIG5leHQgc3RhdGUuXG4gICAgLy8gVGhpcyBtaWdodCB0aHJvdyBlaXRoZXIgYmVjYXVzZSBpdCdzIG1pc3Npbmcgb3IgdGhyb3dzLiBJZiBzbywgd2UgdHJlYXQgaXRcbiAgICAvLyBhcyBzdGlsbCB1bmluaXRpYWxpemVkIGFuZCB0cnkgYWdhaW4gbmV4dCB0aW1lLiBXaGljaCBpcyB0aGUgc2FtZSBhcyB3aGF0XG4gICAgLy8gaGFwcGVucyBpZiB0aGUgY3RvciBvciBhbnkgd3JhcHBlcnMgcHJvY2Vzc2luZyB0aGUgY3RvciB0aHJvd3MuIFRoaXMgbWlnaHRcbiAgICAvLyBlbmQgdXAgZml4aW5nIGl0IGlmIHRoZSByZXNvbHV0aW9uIHdhcyBhIGNvbmN1cnJlbmN5IGJ1Zy5cblxuICAgIHRoZW5hYmxlLnRoZW4oZnVuY3Rpb24gKG1vZHVsZU9iamVjdCkge1xuICAgICAgaWYgKHBheWxvYWQuX3N0YXR1cyA9PT0gUGVuZGluZyB8fCBwYXlsb2FkLl9zdGF0dXMgPT09IFVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgLy8gVHJhbnNpdGlvbiB0byB0aGUgbmV4dCBzdGF0ZS5cbiAgICAgICAgdmFyIHJlc29sdmVkID0gcGF5bG9hZDtcbiAgICAgICAgcmVzb2x2ZWQuX3N0YXR1cyA9IFJlc29sdmVkO1xuICAgICAgICByZXNvbHZlZC5fcmVzdWx0ID0gbW9kdWxlT2JqZWN0O1xuICAgICAgfVxuICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgaWYgKHBheWxvYWQuX3N0YXR1cyA9PT0gUGVuZGluZyB8fCBwYXlsb2FkLl9zdGF0dXMgPT09IFVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgLy8gVHJhbnNpdGlvbiB0byB0aGUgbmV4dCBzdGF0ZS5cbiAgICAgICAgdmFyIHJlamVjdGVkID0gcGF5bG9hZDtcbiAgICAgICAgcmVqZWN0ZWQuX3N0YXR1cyA9IFJlamVjdGVkO1xuICAgICAgICByZWplY3RlZC5fcmVzdWx0ID0gZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocGF5bG9hZC5fc3RhdHVzID09PSBVbmluaXRpYWxpemVkKSB7XG4gICAgICAvLyBJbiBjYXNlLCB3ZSdyZSBzdGlsbCB1bmluaXRpYWxpemVkLCB0aGVuIHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSB0aGVuYWJsZVxuICAgICAgLy8gdG8gcmVzb2x2ZS4gU2V0IGl0IGFzIHBlbmRpbmcgaW4gdGhlIG1lYW50aW1lLlxuICAgICAgdmFyIHBlbmRpbmcgPSBwYXlsb2FkO1xuICAgICAgcGVuZGluZy5fc3RhdHVzID0gUGVuZGluZztcbiAgICAgIHBlbmRpbmcuX3Jlc3VsdCA9IHRoZW5hYmxlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwYXlsb2FkLl9zdGF0dXMgPT09IFJlc29sdmVkKSB7XG4gICAgdmFyIG1vZHVsZU9iamVjdCA9IHBheWxvYWQuX3Jlc3VsdDtcblxuICAgIHtcbiAgICAgIGlmIChtb2R1bGVPYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlcnJvcignbGF6eTogRXhwZWN0ZWQgdGhlIHJlc3VsdCBvZiBhIGR5bmFtaWMgaW1wJyArICdvcnQoKSBjYWxsLiAnICsgJ0luc3RlYWQgcmVjZWl2ZWQ6ICVzXFxuXFxuWW91ciBjb2RlIHNob3VsZCBsb29rIGxpa2U6IFxcbiAgJyArIC8vIEJyZWFrIHVwIGltcG9ydHMgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IHBhcnNpbmcgdGhlbSBhcyBkZXBlbmRlbmNpZXMuXG4gICAgICAgICdjb25zdCBNeUNvbXBvbmVudCA9IGxhenkoKCkgPT4gaW1wJyArIFwib3J0KCcuL015Q29tcG9uZW50JykpXFxuXFxuXCIgKyAnRGlkIHlvdSBhY2NpZGVudGFsbHkgcHV0IGN1cmx5IGJyYWNlcyBhcm91bmQgdGhlIGltcG9ydD8nLCBtb2R1bGVPYmplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGlmICghKCdkZWZhdWx0JyBpbiBtb2R1bGVPYmplY3QpKSB7XG4gICAgICAgIGVycm9yKCdsYXp5OiBFeHBlY3RlZCB0aGUgcmVzdWx0IG9mIGEgZHluYW1pYyBpbXAnICsgJ29ydCgpIGNhbGwuICcgKyAnSW5zdGVhZCByZWNlaXZlZDogJXNcXG5cXG5Zb3VyIGNvZGUgc2hvdWxkIGxvb2sgbGlrZTogXFxuICAnICsgLy8gQnJlYWsgdXAgaW1wb3J0cyB0byBhdm9pZCBhY2NpZGVudGFsbHkgcGFyc2luZyB0aGVtIGFzIGRlcGVuZGVuY2llcy5cbiAgICAgICAgJ2NvbnN0IE15Q29tcG9uZW50ID0gbGF6eSgoKSA9PiBpbXAnICsgXCJvcnQoJy4vTXlDb21wb25lbnQnKSlcIiwgbW9kdWxlT2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbW9kdWxlT2JqZWN0LmRlZmF1bHQ7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgcGF5bG9hZC5fcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGxhenkoY3Rvcikge1xuICB2YXIgcGF5bG9hZCA9IHtcbiAgICAvLyBXZSB1c2UgdGhlc2UgZmllbGRzIHRvIHN0b3JlIHRoZSByZXN1bHQuXG4gICAgX3N0YXR1czogVW5pbml0aWFsaXplZCxcbiAgICBfcmVzdWx0OiBjdG9yXG4gIH07XG4gIHZhciBsYXp5VHlwZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfTEFaWV9UWVBFLFxuICAgIF9wYXlsb2FkOiBwYXlsb2FkLFxuICAgIF9pbml0OiBsYXp5SW5pdGlhbGl6ZXJcbiAgfTtcblxuICB7XG4gICAgLy8gSW4gcHJvZHVjdGlvbiwgdGhpcyB3b3VsZCBqdXN0IHNldCBpdCBvbiB0aGUgb2JqZWN0LlxuICAgIHZhciBkZWZhdWx0UHJvcHM7XG4gICAgdmFyIHByb3BUeXBlczsgLy8gJEZsb3dGaXhNZVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobGF6eVR5cGUsIHtcbiAgICAgIGRlZmF1bHRQcm9wczoge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0UHJvcHM7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5ld0RlZmF1bHRQcm9wcykge1xuICAgICAgICAgIGVycm9yKCdSZWFjdC5sYXp5KC4uLik6IEl0IGlzIG5vdCBzdXBwb3J0ZWQgdG8gYXNzaWduIGBkZWZhdWx0UHJvcHNgIHRvICcgKyAnYSBsYXp5IGNvbXBvbmVudCBpbXBvcnQuIEVpdGhlciBzcGVjaWZ5IHRoZW0gd2hlcmUgdGhlIGNvbXBvbmVudCAnICsgJ2lzIGRlZmluZWQsIG9yIGNyZWF0ZSBhIHdyYXBwaW5nIGNvbXBvbmVudCBhcm91bmQgaXQuJyk7XG5cbiAgICAgICAgICBkZWZhdWx0UHJvcHMgPSBuZXdEZWZhdWx0UHJvcHM7IC8vIE1hdGNoIHByb2R1Y3Rpb24gYmVoYXZpb3IgbW9yZSBjbG9zZWx5OlxuICAgICAgICAgIC8vICRGbG93Rml4TWVcblxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsYXp5VHlwZSwgJ2RlZmF1bHRQcm9wcycsIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHByb3BUeXBlczoge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBwcm9wVHlwZXM7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5ld1Byb3BUeXBlcykge1xuICAgICAgICAgIGVycm9yKCdSZWFjdC5sYXp5KC4uLik6IEl0IGlzIG5vdCBzdXBwb3J0ZWQgdG8gYXNzaWduIGBwcm9wVHlwZXNgIHRvICcgKyAnYSBsYXp5IGNvbXBvbmVudCBpbXBvcnQuIEVpdGhlciBzcGVjaWZ5IHRoZW0gd2hlcmUgdGhlIGNvbXBvbmVudCAnICsgJ2lzIGRlZmluZWQsIG9yIGNyZWF0ZSBhIHdyYXBwaW5nIGNvbXBvbmVudCBhcm91bmQgaXQuJyk7XG5cbiAgICAgICAgICBwcm9wVHlwZXMgPSBuZXdQcm9wVHlwZXM7IC8vIE1hdGNoIHByb2R1Y3Rpb24gYmVoYXZpb3IgbW9yZSBjbG9zZWx5OlxuICAgICAgICAgIC8vICRGbG93Rml4TWVcblxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsYXp5VHlwZSwgJ3Byb3BUeXBlcycsIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGxhenlUeXBlO1xufVxuXG5mdW5jdGlvbiBmb3J3YXJkUmVmKHJlbmRlcikge1xuICB7XG4gICAgaWYgKHJlbmRlciAhPSBudWxsICYmIHJlbmRlci4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFKSB7XG4gICAgICBlcnJvcignZm9yd2FyZFJlZiByZXF1aXJlcyBhIHJlbmRlciBmdW5jdGlvbiBidXQgcmVjZWl2ZWQgYSBgbWVtb2AgJyArICdjb21wb25lbnQuIEluc3RlYWQgb2YgZm9yd2FyZFJlZihtZW1vKC4uLikpLCB1c2UgJyArICdtZW1vKGZvcndhcmRSZWYoLi4uKSkuJyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVuZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBlcnJvcignZm9yd2FyZFJlZiByZXF1aXJlcyBhIHJlbmRlciBmdW5jdGlvbiBidXQgd2FzIGdpdmVuICVzLicsIHJlbmRlciA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiByZW5kZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocmVuZGVyLmxlbmd0aCAhPT0gMCAmJiByZW5kZXIubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlbmRlciBmdW5jdGlvbnMgYWNjZXB0IGV4YWN0bHkgdHdvIHBhcmFtZXRlcnM6IHByb3BzIGFuZCByZWYuICVzJywgcmVuZGVyLmxlbmd0aCA9PT0gMSA/ICdEaWQgeW91IGZvcmdldCB0byB1c2UgdGhlIHJlZiBwYXJhbWV0ZXI/JyA6ICdBbnkgYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2lsbCBiZSB1bmRlZmluZWQuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlbmRlciAhPSBudWxsKSB7XG4gICAgICBpZiAocmVuZGVyLmRlZmF1bHRQcm9wcyAhPSBudWxsIHx8IHJlbmRlci5wcm9wVHlwZXMgIT0gbnVsbCkge1xuICAgICAgICBlcnJvcignZm9yd2FyZFJlZiByZW5kZXIgZnVuY3Rpb25zIGRvIG5vdCBzdXBwb3J0IHByb3BUeXBlcyBvciBkZWZhdWx0UHJvcHMuICcgKyAnRGlkIHlvdSBhY2NpZGVudGFsbHkgcGFzcyBhIFJlYWN0IGNvbXBvbmVudD8nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZWxlbWVudFR5cGUgPSB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUsXG4gICAgcmVuZGVyOiByZW5kZXJcbiAgfTtcblxuICB7XG4gICAgdmFyIG93bk5hbWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnRUeXBlLCAnZGlzcGxheU5hbWUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gb3duTmFtZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIG93bk5hbWUgPSBuYW1lOyAvLyBUaGUgaW5uZXIgY29tcG9uZW50IHNob3VsZG4ndCBpbmhlcml0IHRoaXMgZGlzcGxheSBuYW1lIGluIG1vc3QgY2FzZXMsXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlIGNvbXBvbmVudCBtYXkgYmUgdXNlZCBlbHNld2hlcmUuXG4gICAgICAgIC8vIEJ1dCBpdCdzIG5pY2UgZm9yIGFub255bW91cyBmdW5jdGlvbnMgdG8gaW5oZXJpdCB0aGUgbmFtZSxcbiAgICAgICAgLy8gc28gdGhhdCBvdXIgY29tcG9uZW50LXN0YWNrIGdlbmVyYXRpb24gbG9naWMgd2lsbCBkaXNwbGF5IHRoZWlyIGZyYW1lcy5cbiAgICAgICAgLy8gQW4gYW5vbnltb3VzIGZ1bmN0aW9uIGdlbmVyYWxseSBzdWdnZXN0cyBhIHBhdHRlcm4gbGlrZTpcbiAgICAgICAgLy8gICBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7Li4ufSk7XG4gICAgICAgIC8vIFRoaXMga2luZCBvZiBpbm5lciBmdW5jdGlvbiBpcyBub3QgdXNlZCBlbHNld2hlcmUgc28gdGhlIHNpZGUgZWZmZWN0IGlzIG9rYXkuXG5cbiAgICAgICAgaWYgKCFyZW5kZXIubmFtZSAmJiAhcmVuZGVyLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgcmVuZGVyLmRpc3BsYXlOYW1lID0gbmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRUeXBlO1xufVxuXG52YXIgUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRTtcblxue1xuICBSRUFDVF9NT0RVTEVfUkVGRVJFTkNFID0gU3ltYm9sLmZvcigncmVhY3QubW9kdWxlLnJlZmVyZW5jZScpO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSkge1xuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gTm90ZTogdHlwZW9mIG1pZ2h0IGJlIG90aGVyIHRoYW4gJ3N5bWJvbCcgb3IgJ251bWJlcicgKGUuZy4gaWYgaXQncyBhIHBvbHlmaWxsKS5cblxuXG4gIGlmICh0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEUgfHwgZW5hYmxlRGVidWdUcmFjaW5nICB8fCB0eXBlID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIHx8IGVuYWJsZUxlZ2FjeUhpZGRlbiAgfHwgdHlwZSA9PT0gUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgfHwgZW5hYmxlU2NvcGVBUEkgIHx8IGVuYWJsZUNhY2hlRWxlbWVudCAgfHwgZW5hYmxlVHJhbnNpdGlvblRyYWNpbmcgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9QUk9WSURFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IC8vIFRoaXMgbmVlZHMgdG8gaW5jbHVkZSBhbGwgcG9zc2libGUgbW9kdWxlIHJlZmVyZW5jZSBvYmplY3RcbiAgICAvLyB0eXBlcyBzdXBwb3J0ZWQgYnkgYW55IEZsaWdodCBjb25maWd1cmF0aW9uIGFueXdoZXJlIHNpbmNlXG4gICAgLy8gd2UgZG9uJ3Qga25vdyB3aGljaCBGbGlnaHQgYnVpbGQgdGhpcyB3aWxsIGVuZCB1cCBiZWluZyB1c2VkXG4gICAgLy8gd2l0aC5cbiAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NT0RVTEVfUkVGRVJFTkNFIHx8IHR5cGUuZ2V0TW9kdWxlSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBtZW1vKHR5cGUsIGNvbXBhcmUpIHtcbiAge1xuICAgIGlmICghaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpKSB7XG4gICAgICBlcnJvcignbWVtbzogVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb21wb25lbnQuIEluc3RlYWQgJyArICdyZWNlaXZlZDogJXMnLCB0eXBlID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBlbGVtZW50VHlwZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfTUVNT19UWVBFLFxuICAgIHR5cGU6IHR5cGUsXG4gICAgY29tcGFyZTogY29tcGFyZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbXBhcmVcbiAgfTtcblxuICB7XG4gICAgdmFyIG93bk5hbWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnRUeXBlLCAnZGlzcGxheU5hbWUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gb3duTmFtZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIG93bk5hbWUgPSBuYW1lOyAvLyBUaGUgaW5uZXIgY29tcG9uZW50IHNob3VsZG4ndCBpbmhlcml0IHRoaXMgZGlzcGxheSBuYW1lIGluIG1vc3QgY2FzZXMsXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlIGNvbXBvbmVudCBtYXkgYmUgdXNlZCBlbHNld2hlcmUuXG4gICAgICAgIC8vIEJ1dCBpdCdzIG5pY2UgZm9yIGFub255bW91cyBmdW5jdGlvbnMgdG8gaW5oZXJpdCB0aGUgbmFtZSxcbiAgICAgICAgLy8gc28gdGhhdCBvdXIgY29tcG9uZW50LXN0YWNrIGdlbmVyYXRpb24gbG9naWMgd2lsbCBkaXNwbGF5IHRoZWlyIGZyYW1lcy5cbiAgICAgICAgLy8gQW4gYW5vbnltb3VzIGZ1bmN0aW9uIGdlbmVyYWxseSBzdWdnZXN0cyBhIHBhdHRlcm4gbGlrZTpcbiAgICAgICAgLy8gICBSZWFjdC5tZW1vKChwcm9wcykgPT4gey4uLn0pO1xuICAgICAgICAvLyBUaGlzIGtpbmQgb2YgaW5uZXIgZnVuY3Rpb24gaXMgbm90IHVzZWQgZWxzZXdoZXJlIHNvIHRoZSBzaWRlIGVmZmVjdCBpcyBva2F5LlxuXG4gICAgICAgIGlmICghdHlwZS5uYW1lICYmICF0eXBlLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgdHlwZS5kaXNwbGF5TmFtZSA9IG5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50VHlwZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURpc3BhdGNoZXIoKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50O1xuXG4gIHtcbiAgICBpZiAoZGlzcGF0Y2hlciA9PT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ0ludmFsaWQgaG9vayBjYWxsLiBIb29rcyBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIG9mIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gY29tcG9uZW50LiBUaGlzIGNvdWxkIGhhcHBlbiBmb3InICsgJyBvbmUgb2YgdGhlIGZvbGxvd2luZyByZWFzb25zOlxcbicgKyAnMS4gWW91IG1pZ2h0IGhhdmUgbWlzbWF0Y2hpbmcgdmVyc2lvbnMgb2YgUmVhY3QgYW5kIHRoZSByZW5kZXJlciAoc3VjaCBhcyBSZWFjdCBET00pXFxuJyArICcyLiBZb3UgbWlnaHQgYmUgYnJlYWtpbmcgdGhlIFJ1bGVzIG9mIEhvb2tzXFxuJyArICczLiBZb3UgbWlnaHQgaGF2ZSBtb3JlIHRoYW4gb25lIGNvcHkgb2YgUmVhY3QgaW4gdGhlIHNhbWUgYXBwXFxuJyArICdTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL2ludmFsaWQtaG9vay1jYWxsIGZvciB0aXBzIGFib3V0IGhvdyB0byBkZWJ1ZyBhbmQgZml4IHRoaXMgcHJvYmxlbS4nKTtcbiAgICB9XG4gIH0gLy8gV2lsbCByZXN1bHQgaW4gYSBudWxsIGFjY2VzcyBlcnJvciBpZiBhY2Nlc3NlZCBvdXRzaWRlIHJlbmRlciBwaGFzZS4gV2VcbiAgLy8gaW50ZW50aW9uYWxseSBkb24ndCB0aHJvdyBvdXIgb3duIGVycm9yIGJlY2F1c2UgdGhpcyBpcyBpbiBhIGhvdCBwYXRoLlxuICAvLyBBbHNvIGhlbHBzIGVuc3VyZSB0aGlzIGlzIGlubGluZWQuXG5cblxuICByZXR1cm4gZGlzcGF0Y2hlcjtcbn1cbmZ1bmN0aW9uIHVzZUNvbnRleHQoQ29udGV4dCkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG5cbiAge1xuICAgIC8vIFRPRE86IGFkZCBhIG1vcmUgZ2VuZXJpYyB3YXJuaW5nIGZvciBpbnZhbGlkIHZhbHVlcy5cbiAgICBpZiAoQ29udGV4dC5fY29udGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgcmVhbENvbnRleHQgPSBDb250ZXh0Ll9jb250ZXh0OyAvLyBEb24ndCBkZWR1cGxpY2F0ZSBiZWNhdXNlIHRoaXMgbGVnaXRpbWF0ZWx5IGNhdXNlcyBidWdzXG4gICAgICAvLyBhbmQgbm9ib2R5IHNob3VsZCBiZSB1c2luZyB0aGlzIGluIGV4aXN0aW5nIGNvZGUuXG5cbiAgICAgIGlmIChyZWFsQ29udGV4dC5Db25zdW1lciA9PT0gQ29udGV4dCkge1xuICAgICAgICBlcnJvcignQ2FsbGluZyB1c2VDb250ZXh0KENvbnRleHQuQ29uc3VtZXIpIGlzIG5vdCBzdXBwb3J0ZWQsIG1heSBjYXVzZSBidWdzLCBhbmQgd2lsbCBiZSAnICsgJ3JlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gRGlkIHlvdSBtZWFuIHRvIGNhbGwgdXNlQ29udGV4dChDb250ZXh0KSBpbnN0ZWFkPycpO1xuICAgICAgfSBlbHNlIGlmIChyZWFsQ29udGV4dC5Qcm92aWRlciA9PT0gQ29udGV4dCkge1xuICAgICAgICBlcnJvcignQ2FsbGluZyB1c2VDb250ZXh0KENvbnRleHQuUHJvdmlkZXIpIGlzIG5vdCBzdXBwb3J0ZWQuICcgKyAnRGlkIHlvdSBtZWFuIHRvIGNhbGwgdXNlQ29udGV4dChDb250ZXh0KSBpbnN0ZWFkPycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUNvbnRleHQoQ29udGV4dCk7XG59XG5mdW5jdGlvbiB1c2VTdGF0ZShpbml0aWFsU3RhdGUpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VTdGF0ZShpbml0aWFsU3RhdGUpO1xufVxuZnVuY3Rpb24gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsQXJnLCBpbml0KSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsQXJnLCBpbml0KTtcbn1cbmZ1bmN0aW9uIHVzZVJlZihpbml0aWFsVmFsdWUpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VSZWYoaW5pdGlhbFZhbHVlKTtcbn1cbmZ1bmN0aW9uIHVzZUVmZmVjdChjcmVhdGUsIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VFZmZlY3QoY3JlYXRlLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIHVzZUluc2VydGlvbkVmZmVjdChjcmVhdGUsIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VJbnNlcnRpb25FZmZlY3QoY3JlYXRlLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIHVzZUxheW91dEVmZmVjdChjcmVhdGUsIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VMYXlvdXRFZmZlY3QoY3JlYXRlLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIHVzZUNhbGxiYWNrKGNhbGxiYWNrLCBkZXBzKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlQ2FsbGJhY2soY2FsbGJhY2ssIGRlcHMpO1xufVxuZnVuY3Rpb24gdXNlTWVtbyhjcmVhdGUsIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VNZW1vKGNyZWF0ZSwgZGVwcyk7XG59XG5mdW5jdGlvbiB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgY3JlYXRlLCBkZXBzKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGNyZWF0ZSwgZGVwcyk7XG59XG5mdW5jdGlvbiB1c2VEZWJ1Z1ZhbHVlKHZhbHVlLCBmb3JtYXR0ZXJGbikge1xuICB7XG4gICAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICAgIHJldHVybiBkaXNwYXRjaGVyLnVzZURlYnVnVmFsdWUodmFsdWUsIGZvcm1hdHRlckZuKTtcbiAgfVxufVxuZnVuY3Rpb24gdXNlVHJhbnNpdGlvbigpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VUcmFuc2l0aW9uKCk7XG59XG5mdW5jdGlvbiB1c2VEZWZlcnJlZFZhbHVlKHZhbHVlKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlRGVmZXJyZWRWYWx1ZSh2YWx1ZSk7XG59XG5mdW5jdGlvbiB1c2VJZCgpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VJZCgpO1xufVxuZnVuY3Rpb24gdXNlU3luY0V4dGVybmFsU3RvcmUoc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCwgZ2V0U2VydmVyU25hcHNob3QpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VTeW5jRXh0ZXJuYWxTdG9yZShzdWJzY3JpYmUsIGdldFNuYXBzaG90LCBnZXRTZXJ2ZXJTbmFwc2hvdCk7XG59XG5cbi8vIEhlbHBlcnMgdG8gcGF0Y2ggY29uc29sZS5sb2dzIHRvIGF2b2lkIGxvZ2dpbmcgZHVyaW5nIHNpZGUtZWZmZWN0IGZyZWVcbi8vIHJlcGxheWluZyBvbiByZW5kZXIgZnVuY3Rpb24uIFRoaXMgY3VycmVudGx5IG9ubHkgcGF0Y2hlcyB0aGUgb2JqZWN0XG4vLyBsYXppbHkgd2hpY2ggd29uJ3QgY292ZXIgaWYgdGhlIGxvZyBmdW5jdGlvbiB3YXMgZXh0cmFjdGVkIGVhZ2VybHkuXG4vLyBXZSBjb3VsZCBhbHNvIGVhZ2VybHkgcGF0Y2ggdGhlIG1ldGhvZC5cbnZhciBkaXNhYmxlZERlcHRoID0gMDtcbnZhciBwcmV2TG9nO1xudmFyIHByZXZJbmZvO1xudmFyIHByZXZXYXJuO1xudmFyIHByZXZFcnJvcjtcbnZhciBwcmV2R3JvdXA7XG52YXIgcHJldkdyb3VwQ29sbGFwc2VkO1xudmFyIHByZXZHcm91cEVuZDtcblxuZnVuY3Rpb24gZGlzYWJsZWRMb2coKSB7fVxuXG5kaXNhYmxlZExvZy5fX3JlYWN0RGlzYWJsZWRMb2cgPSB0cnVlO1xuZnVuY3Rpb24gZGlzYWJsZUxvZ3MoKSB7XG4gIHtcbiAgICBpZiAoZGlzYWJsZWREZXB0aCA9PT0gMCkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgICBwcmV2TG9nID0gY29uc29sZS5sb2c7XG4gICAgICBwcmV2SW5mbyA9IGNvbnNvbGUuaW5mbztcbiAgICAgIHByZXZXYXJuID0gY29uc29sZS53YXJuO1xuICAgICAgcHJldkVycm9yID0gY29uc29sZS5lcnJvcjtcbiAgICAgIHByZXZHcm91cCA9IGNvbnNvbGUuZ3JvdXA7XG4gICAgICBwcmV2R3JvdXBDb2xsYXBzZWQgPSBjb25zb2xlLmdyb3VwQ29sbGFwc2VkO1xuICAgICAgcHJldkdyb3VwRW5kID0gY29uc29sZS5ncm91cEVuZDsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xOTA5OVxuXG4gICAgICB2YXIgcHJvcHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGRpc2FibGVkTG9nLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZSBGbG93IHRoaW5rcyBjb25zb2xlIGlzIGltbXV0YWJsZS5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICBpbmZvOiBwcm9wcyxcbiAgICAgICAgbG9nOiBwcm9wcyxcbiAgICAgICAgd2FybjogcHJvcHMsXG4gICAgICAgIGVycm9yOiBwcm9wcyxcbiAgICAgICAgZ3JvdXA6IHByb3BzLFxuICAgICAgICBncm91cENvbGxhcHNlZDogcHJvcHMsXG4gICAgICAgIGdyb3VwRW5kOiBwcm9wc1xuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGRpc2FibGVkRGVwdGgrKztcbiAgfVxufVxuZnVuY3Rpb24gcmVlbmFibGVMb2dzKCkge1xuICB7XG4gICAgZGlzYWJsZWREZXB0aC0tO1xuXG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2TG9nXG4gICAgICAgIH0pLFxuICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZJbmZvXG4gICAgICAgIH0pLFxuICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZXYXJuXG4gICAgICAgIH0pLFxuICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2RXJyb3JcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwQ29sbGFwc2VkXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBFbmRcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA8IDApIHtcbiAgICAgIGVycm9yKCdkaXNhYmxlZERlcHRoIGZlbGwgYmVsb3cgemVyby4gJyArICdUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudERpc3BhdGNoZXI7XG52YXIgcHJlZml4O1xuZnVuY3Rpb24gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lckZuKSB7XG4gIHtcbiAgICBpZiAocHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEV4dHJhY3QgdGhlIFZNIHNwZWNpZmljIHByZWZpeCB1c2VkIGJ5IGVhY2ggbGluZS5cbiAgICAgIHRyeSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHguc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7XG4gICAgICAgIHByZWZpeCA9IG1hdGNoICYmIG1hdGNoWzFdIHx8ICcnO1xuICAgICAgfVxuICAgIH0gLy8gV2UgdXNlIHRoZSBwcmVmaXggdG8gZW5zdXJlIG91ciBzdGFja3MgbGluZSB1cCB3aXRoIG5hdGl2ZSBzdGFjayBmcmFtZXMuXG5cblxuICAgIHJldHVybiAnXFxuJyArIHByZWZpeCArIG5hbWU7XG4gIH1cbn1cbnZhciByZWVudHJ5ID0gZmFsc2U7XG52YXIgY29tcG9uZW50RnJhbWVDYWNoZTtcblxue1xuICB2YXIgUG9zc2libHlXZWFrTWFwID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgPyBXZWFrTWFwIDogTWFwO1xuICBjb21wb25lbnRGcmFtZUNhY2hlID0gbmV3IFBvc3NpYmx5V2Vha01hcCgpO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBjb25zdHJ1Y3QpIHtcbiAgLy8gSWYgc29tZXRoaW5nIGFza2VkIGZvciBhIHN0YWNrIGluc2lkZSBhIGZha2UgcmVuZGVyLCBpdCBzaG91bGQgZ2V0IGlnbm9yZWQuXG4gIGlmICggIWZuIHx8IHJlZW50cnkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB7XG4gICAgdmFyIGZyYW1lID0gY29tcG9uZW50RnJhbWVDYWNoZS5nZXQoZm4pO1xuXG4gICAgaWYgKGZyYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmcmFtZTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29udHJvbDtcbiAgcmVlbnRyeSA9IHRydWU7XG4gIHZhciBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7IC8vICRGbG93Rml4TWUgSXQgZG9lcyBhY2NlcHQgdW5kZWZpbmVkLlxuXG4gIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gdW5kZWZpbmVkO1xuICB2YXIgcHJldmlvdXNEaXNwYXRjaGVyO1xuXG4gIHtcbiAgICBwcmV2aW91c0Rpc3BhdGNoZXIgPSBSZWFjdEN1cnJlbnREaXNwYXRjaGVyJDEuY3VycmVudDsgLy8gU2V0IHRoZSBkaXNwYXRjaGVyIGluIERFViBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgY2FsbCBpbiB0aGUgcmVuZGVyIGZ1bmN0aW9uXG4gICAgLy8gZm9yIHdhcm5pbmdzLlxuXG4gICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciQxLmN1cnJlbnQgPSBudWxsO1xuICAgIGRpc2FibGVMb2dzKCk7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIFRoaXMgc2hvdWxkIHRocm93LlxuICAgIGlmIChjb25zdHJ1Y3QpIHtcbiAgICAgIC8vIFNvbWV0aGluZyBzaG91bGQgYmUgc2V0dGluZyB0aGUgcHJvcHMgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgdmFyIEZha2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lXG5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZha2UucHJvdG90eXBlLCAncHJvcHMnLCB7XG4gICAgICAgIHNldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIFdlIHVzZSBhIHRocm93aW5nIHNldHRlciBpbnN0ZWFkIG9mIGZyb3plbiBvciBub24td3JpdGFibGUgcHJvcHNcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQgd29uJ3QgdGhyb3cgaW4gYSBub24tc3RyaWN0IG1vZGUgZnVuY3Rpb24uXG4gICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgJiYgUmVmbGVjdC5jb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gV2UgY29uc3RydWN0IGEgZGlmZmVyZW50IGNvbnRyb2wgZm9yIHRoaXMgY2FzZSB0byBpbmNsdWRlIGFueSBleHRyYVxuICAgICAgICAvLyBmcmFtZXMgYWRkZWQgYnkgdGhlIGNvbnN0cnVjdCBjYWxsLlxuICAgICAgICB0cnkge1xuICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgICB9XG5cbiAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZm4sIFtdLCBGYWtlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgRmFrZS5jYWxsKCk7XG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZuLmNhbGwoRmFrZS5wcm90b3R5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICBjb250cm9sID0geDtcbiAgICAgIH1cblxuICAgICAgZm4oKTtcbiAgICB9XG4gIH0gY2F0Y2ggKHNhbXBsZSkge1xuICAgIC8vIFRoaXMgaXMgaW5saW5lZCBtYW51YWxseSBiZWNhdXNlIGNsb3N1cmUgZG9lc24ndCBkbyBpdCBmb3IgdXMuXG4gICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIHR5cGVvZiBzYW1wbGUuc3RhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBUaGlzIGV4dHJhY3RzIHRoZSBmaXJzdCBmcmFtZSBmcm9tIHRoZSBzYW1wbGUgdGhhdCBpc24ndCBhbHNvIGluIHRoZSBjb250cm9sLlxuICAgICAgLy8gU2tpcHBpbmcgb25lIGZyYW1lIHRoYXQgd2UgYXNzdW1lIGlzIHRoZSBmcmFtZSB0aGF0IGNhbGxzIHRoZSB0d28uXG4gICAgICB2YXIgc2FtcGxlTGluZXMgPSBzYW1wbGUuc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIGNvbnRyb2xMaW5lcyA9IGNvbnRyb2wuc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIHMgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgdmFyIGMgPSBjb250cm9sTGluZXMubGVuZ3RoIC0gMTtcblxuICAgICAgd2hpbGUgKHMgPj0gMSAmJiBjID49IDAgJiYgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAvLyBXZSBleHBlY3QgYXQgbGVhc3Qgb25lIHN0YWNrIGZyYW1lIHRvIGJlIHNoYXJlZC5cbiAgICAgICAgLy8gVHlwaWNhbGx5IHRoaXMgd2lsbCBiZSB0aGUgcm9vdCBtb3N0IG9uZS4gSG93ZXZlciwgc3RhY2sgZnJhbWVzIG1heSBiZVxuICAgICAgICAvLyBjdXQgb2ZmIGR1ZSB0byBtYXhpbXVtIHN0YWNrIGxpbWl0cy4gSW4gdGhpcyBjYXNlLCBvbmUgbWF5YmUgY3V0IG9mZlxuICAgICAgICAvLyBlYXJsaWVyIHRoYW4gdGhlIG90aGVyLiBXZSBhc3N1bWUgdGhhdCB0aGUgc2FtcGxlIGlzIGxvbmdlciBvciB0aGUgc2FtZVxuICAgICAgICAvLyBhbmQgdGhlcmUgZm9yIGN1dCBvZmYgZWFybGllci4gU28gd2Ugc2hvdWxkIGZpbmQgdGhlIHJvb3QgbW9zdCBmcmFtZSBpblxuICAgICAgICAvLyB0aGUgc2FtcGxlIHNvbWV3aGVyZSBpbiB0aGUgY29udHJvbC5cbiAgICAgICAgYy0tO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgcyA+PSAxICYmIGMgPj0gMDsgcy0tLCBjLS0pIHtcbiAgICAgICAgLy8gTmV4dCB3ZSBmaW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSB3aGljaCBzaG91bGQgYmUgdGhlXG4gICAgICAgIC8vIGZyYW1lIHRoYXQgY2FsbGVkIG91ciBzYW1wbGUgZnVuY3Rpb24gYW5kIHRoZSBjb250cm9sLlxuICAgICAgICBpZiAoc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgIC8vIEluIFY4LCB0aGUgZmlyc3QgbGluZSBpcyBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGJ1dCBvdGhlciBWTXMgZG9uJ3QuXG4gICAgICAgICAgLy8gSWYgd2UncmUgYWJvdXQgdG8gcmV0dXJuIHRoZSBmaXJzdCBsaW5lLCBhbmQgdGhlIGNvbnRyb2wgaXMgYWxzbyBvbiB0aGUgc2FtZVxuICAgICAgICAgIC8vIGxpbmUsIHRoYXQncyBhIHByZXR0eSBnb29kIGluZGljYXRvciB0aGF0IG91ciBzYW1wbGUgdGhyZXcgYXQgc2FtZSBsaW5lIGFzXG4gICAgICAgICAgLy8gdGhlIGNvbnRyb2wuIEkuZS4gYmVmb3JlIHdlIGVudGVyZWQgdGhlIHNhbXBsZSBmcmFtZS4gU28gd2UgaWdub3JlIHRoaXMgcmVzdWx0LlxuICAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB5b3UgcGFzc2VkIGEgY2xhc3MgdG8gZnVuY3Rpb24gY29tcG9uZW50LCBvciBub24tZnVuY3Rpb24uXG4gICAgICAgICAgaWYgKHMgIT09IDEgfHwgYyAhPT0gMSkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICBzLS07XG4gICAgICAgICAgICAgIGMtLTsgLy8gV2UgbWF5IHN0aWxsIGhhdmUgc2ltaWxhciBpbnRlcm1lZGlhdGUgZnJhbWVzIGZyb20gdGhlIGNvbnN0cnVjdCBjYWxsLlxuICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSBzaG91bGQgYmUgb3VyIG1hdGNoIHRob3VnaC5cblxuICAgICAgICAgICAgICBpZiAoYyA8IDAgfHwgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgICAgICAgIC8vIFY4IGFkZHMgYSBcIm5ld1wiIHByZWZpeCBmb3IgbmF0aXZlIGNsYXNzZXMuIExldCdzIHJlbW92ZSBpdCB0byBtYWtlIGl0IHByZXR0aWVyLlxuICAgICAgICAgICAgICAgIHZhciBfZnJhbWUgPSAnXFxuJyArIHNhbXBsZUxpbmVzW3NdLnJlcGxhY2UoJyBhdCBuZXcgJywgJyBhdCAnKTsgLy8gSWYgb3VyIGNvbXBvbmVudCBmcmFtZSBpcyBsYWJlbGVkIFwiPGFub255bW91cz5cIlxuICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBoYXZlIGEgdXNlci1wcm92aWRlZCBcImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAvLyBzcGxpY2UgaXQgaW4gdG8gbWFrZSB0aGUgc3RhY2sgbW9yZSByZWFkYWJsZS5cblxuXG4gICAgICAgICAgICAgICAgaWYgKGZuLmRpc3BsYXlOYW1lICYmIF9mcmFtZS5pbmNsdWRlcygnPGFub255bW91cz4nKSkge1xuICAgICAgICAgICAgICAgICAgX2ZyYW1lID0gX2ZyYW1lLnJlcGxhY2UoJzxhbm9ueW1vdXM+JywgZm4uZGlzcGxheU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50RnJhbWVDYWNoZS5zZXQoZm4sIF9mcmFtZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSAvLyBSZXR1cm4gdGhlIGxpbmUgd2UgZm91bmQuXG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBfZnJhbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHMgPj0gMSAmJiBjID49IDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHJlZW50cnkgPSBmYWxzZTtcblxuICAgIHtcbiAgICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMS5jdXJyZW50ID0gcHJldmlvdXNEaXNwYXRjaGVyO1xuICAgICAgcmVlbmFibGVMb2dzKCk7XG4gICAgfVxuXG4gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlO1xuICB9IC8vIEZhbGxiYWNrIHRvIGp1c3QgdXNpbmcgdGhlIG5hbWUgaWYgd2UgY291bGRuJ3QgbWFrZSBpdCB0aHJvdy5cblxuXG4gIHZhciBuYW1lID0gZm4gPyBmbi5kaXNwbGF5TmFtZSB8fCBmbi5uYW1lIDogJyc7XG4gIHZhciBzeW50aGV0aWNGcmFtZSA9IG5hbWUgPyBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSA6ICcnO1xuXG4gIHtcbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc3ludGhldGljRnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW50aGV0aWNGcmFtZTtcbn1cbmZ1bmN0aW9uIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShmbiwgc291cmNlLCBvd25lckZuKSB7XG4gIHtcbiAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgZmFsc2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHtcbiAgdmFyIHByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG4gIHJldHVybiAhIShwcm90b3R5cGUgJiYgcHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZSwgc291cmNlLCBvd25lckZuKSB7XG5cbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHtcbiAgICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsIHNob3VsZENvbnN0cnVjdCh0eXBlKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSh0eXBlKTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2UnKTtcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZUxpc3QnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZSh0eXBlLnJlbmRlcik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAvLyBNZW1vIG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUudHlwZSwgc291cmNlLCBvd25lckZuKTtcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBMYXp5IG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihpbml0KHBheWxvYWQpLCBzb3VyY2UsIG93bmVyRm4pO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KSB7XG4gIHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxLnNldEV4dHJhU3RhY2tGcmFtZShzdGFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5zZXRFeHRyYVN0YWNrRnJhbWUobnVsbCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcFR5cGVzKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZWxlbWVudCkge1xuICB7XG4gICAgLy8gJEZsb3dGaXhNZSBUaGlzIGlzIG9rYXkgYnV0IEZsb3cgZG9lc24ndCBrbm93IGl0LlxuICAgIHZhciBoYXMgPSBGdW5jdGlvbi5jYWxsLmJpbmQoaGFzT3duUHJvcGVydHkpO1xuXG4gICAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xuICAgICAgaWYgKGhhcyh0eXBlU3BlY3MsIHR5cGVTcGVjTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yJDEgPSB2b2lkIDA7IC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuICAgICAgICAgIGlmICh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9wcm9kLWVycm9yLWNvZGVzXG4gICAgICAgICAgICB2YXIgZXJyID0gRXJyb3IoKGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJykgKyAnOiAnICsgbG9jYXRpb24gKyAnIHR5cGUgYCcgKyB0eXBlU3BlY05hbWUgKyAnYCBpcyBpbnZhbGlkOyAnICsgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICsgJ2AuJyArICdUaGlzIG9mdGVuIGhhcHBlbnMgYmVjYXVzZSBvZiB0eXBvcyBzdWNoIGFzIGBQcm9wVHlwZXMuZnVuY3Rpb25gIGluc3RlYWQgb2YgYFByb3BUeXBlcy5mdW5jYC4nKTtcbiAgICAgICAgICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVycm9yJDEgPSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIG51bGwsICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCcpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIGVycm9yJDEgPSBleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciQxICYmICEoZXJyb3IkMSBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgICAgICAgZXJyb3IoJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMnICsgJyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IkMSk7XG5cbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvciQxLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yJDEubWVzc2FnZV0gPSB0cnVlO1xuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgICAgICAgZXJyb3IoJ0ZhaWxlZCAlcyB0eXBlOiAlcycsIGxvY2F0aW9uLCBlcnJvciQxLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KSB7XG4gIHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xuICAgICAgc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd247XG5cbntcbiAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkge1xuICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSk7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICdcXG5cXG5DaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW0oc291cmNlKSB7XG4gIGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBmaWxlTmFtZSA9IHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJyk7XG4gICAgdmFyIGxpbmVOdW1iZXIgPSBzb3VyY2UubGluZU51bWJlcjtcbiAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHlvdXIgY29kZSBhdCAnICsgZmlsZU5hbWUgKyAnOicgKyBsaW5lTnVtYmVyICsgJy4nO1xuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bUZvclByb3BzKGVsZW1lbnRQcm9wcykge1xuICBpZiAoZWxlbWVudFByb3BzICE9PSBudWxsICYmIGVsZW1lbnRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKGVsZW1lbnRQcm9wcy5fX3NvdXJjZSk7XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3JcbiAqIG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdHJhY2sgb2YgY2hpbGRyZW4gYmV0d2VlblxuICogdXBkYXRlcy5cbiAqL1xuXG5cbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XG4gIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG5cbiAgaWYgKCFpbmZvKSB7XG4gICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7XG5cbiAgICBpZiAocGFyZW50TmFtZSkge1xuICAgICAgaW5mbyA9IFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgKyBwYXJlbnROYW1lICsgXCI+LlwiO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmZvO1xufVxuLyoqXG4gKiBXYXJuIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQgdG8gaXQuXG4gKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJpbmsgb3IgYmVcbiAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0b1xuICogaGF2ZSBhIFwia2V5XCIgcHJvcGVydHkgYXNzaWduZWQgdG8gaXQuIEVycm9yIHN0YXR1c2VzIGFyZSBjYWNoZWQgc28gYSB3YXJuaW5nXG4gKiB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBlbGVtZW50J3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpO1xuXG4gIGlmIChvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10gPSB0cnVlOyAvLyBVc3VhbGx5IHRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBvZmZlbmRlciwgYnV0IGlmIGl0IGFjY2VwdHMgY2hpbGRyZW4gYXMgYVxuICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXG4gIC8vIGFzc2lnbmluZyBpdCBhIGtleS5cblxuICB2YXIgY2hpbGRPd25lciA9ICcnO1xuXG4gIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXG4gICAgY2hpbGRPd25lciA9IFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGVsZW1lbnQuX293bmVyLnR5cGUpICsgXCIuXCI7XG4gIH1cblxuICB7XG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KTtcblxuICAgIGVycm9yKCdFYWNoIGNoaWxkIGluIGEgbGlzdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiIHByb3AuJyArICclcyVzIFNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8sIGNoaWxkT3duZXIpO1xuXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgfVxufVxuLyoqXG4gKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24sIGluIGFuXG4gKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVyYWxcbiAqIHdpdGggdmFsaWQga2V5IHByb3BlcnR5LlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUgU3RhdGljYWxseSBwYXNzZWQgY2hpbGQgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuXG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XG4gIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaXNBcnJheShub2RlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoaWxkID0gbm9kZVtpXTtcblxuICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KGNoaWxkLCBwYXJlbnRUeXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICAvLyBUaGlzIGVsZW1lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9uLlxuICAgIGlmIChub2RlLl9zdG9yZSkge1xuICAgICAgbm9kZS5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAobm9kZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTtcblxuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gRW50cnkgaXRlcmF0b3JzIHVzZWQgdG8gcHJvdmlkZSBpbXBsaWNpdCBrZXlzLFxuICAgICAgLy8gYnV0IG5vdyB3ZSBwcmludCBhIHNlcGFyYXRlIHdhcm5pbmcgZm9yIHRoZW0gbGF0ZXIuXG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XG4gICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChub2RlKTtcbiAgICAgICAgdmFyIHN0ZXA7XG5cbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7XG4gIHtcbiAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtcblxuICAgIGlmICh0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcHJvcFR5cGVzO1xuXG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCAvLyBOb3RlOiBNZW1vIG9ubHkgY2hlY2tzIG91dGVyIHByb3BzIGhlcmUuXG4gICAgLy8gSW5uZXIgcHJvcHMgYXJlIGNoZWNrZWQgaW4gdGhlIHJlY29uY2lsZXIuXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFKSkge1xuICAgICAgcHJvcFR5cGVzID0gdHlwZS5wcm9wVHlwZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcFR5cGVzKSB7XG4gICAgICAvLyBJbnRlbnRpb25hbGx5IGluc2lkZSB0byBhdm9pZCB0cmlnZ2VyaW5nIGxhenkgaW5pdGlhbGl6ZXJzOlxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSk7XG4gICAgICBjaGVja1Byb3BUeXBlcyhwcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsICdwcm9wJywgbmFtZSwgZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmICh0eXBlLlByb3BUeXBlcyAhPT0gdW5kZWZpbmVkICYmICFwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93bikge1xuICAgICAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSB0cnVlOyAvLyBJbnRlbnRpb25hbGx5IGluc2lkZSB0byBhdm9pZCB0cmlnZ2VyaW5nIGxhenkgaW5pdGlhbGl6ZXJzOlxuXG4gICAgICB2YXIgX25hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSk7XG5cbiAgICAgIGVycm9yKCdDb21wb25lbnQgJXMgZGVjbGFyZWQgYFByb3BUeXBlc2AgaW5zdGVhZCBvZiBgcHJvcFR5cGVzYC4gRGlkIHlvdSBtaXNzcGVsbCB0aGUgcHJvcGVydHkgYXNzaWdubWVudD8nLCBfbmFtZSB8fCAnVW5rbm93bicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdHlwZS5nZXREZWZhdWx0UHJvcHMgPT09ICdmdW5jdGlvbicgJiYgIXR5cGUuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkKSB7XG4gICAgICBlcnJvcignZ2V0RGVmYXVsdFByb3BzIGlzIG9ubHkgdXNlZCBvbiBjbGFzc2ljIFJlYWN0LmNyZWF0ZUNsYXNzICcgKyAnZGVmaW5pdGlvbnMuIFVzZSBhIHN0YXRpYyBwcm9wZXJ0eSBuYW1lZCBgZGVmYXVsdFByb3BzYCBpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBHaXZlbiBhIGZyYWdtZW50LCB2YWxpZGF0ZSB0aGF0IGl0IGNhbiBvbmx5IGJlIHByb3ZpZGVkIHdpdGggZnJhZ21lbnQgcHJvcHNcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBmcmFnbWVudFxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVGcmFnbWVudFByb3BzKGZyYWdtZW50KSB7XG4gIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZyYWdtZW50LnByb3BzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmIChrZXkgIT09ICdjaGlsZHJlbicgJiYga2V5ICE9PSAna2V5Jykge1xuICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGZyYWdtZW50KTtcblxuICAgICAgICBlcnJvcignSW52YWxpZCBwcm9wIGAlc2Agc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4gJyArICdSZWFjdC5GcmFnbWVudCBjYW4gb25seSBoYXZlIGBrZXlgIGFuZCBgY2hpbGRyZW5gIHByb3BzLicsIGtleSk7XG5cbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYWdtZW50LnJlZiAhPT0gbnVsbCkge1xuICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShmcmFnbWVudCk7XG5cbiAgICAgIGVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSBgcmVmYCBzdXBwbGllZCB0byBgUmVhY3QuRnJhZ21lbnRgLicpO1xuXG4gICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudFdpdGhWYWxpZGF0aW9uKHR5cGUsIHByb3BzLCBjaGlsZHJlbikge1xuICB2YXIgdmFsaWRUeXBlID0gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpOyAvLyBXZSB3YXJuIGluIHRoaXMgY2FzZSBidXQgZG9uJ3QgdGhyb3cuIFdlIGV4cGVjdCB0aGUgZWxlbWVudCBjcmVhdGlvbiB0b1xuICAvLyBzdWNjZWVkIGFuZCB0aGVyZSB3aWxsIGxpa2VseSBiZSBlcnJvcnMgaW4gcmVuZGVyLlxuXG4gIGlmICghdmFsaWRUeXBlKSB7XG4gICAgdmFyIGluZm8gPSAnJztcblxuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBpbmZvICs9ICcgWW91IGxpa2VseSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgJyArIFwiaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwiO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VJbmZvID0gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW1Gb3JQcm9wcyhwcm9wcyk7XG5cbiAgICBpZiAoc291cmNlSW5mbykge1xuICAgICAgaW5mbyArPSBzb3VyY2VJbmZvO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmZvICs9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuICAgIH1cblxuICAgIHZhciB0eXBlU3RyaW5nO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSAnbnVsbCc7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHR5cGUpKSB7XG4gICAgICB0eXBlU3RyaW5nID0gJ2FycmF5JztcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSBcIjxcIiArIChnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnVW5rbm93bicpICsgXCIgLz5cIjtcbiAgICAgIGluZm8gPSAnIERpZCB5b3UgYWNjaWRlbnRhbGx5IGV4cG9ydCBhIEpTWCBsaXRlcmFsIGluc3RlYWQgb2YgYSBjb21wb25lbnQ/JztcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZVN0cmluZyA9IHR5cGVvZiB0eXBlO1xuICAgIH1cblxuICAgIHtcbiAgICAgIGVycm9yKCdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIGlzIGludmFsaWQgLS0gZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciAnICsgJ2J1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgJyArICdjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIHR5cGVTdHJpbmcsIGluZm8pO1xuICAgIH1cbiAgfVxuXG4gIHZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBUaGUgcmVzdWx0IGNhbiBiZSBudWxsaXNoIGlmIGEgbW9jayBvciBhIGN1c3RvbSBmdW5jdGlvbiBpcyB1c2VkLlxuICAvLyBUT0RPOiBEcm9wIHRoaXMgd2hlbiB0aGVzZSBhcmUgbm8gbG9uZ2VyIGFsbG93ZWQgYXMgdGhlIHR5cGUgYXJndW1lbnQuXG5cbiAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9IC8vIFNraXAga2V5IHdhcm5pbmcgaWYgdGhlIHR5cGUgaXNuJ3QgdmFsaWQgc2luY2Ugb3VyIGtleSB2YWxpZGF0aW9uIGxvZ2ljXG4gIC8vIGRvZXNuJ3QgZXhwZWN0IGEgbm9uLXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy5cbiAgLy8gV2UgZG9uJ3Qgd2FudCBleGNlcHRpb24gYmVoYXZpb3IgdG8gZGlmZmVyIGJldHdlZW4gZGV2IGFuZCBwcm9kLlxuICAvLyAoUmVuZGVyaW5nIHdpbGwgdGhyb3cgd2l0aCBhIGhlbHBmdWwgbWVzc2FnZSBhbmQgYXMgc29vbiBhcyB0aGUgdHlwZSBpc1xuICAvLyBmaXhlZCwgdGhlIGtleSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pXG5cblxuICBpZiAodmFsaWRUeXBlKSB7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGFyZ3VtZW50c1tpXSwgdHlwZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUpIHtcbiAgICB2YWxpZGF0ZUZyYWdtZW50UHJvcHMoZWxlbWVudCk7XG4gIH0gZWxzZSB7XG4gICAgdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn1cbnZhciBkaWRXYXJuQWJvdXREZXByZWNhdGVkQ3JlYXRlRmFjdG9yeSA9IGZhbHNlO1xuZnVuY3Rpb24gY3JlYXRlRmFjdG9yeVdpdGhWYWxpZGF0aW9uKHR5cGUpIHtcbiAgdmFyIHZhbGlkYXRlZEZhY3RvcnkgPSBjcmVhdGVFbGVtZW50V2l0aFZhbGlkYXRpb24uYmluZChudWxsLCB0eXBlKTtcbiAgdmFsaWRhdGVkRmFjdG9yeS50eXBlID0gdHlwZTtcblxuICB7XG4gICAgaWYgKCFkaWRXYXJuQWJvdXREZXByZWNhdGVkQ3JlYXRlRmFjdG9yeSkge1xuICAgICAgZGlkV2FybkFib3V0RGVwcmVjYXRlZENyZWF0ZUZhY3RvcnkgPSB0cnVlO1xuXG4gICAgICB3YXJuKCdSZWFjdC5jcmVhdGVGYWN0b3J5KCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcgKyAnYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgSlNYICcgKyAnb3IgdXNlIFJlYWN0LmNyZWF0ZUVsZW1lbnQoKSBkaXJlY3RseSBpbnN0ZWFkLicpO1xuICAgIH0gLy8gTGVnYWN5IGhvb2s6IHJlbW92ZSBpdFxuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsaWRhdGVkRmFjdG9yeSwgJ3R5cGUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICB3YXJuKCdGYWN0b3J5LnR5cGUgaXMgZGVwcmVjYXRlZC4gQWNjZXNzIHRoZSBjbGFzcyBkaXJlY3RseSAnICsgJ2JlZm9yZSBwYXNzaW5nIGl0IHRvIGNyZWF0ZUZhY3RvcnkuJyk7XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICd0eXBlJywge1xuICAgICAgICAgIHZhbHVlOiB0eXBlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZWRGYWN0b3J5O1xufVxuZnVuY3Rpb24gY2xvbmVFbGVtZW50V2l0aFZhbGlkYXRpb24oZWxlbWVudCwgcHJvcHMsIGNoaWxkcmVuKSB7XG4gIHZhciBuZXdFbGVtZW50ID0gY2xvbmVFbGVtZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIG5ld0VsZW1lbnQudHlwZSk7XG4gIH1cblxuICB2YWxpZGF0ZVByb3BUeXBlcyhuZXdFbGVtZW50KTtcbiAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0VHJhbnNpdGlvbihzY29wZSwgb3B0aW9ucykge1xuICB2YXIgcHJldlRyYW5zaXRpb24gPSBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZy50cmFuc2l0aW9uO1xuICBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZy50cmFuc2l0aW9uID0ge307XG4gIHZhciBjdXJyZW50VHJhbnNpdGlvbiA9IFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLnRyYW5zaXRpb247XG5cbiAge1xuICAgIFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLnRyYW5zaXRpb24uX3VwZGF0ZWRGaWJlcnMgPSBuZXcgU2V0KCk7XG4gIH1cblxuICB0cnkge1xuICAgIHNjb3BlKCk7XG4gIH0gZmluYWxseSB7XG4gICAgUmVhY3RDdXJyZW50QmF0Y2hDb25maWcudHJhbnNpdGlvbiA9IHByZXZUcmFuc2l0aW9uO1xuXG4gICAge1xuICAgICAgaWYgKHByZXZUcmFuc2l0aW9uID09PSBudWxsICYmIGN1cnJlbnRUcmFuc2l0aW9uLl91cGRhdGVkRmliZXJzKSB7XG4gICAgICAgIHZhciB1cGRhdGVkRmliZXJzQ291bnQgPSBjdXJyZW50VHJhbnNpdGlvbi5fdXBkYXRlZEZpYmVycy5zaXplO1xuXG4gICAgICAgIGlmICh1cGRhdGVkRmliZXJzQ291bnQgPiAxMCkge1xuICAgICAgICAgIHdhcm4oJ0RldGVjdGVkIGEgbGFyZ2UgbnVtYmVyIG9mIHVwZGF0ZXMgaW5zaWRlIHN0YXJ0VHJhbnNpdGlvbi4gJyArICdJZiB0aGlzIGlzIGR1ZSB0byBhIHN1YnNjcmlwdGlvbiBwbGVhc2UgcmUtd3JpdGUgaXQgdG8gdXNlIFJlYWN0IHByb3ZpZGVkIGhvb2tzLiAnICsgJ090aGVyd2lzZSBjb25jdXJyZW50IG1vZGUgZ3VhcmFudGVlcyBhcmUgb2ZmIHRoZSB0YWJsZS4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUcmFuc2l0aW9uLl91cGRhdGVkRmliZXJzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBkaWRXYXJuQWJvdXRNZXNzYWdlQ2hhbm5lbCA9IGZhbHNlO1xudmFyIGVucXVldWVUYXNrSW1wbCA9IG51bGw7XG5mdW5jdGlvbiBlbnF1ZXVlVGFzayh0YXNrKSB7XG4gIGlmIChlbnF1ZXVlVGFza0ltcGwgPT09IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgLy8gcmVhZCByZXF1aXJlIG9mZiB0aGUgbW9kdWxlIG9iamVjdCB0byBnZXQgYXJvdW5kIHRoZSBidW5kbGVycy5cbiAgICAgIC8vIHdlIGRvbid0IHdhbnQgdGhlbSB0byBkZXRlY3QgYSByZXF1aXJlIGFuZCBidW5kbGUgYSBOb2RlIHBvbHlmaWxsLlxuICAgICAgdmFyIHJlcXVpcmVTdHJpbmcgPSAoJ3JlcXVpcmUnICsgTWF0aC5yYW5kb20oKSkuc2xpY2UoMCwgNyk7XG4gICAgICB2YXIgbm9kZVJlcXVpcmUgPSBtb2R1bGUgJiYgbW9kdWxlW3JlcXVpcmVTdHJpbmddOyAvLyBhc3N1bWluZyB3ZSdyZSBpbiBub2RlLCBsZXQncyB0cnkgdG8gZ2V0IG5vZGUnc1xuICAgICAgLy8gdmVyc2lvbiBvZiBzZXRJbW1lZGlhdGUsIGJ5cGFzc2luZyBmYWtlIHRpbWVycyBpZiBhbnkuXG5cbiAgICAgIGVucXVldWVUYXNrSW1wbCA9IG5vZGVSZXF1aXJlLmNhbGwobW9kdWxlLCAndGltZXJzJykuc2V0SW1tZWRpYXRlO1xuICAgIH0gY2F0Y2ggKF9lcnIpIHtcbiAgICAgIC8vIHdlJ3JlIGluIGEgYnJvd3NlclxuICAgICAgLy8gd2UgY2FuJ3QgdXNlIHJlZ3VsYXIgdGltZXJzIGJlY2F1c2UgdGhleSBtYXkgc3RpbGwgYmUgZmFrZWRcbiAgICAgIC8vIHNvIHdlIHRyeSBNZXNzYWdlQ2hhbm5lbCtwb3N0TWVzc2FnZSBpbnN0ZWFkXG4gICAgICBlbnF1ZXVlVGFza0ltcGwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAge1xuICAgICAgICAgIGlmIChkaWRXYXJuQWJvdXRNZXNzYWdlQ2hhbm5lbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRpZFdhcm5BYm91dE1lc3NhZ2VDaGFubmVsID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBNZXNzYWdlQ2hhbm5lbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgZXJyb3IoJ1RoaXMgYnJvd3NlciBkb2VzIG5vdCBoYXZlIGEgTWVzc2FnZUNoYW5uZWwgaW1wbGVtZW50YXRpb24sICcgKyAnc28gZW5xdWV1aW5nIHRhc2tzIHZpYSBhd2FpdCBhY3QoYXN5bmMgKCkgPT4gLi4uKSB3aWxsIGZhaWwuICcgKyAnUGxlYXNlIGZpbGUgYW4gaXNzdWUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3VlcyAnICsgJ2lmIHlvdSBlbmNvdW50ZXIgdGhpcyB3YXJuaW5nLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gY2FsbGJhY2s7XG4gICAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UodW5kZWZpbmVkKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVucXVldWVUYXNrSW1wbCh0YXNrKTtcbn1cblxudmFyIGFjdFNjb3BlRGVwdGggPSAwO1xudmFyIGRpZFdhcm5Ob0F3YWl0QWN0ID0gZmFsc2U7XG5mdW5jdGlvbiBhY3QoY2FsbGJhY2spIHtcbiAge1xuICAgIC8vIGBhY3RgIGNhbGxzIGNhbiBiZSBuZXN0ZWQsIHNvIHdlIHRyYWNrIHRoZSBkZXB0aC4gVGhpcyByZXByZXNlbnRzIHRoZVxuICAgIC8vIG51bWJlciBvZiBgYWN0YCBzY29wZXMgb24gdGhlIHN0YWNrLlxuICAgIHZhciBwcmV2QWN0U2NvcGVEZXB0aCA9IGFjdFNjb3BlRGVwdGg7XG4gICAgYWN0U2NvcGVEZXB0aCsrO1xuXG4gICAgaWYgKFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIFRoaXMgaXMgdGhlIG91dGVybW9zdCBgYWN0YCBzY29wZS4gSW5pdGlhbGl6ZSB0aGUgcXVldWUuIFRoZSByZWNvbmNpbGVyXG4gICAgICAvLyB3aWxsIGRldGVjdCB0aGUgcXVldWUgYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIFNjaGVkdWxlci5cbiAgICAgIFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQgPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgcHJldklzQmF0Y2hpbmdMZWdhY3kgPSBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5pc0JhdGNoaW5nTGVnYWN5O1xuICAgIHZhciByZXN1bHQ7XG5cbiAgICB0cnkge1xuICAgICAgLy8gVXNlZCB0byByZXByb2R1Y2UgYmVoYXZpb3Igb2YgYGJhdGNoZWRVcGRhdGVzYCBpbiBsZWdhY3kgbW9kZS4gT25seVxuICAgICAgLy8gc2V0IHRvIGB0cnVlYCB3aGlsZSB0aGUgZ2l2ZW4gY2FsbGJhY2sgaXMgZXhlY3V0ZWQsIG5vdCBmb3IgdXBkYXRlc1xuICAgICAgLy8gdHJpZ2dlcmVkIGR1cmluZyBhbiBhc3luYyBldmVudCwgYmVjYXVzZSB0aGlzIGlzIGhvdyB0aGUgbGVnYWN5XG4gICAgICAvLyBpbXBsZW1lbnRhdGlvbiBvZiBgYWN0YCBiZWhhdmVkLlxuICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuaXNCYXRjaGluZ0xlZ2FjeSA9IHRydWU7XG4gICAgICByZXN1bHQgPSBjYWxsYmFjaygpOyAvLyBSZXBsaWNhdGUgYmVoYXZpb3Igb2Ygb3JpZ2luYWwgYGFjdGAgaW1wbGVtZW50YXRpb24gaW4gbGVnYWN5IG1vZGUsXG4gICAgICAvLyB3aGljaCBmbHVzaGVkIHVwZGF0ZXMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHNjb3BlIGZ1bmN0aW9uIGV4aXRzLCBldmVuXG4gICAgICAvLyBpZiBpdCdzIGFuIGFzeW5jIGZ1bmN0aW9uLlxuXG4gICAgICBpZiAoIXByZXZJc0JhdGNoaW5nTGVnYWN5ICYmIFJlYWN0Q3VycmVudEFjdFF1ZXVlLmRpZFNjaGVkdWxlTGVnYWN5VXBkYXRlKSB7XG4gICAgICAgIHZhciBxdWV1ZSA9IFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQ7XG5cbiAgICAgICAgaWYgKHF1ZXVlICE9PSBudWxsKSB7XG4gICAgICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuZGlkU2NoZWR1bGVMZWdhY3lVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgICBmbHVzaEFjdFF1ZXVlKHF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBwb3BBY3RTY29wZShwcmV2QWN0U2NvcGVEZXB0aCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuaXNCYXRjaGluZ0xlZ2FjeSA9IHByZXZJc0JhdGNoaW5nTGVnYWN5O1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgdHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHJlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YXIgdGhlbmFibGVSZXN1bHQgPSByZXN1bHQ7IC8vIFRoZSBjYWxsYmFjayBpcyBhbiBhc3luYyBmdW5jdGlvbiAoaS5lLiByZXR1cm5lZCBhIHByb21pc2UpLiBXYWl0XG4gICAgICAvLyBmb3IgaXQgdG8gcmVzb2x2ZSBiZWZvcmUgZXhpdGluZyB0aGUgY3VycmVudCBzY29wZS5cblxuICAgICAgdmFyIHdhc0F3YWl0ZWQgPSBmYWxzZTtcbiAgICAgIHZhciB0aGVuYWJsZSA9IHtcbiAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIHdhc0F3YWl0ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoZW5hYmxlUmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJldHVyblZhbHVlKSB7XG4gICAgICAgICAgICBwb3BBY3RTY29wZShwcmV2QWN0U2NvcGVEZXB0aCk7XG5cbiAgICAgICAgICAgIGlmIChhY3RTY29wZURlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgIC8vIFdlJ3ZlIGV4aXRlZCB0aGUgb3V0ZXJtb3N0IGFjdCBzY29wZS4gUmVjdXJzaXZlbHkgZmx1c2ggdGhlXG4gICAgICAgICAgICAgIC8vIHF1ZXVlIHVudGlsIHRoZXJlJ3Mgbm8gcmVtYWluaW5nIHdvcmsuXG4gICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5Rmx1c2hBc3luY0FjdFdvcmsocmV0dXJuVmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKHJldHVyblZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIFRoZSBjYWxsYmFjayB0aHJldyBhbiBlcnJvci5cbiAgICAgICAgICAgIHBvcEFjdFNjb3BlKHByZXZBY3RTY29wZURlcHRoKTtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHtcbiAgICAgICAgaWYgKCFkaWRXYXJuTm9Bd2FpdEFjdCAmJiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHt9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghd2FzQXdhaXRlZCkge1xuICAgICAgICAgICAgICBkaWRXYXJuTm9Bd2FpdEFjdCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgZXJyb3IoJ1lvdSBjYWxsZWQgYWN0KGFzeW5jICgpID0+IC4uLikgd2l0aG91dCBhd2FpdC4gJyArICdUaGlzIGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCB0ZXN0aW5nIGJlaGF2aW91ciwgJyArICdpbnRlcmxlYXZpbmcgbXVsdGlwbGUgYWN0IGNhbGxzIGFuZCBtaXhpbmcgdGhlaXIgJyArICdzY29wZXMuICcgKyAnWW91IHNob3VsZCAtIGF3YWl0IGFjdChhc3luYyAoKSA9PiAuLi4pOycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGVuYWJsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJldHVyblZhbHVlID0gcmVzdWx0OyAvLyBUaGUgY2FsbGJhY2sgaXMgbm90IGFuIGFzeW5jIGZ1bmN0aW9uLiBFeGl0IHRoZSBjdXJyZW50IHNjb3BlXG4gICAgICAvLyBpbW1lZGlhdGVseSwgd2l0aG91dCBhd2FpdGluZy5cblxuICAgICAgcG9wQWN0U2NvcGUocHJldkFjdFNjb3BlRGVwdGgpO1xuXG4gICAgICBpZiAoYWN0U2NvcGVEZXB0aCA9PT0gMCkge1xuICAgICAgICAvLyBFeGl0aW5nIHRoZSBvdXRlcm1vc3QgYWN0IHNjb3BlLiBGbHVzaCB0aGUgcXVldWUuXG4gICAgICAgIHZhciBfcXVldWUgPSBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5jdXJyZW50O1xuXG4gICAgICAgIGlmIChfcXVldWUgIT09IG51bGwpIHtcbiAgICAgICAgICBmbHVzaEFjdFF1ZXVlKF9xdWV1ZSk7XG4gICAgICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH0gLy8gUmV0dXJuIGEgdGhlbmFibGUuIElmIHRoZSB1c2VyIGF3YWl0cyBpdCwgd2UnbGwgZmx1c2ggYWdhaW4gaW5cbiAgICAgICAgLy8gY2FzZSBhZGRpdGlvbmFsIHdvcmsgd2FzIHNjaGVkdWxlZCBieSBhIG1pY3JvdGFzay5cblxuXG4gICAgICAgIHZhciBfdGhlbmFibGUgPSB7XG4gICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgLy8gQ29uZmlybSB3ZSBoYXZlbid0IHJlLWVudGVyZWQgYW5vdGhlciBgYWN0YCBzY29wZSwgaW4gY2FzZVxuICAgICAgICAgICAgLy8gdGhlIHVzZXIgZG9lcyBzb21ldGhpbmcgd2VpcmQgbGlrZSBhd2FpdCB0aGUgdGhlbmFibGVcbiAgICAgICAgICAgIC8vIG11bHRpcGxlIHRpbWVzLlxuICAgICAgICAgICAgaWYgKFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmx1c2ggdGhlIHF1ZXVlIHVudGlsIHRoZXJlJ3Mgbm8gcmVtYWluaW5nIHdvcmsuXG4gICAgICAgICAgICAgIFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgICAgICAgcmVjdXJzaXZlbHlGbHVzaEFzeW5jQWN0V29yayhyZXR1cm5WYWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocmV0dXJuVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGVuYWJsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpbmNlIHdlJ3JlIGluc2lkZSBhIG5lc3RlZCBgYWN0YCBzY29wZSwgdGhlIHJldHVybmVkIHRoZW5hYmxlXG4gICAgICAgIC8vIGltbWVkaWF0ZWx5IHJlc29sdmVzLiBUaGUgb3V0ZXIgc2NvcGUgd2lsbCBmbHVzaCB0aGUgcXVldWUuXG4gICAgICAgIHZhciBfdGhlbmFibGUyID0ge1xuICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHJlc29sdmUocmV0dXJuVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGVuYWJsZTI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBvcEFjdFNjb3BlKHByZXZBY3RTY29wZURlcHRoKSB7XG4gIHtcbiAgICBpZiAocHJldkFjdFNjb3BlRGVwdGggIT09IGFjdFNjb3BlRGVwdGggLSAxKSB7XG4gICAgICBlcnJvcignWW91IHNlZW0gdG8gaGF2ZSBvdmVybGFwcGluZyBhY3QoKSBjYWxscywgdGhpcyBpcyBub3Qgc3VwcG9ydGVkLiAnICsgJ0JlIHN1cmUgdG8gYXdhaXQgcHJldmlvdXMgYWN0KCkgY2FsbHMgYmVmb3JlIG1ha2luZyBhIG5ldyBvbmUuICcpO1xuICAgIH1cblxuICAgIGFjdFNjb3BlRGVwdGggPSBwcmV2QWN0U2NvcGVEZXB0aDtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNpdmVseUZsdXNoQXN5bmNBY3RXb3JrKHJldHVyblZhbHVlLCByZXNvbHZlLCByZWplY3QpIHtcbiAge1xuICAgIHZhciBxdWV1ZSA9IFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQ7XG5cbiAgICBpZiAocXVldWUgIT09IG51bGwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZsdXNoQWN0UXVldWUocXVldWUpO1xuICAgICAgICBlbnF1ZXVlVGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gTm8gYWRkaXRpb25hbCB3b3JrIHdhcyBzY2hlZHVsZWQuIEZpbmlzaC5cbiAgICAgICAgICAgIFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5WYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEtlZXAgZmx1c2hpbmcgd29yayB1bnRpbCB0aGVyZSdzIG5vbmUgbGVmdC5cbiAgICAgICAgICAgIHJlY3Vyc2l2ZWx5Rmx1c2hBc3luY0FjdFdvcmsocmV0dXJuVmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUocmV0dXJuVmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgaXNGbHVzaGluZyA9IGZhbHNlO1xuXG5mdW5jdGlvbiBmbHVzaEFjdFF1ZXVlKHF1ZXVlKSB7XG4gIHtcbiAgICBpZiAoIWlzRmx1c2hpbmcpIHtcbiAgICAgIC8vIFByZXZlbnQgcmUtZW50cmFuY2UuXG4gICAgICBpc0ZsdXNoaW5nID0gdHJ1ZTtcbiAgICAgIHZhciBpID0gMDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICg7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBjYWxsYmFjayA9IHF1ZXVlW2ldO1xuXG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayh0cnVlKTtcbiAgICAgICAgICB9IHdoaWxlIChjYWxsYmFjayAhPT0gbnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZS5sZW5ndGggPSAwO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSWYgc29tZXRoaW5nIHRocm93cywgbGVhdmUgdGhlIHJlbWFpbmluZyBjYWxsYmFja3Mgb24gdGhlIHF1ZXVlLlxuICAgICAgICBxdWV1ZSA9IHF1ZXVlLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc0ZsdXNoaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBjcmVhdGVFbGVtZW50JDEgPSAgY3JlYXRlRWxlbWVudFdpdGhWYWxpZGF0aW9uIDtcbnZhciBjbG9uZUVsZW1lbnQkMSA9ICBjbG9uZUVsZW1lbnRXaXRoVmFsaWRhdGlvbiA7XG52YXIgY3JlYXRlRmFjdG9yeSA9ICBjcmVhdGVGYWN0b3J5V2l0aFZhbGlkYXRpb24gO1xudmFyIENoaWxkcmVuID0ge1xuICBtYXA6IG1hcENoaWxkcmVuLFxuICBmb3JFYWNoOiBmb3JFYWNoQ2hpbGRyZW4sXG4gIGNvdW50OiBjb3VudENoaWxkcmVuLFxuICB0b0FycmF5OiB0b0FycmF5LFxuICBvbmx5OiBvbmx5Q2hpbGRcbn07XG5cbmV4cG9ydHMuQ2hpbGRyZW4gPSBDaGlsZHJlbjtcbmV4cG9ydHMuQ29tcG9uZW50ID0gQ29tcG9uZW50O1xuZXhwb3J0cy5GcmFnbWVudCA9IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG5leHBvcnRzLlByb2ZpbGVyID0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbmV4cG9ydHMuUHVyZUNvbXBvbmVudCA9IFB1cmVDb21wb25lbnQ7XG5leHBvcnRzLlN0cmljdE1vZGUgPSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xuZXhwb3J0cy5TdXNwZW5zZSA9IFJFQUNUX1NVU1BFTlNFX1RZUEU7XG5leHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID0gUmVhY3RTaGFyZWRJbnRlcm5hbHM7XG5leHBvcnRzLmNsb25lRWxlbWVudCA9IGNsb25lRWxlbWVudCQxO1xuZXhwb3J0cy5jcmVhdGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDtcbmV4cG9ydHMuY3JlYXRlRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQkMTtcbmV4cG9ydHMuY3JlYXRlRmFjdG9yeSA9IGNyZWF0ZUZhY3Rvcnk7XG5leHBvcnRzLmNyZWF0ZVJlZiA9IGNyZWF0ZVJlZjtcbmV4cG9ydHMuZm9yd2FyZFJlZiA9IGZvcndhcmRSZWY7XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50ID0gaXNWYWxpZEVsZW1lbnQ7XG5leHBvcnRzLmxhenkgPSBsYXp5O1xuZXhwb3J0cy5tZW1vID0gbWVtbztcbmV4cG9ydHMuc3RhcnRUcmFuc2l0aW9uID0gc3RhcnRUcmFuc2l0aW9uO1xuZXhwb3J0cy51bnN0YWJsZV9hY3QgPSBhY3Q7XG5leHBvcnRzLnVzZUNhbGxiYWNrID0gdXNlQ2FsbGJhY2s7XG5leHBvcnRzLnVzZUNvbnRleHQgPSB1c2VDb250ZXh0O1xuZXhwb3J0cy51c2VEZWJ1Z1ZhbHVlID0gdXNlRGVidWdWYWx1ZTtcbmV4cG9ydHMudXNlRGVmZXJyZWRWYWx1ZSA9IHVzZURlZmVycmVkVmFsdWU7XG5leHBvcnRzLnVzZUVmZmVjdCA9IHVzZUVmZmVjdDtcbmV4cG9ydHMudXNlSWQgPSB1c2VJZDtcbmV4cG9ydHMudXNlSW1wZXJhdGl2ZUhhbmRsZSA9IHVzZUltcGVyYXRpdmVIYW5kbGU7XG5leHBvcnRzLnVzZUluc2VydGlvbkVmZmVjdCA9IHVzZUluc2VydGlvbkVmZmVjdDtcbmV4cG9ydHMudXNlTGF5b3V0RWZmZWN0ID0gdXNlTGF5b3V0RWZmZWN0O1xuZXhwb3J0cy51c2VNZW1vID0gdXNlTWVtbztcbmV4cG9ydHMudXNlUmVkdWNlciA9IHVzZVJlZHVjZXI7XG5leHBvcnRzLnVzZVJlZiA9IHVzZVJlZjtcbmV4cG9ydHMudXNlU3RhdGUgPSB1c2VTdGF0ZTtcbmV4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmUgPSB1c2VTeW5jRXh0ZXJuYWxTdG9yZTtcbmV4cG9ydHMudXNlVHJhbnNpdGlvbiA9IHVzZVRyYW5zaXRpb247XG5leHBvcnRzLnZlcnNpb24gPSBSZWFjdFZlcnNpb247XG4gICAgICAgICAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuaWYgKFxuICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJlxuICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdG9wID09PVxuICAgICdmdW5jdGlvbidcbikge1xuICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0b3AobmV3IEVycm9yKCkpO1xufVxuICAgICAgICBcbiAgfSkoKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLy9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQSwgb2JqQiwgY29tcGFyZSwgY29tcGFyZUNvbnRleHQpIHtcbiAgdmFyIHJldCA9IGNvbXBhcmUgPyBjb21wYXJlLmNhbGwoY29tcGFyZUNvbnRleHQsIG9iakEsIG9iakIpIDogdm9pZCAwO1xuXG4gIGlmIChyZXQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiAhIXJldDtcbiAgfVxuXG4gIGlmIChvYmpBID09PSBvYmpCKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iakEgIT09IFwib2JqZWN0XCIgfHwgIW9iakEgfHwgdHlwZW9mIG9iakIgIT09IFwib2JqZWN0XCIgfHwgIW9iakIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGJIYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuYmluZChvYmpCKTtcblxuICAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLlxuICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBrZXlzQS5sZW5ndGg7IGlkeCsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNBW2lkeF07XG5cbiAgICBpZiAoIWJIYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlQSA9IG9iakFba2V5XTtcbiAgICB2YXIgdmFsdWVCID0gb2JqQltrZXldO1xuXG4gICAgcmV0ID0gY29tcGFyZSA/IGNvbXBhcmUuY2FsbChjb21wYXJlQ29udGV4dCwgdmFsdWVBLCB2YWx1ZUIsIGtleSkgOiB2b2lkIDA7XG5cbiAgICBpZiAocmV0ID09PSBmYWxzZSB8fCAocmV0ID09PSB2b2lkIDAgJiYgdmFsdWVBICE9PSB2YWx1ZUIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vZDN2NHBwLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vZDN2NHBwLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gdXBkYXRlcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuICBjc3MgKz0gb2JqLmNzcztcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfVxuXG4gIC8vIEZvciBvbGQgSUVcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHt9LFxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgIH07XG4gIH1cbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsImltcG9ydHtfX3NwcmVhZEFycmF5IGFzIGUsX19hc3NpZ24gYXMgdH1mcm9tXCJ0c2xpYlwiO2ltcG9ydCBuIGZyb21cIkBlbW90aW9uL2lzLXByb3AtdmFsaWRcIjtpbXBvcnQgbyx7dXNlUmVmIGFzIHIsdXNlU3RhdGUgYXMgcyx1c2VNZW1vIGFzIGksdXNlRWZmZWN0IGFzIGEsdXNlQ29udGV4dCBhcyBjLHVzZURlYnVnVmFsdWUgYXMgbCxjcmVhdGVFbGVtZW50IGFzIHV9ZnJvbVwicmVhY3RcIjtpbXBvcnQgcCBmcm9tXCJzaGFsbG93ZXF1YWxcIjtpbXBvcnQqYXMgZCBmcm9tXCJzdHlsaXNcIjtpbXBvcnQgaCBmcm9tXCJAZW1vdGlvbi91bml0bGVzc1wiO3ZhciBmPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiZ2b2lkIDAhPT1wcm9jZXNzLmVudiYmKHByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19BVFRSfHxwcm9jZXNzLmVudi5TQ19BVFRSKXx8XCJkYXRhLXN0eWxlZFwiLG09XCI2LjAuN1wiLHk9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJIVE1MRWxlbWVudFwiaW4gd2luZG93LHY9Qm9vbGVhbihcImJvb2xlYW5cIj09dHlwZW9mIFNDX0RJU0FCTEVfU1BFRURZP1NDX0RJU0FCTEVfU1BFRURZOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiZ2b2lkIDAhPT1wcm9jZXNzLmVudiYmdm9pZCAwIT09cHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZJiZcIlwiIT09cHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZP1wiZmFsc2VcIiE9PXByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWSYmcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiZ2b2lkIDAhPT1wcm9jZXNzLmVudiYmdm9pZCAwIT09cHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFkmJlwiXCIhPT1wcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWT9cImZhbHNlXCIhPT1wcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWSYmcHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFk6XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViksZz17fSxTPS9pbnZhbGlkIGhvb2sgY2FsbC9pLHc9bmV3IFNldCxiPWZ1bmN0aW9uKHQsbil7aWYoXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOVil7dmFyIG89bj8nIHdpdGggdGhlIGlkIG9mIFwiJy5jb25jYXQobiwnXCInKTpcIlwiLHM9XCJUaGUgY29tcG9uZW50IFwiLmNvbmNhdCh0KS5jb25jYXQobyxcIiBoYXMgYmVlbiBjcmVhdGVkIGR5bmFtaWNhbGx5LlxcblwiKStcIllvdSBtYXkgc2VlIHRoaXMgd2FybmluZyBiZWNhdXNlIHlvdSd2ZSBjYWxsZWQgc3R5bGVkIGluc2lkZSBhbm90aGVyIGNvbXBvbmVudC5cXG5UbyByZXNvbHZlIHRoaXMgb25seSBjcmVhdGUgbmV3IFN0eWxlZENvbXBvbmVudHMgb3V0c2lkZSBvZiBhbnkgcmVuZGVyIG1ldGhvZCBhbmQgZnVuY3Rpb24gY29tcG9uZW50LlwiLGk9Y29uc29sZS5lcnJvcjt0cnl7dmFyIGE9ITA7Y29uc29sZS5lcnJvcj1mdW5jdGlvbih0KXtmb3IodmFyIG49W10sbz0xO288YXJndW1lbnRzLmxlbmd0aDtvKyspbltvLTFdPWFyZ3VtZW50c1tvXTtTLnRlc3QodCk/KGE9ITEsdy5kZWxldGUocykpOmkuYXBwbHkodm9pZCAwLGUoW3RdLG4sITEpKX0scigpLGEmJiF3LmhhcyhzKSYmKGNvbnNvbGUud2FybihzKSx3LmFkZChzKSl9Y2F0Y2goZSl7Uy50ZXN0KGUubWVzc2FnZSkmJncuZGVsZXRlKHMpfWZpbmFsbHl7Y29uc29sZS5lcnJvcj1pfX19LEU9T2JqZWN0LmZyZWV6ZShbXSksTj1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiBQKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49TiksZS50aGVtZSE9PW4udGhlbWUmJmUudGhlbWV8fHR8fG4udGhlbWV9dmFyIF89bmV3IFNldChbXCJhXCIsXCJhYmJyXCIsXCJhZGRyZXNzXCIsXCJhcmVhXCIsXCJhcnRpY2xlXCIsXCJhc2lkZVwiLFwiYXVkaW9cIixcImJcIixcImJhc2VcIixcImJkaVwiLFwiYmRvXCIsXCJiaWdcIixcImJsb2NrcXVvdGVcIixcImJvZHlcIixcImJyXCIsXCJidXR0b25cIixcImNhbnZhc1wiLFwiY2FwdGlvblwiLFwiY2l0ZVwiLFwiY29kZVwiLFwiY29sXCIsXCJjb2xncm91cFwiLFwiZGF0YVwiLFwiZGF0YWxpc3RcIixcImRkXCIsXCJkZWxcIixcImRldGFpbHNcIixcImRmblwiLFwiZGlhbG9nXCIsXCJkaXZcIixcImRsXCIsXCJkdFwiLFwiZW1cIixcImVtYmVkXCIsXCJmaWVsZHNldFwiLFwiZmlnY2FwdGlvblwiLFwiZmlndXJlXCIsXCJmb290ZXJcIixcImZvcm1cIixcImgxXCIsXCJoMlwiLFwiaDNcIixcImg0XCIsXCJoNVwiLFwiaDZcIixcImhlYWRcIixcImhlYWRlclwiLFwiaGdyb3VwXCIsXCJoclwiLFwiaHRtbFwiLFwiaVwiLFwiaWZyYW1lXCIsXCJpbWdcIixcImlucHV0XCIsXCJpbnNcIixcImtiZFwiLFwia2V5Z2VuXCIsXCJsYWJlbFwiLFwibGVnZW5kXCIsXCJsaVwiLFwibGlua1wiLFwibWFpblwiLFwibWFwXCIsXCJtYXJrXCIsXCJtZW51XCIsXCJtZW51aXRlbVwiLFwibWV0YVwiLFwibWV0ZXJcIixcIm5hdlwiLFwibm9zY3JpcHRcIixcIm9iamVjdFwiLFwib2xcIixcIm9wdGdyb3VwXCIsXCJvcHRpb25cIixcIm91dHB1dFwiLFwicFwiLFwicGFyYW1cIixcInBpY3R1cmVcIixcInByZVwiLFwicHJvZ3Jlc3NcIixcInFcIixcInJwXCIsXCJydFwiLFwicnVieVwiLFwic1wiLFwic2FtcFwiLFwic2NyaXB0XCIsXCJzZWN0aW9uXCIsXCJzZWxlY3RcIixcInNtYWxsXCIsXCJzb3VyY2VcIixcInNwYW5cIixcInN0cm9uZ1wiLFwic3R5bGVcIixcInN1YlwiLFwic3VtbWFyeVwiLFwic3VwXCIsXCJ0YWJsZVwiLFwidGJvZHlcIixcInRkXCIsXCJ0ZXh0YXJlYVwiLFwidGZvb3RcIixcInRoXCIsXCJ0aGVhZFwiLFwidGltZVwiLFwidGl0bGVcIixcInRyXCIsXCJ0cmFja1wiLFwidVwiLFwidWxcIixcInVzZVwiLFwidmFyXCIsXCJ2aWRlb1wiLFwid2JyXCIsXCJjaXJjbGVcIixcImNsaXBQYXRoXCIsXCJkZWZzXCIsXCJlbGxpcHNlXCIsXCJmb3JlaWduT2JqZWN0XCIsXCJnXCIsXCJpbWFnZVwiLFwibGluZVwiLFwibGluZWFyR3JhZGllbnRcIixcIm1hcmtlclwiLFwibWFza1wiLFwicGF0aFwiLFwicGF0dGVyblwiLFwicG9seWdvblwiLFwicG9seWxpbmVcIixcInJhZGlhbEdyYWRpZW50XCIsXCJyZWN0XCIsXCJzdG9wXCIsXCJzdmdcIixcInRleHRcIixcInRzcGFuXCJdKSxDPS9bIVwiIyQlJicoKSorLC4vOjs8PT4/QFtcXFxcXFxdXmB7fH1+LV0rL2csST0vKF4tfC0kKS9nO2Z1bmN0aW9uIEEoZSl7cmV0dXJuIGUucmVwbGFjZShDLFwiLVwiKS5yZXBsYWNlKEksXCJcIil9dmFyIE89LyhhKShkKS9naSxEPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUrKGU+MjU/Mzk6OTcpKX07ZnVuY3Rpb24gUihlKXt2YXIgdCxuPVwiXCI7Zm9yKHQ9TWF0aC5hYnMoZSk7dD41Mjt0PXQvNTJ8MCluPUQodCU1MikrbjtyZXR1cm4oRCh0JTUyKStuKS5yZXBsYWNlKE8sXCIkMS0kMlwiKX12YXIgVCxrPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQubGVuZ3RoO247KWU9MzMqZV50LmNoYXJDb2RlQXQoLS1uKTtyZXR1cm4gZX0saj1mdW5jdGlvbihlKXtyZXR1cm4gayg1MzgxLGUpfTtmdW5jdGlvbiB4KGUpe3JldHVybiBSKGooZSk+Pj4wKX1mdW5jdGlvbiBWKGUpe3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlwic3RyaW5nXCI9PXR5cGVvZiBlJiZlfHxlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fFwiQ29tcG9uZW50XCJ9ZnVuY3Rpb24gTShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmKFwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fGUuY2hhckF0KDApPT09ZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSl9dmFyIEY9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLCQ9Rj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx6PUY/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLEI9e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVmYXVsdFByb3BzOiEwLGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjohMCxnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6ITAsbWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxMPXtuYW1lOiEwLGxlbmd0aDohMCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGNhbGxlZTohMCxhcmd1bWVudHM6ITAsYXJpdHk6ITB9LEc9eyQkdHlwZW9mOiEwLGNvbXBhcmU6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxZPSgoVD17fSlbel09eyQkdHlwZW9mOiEwLHJlbmRlcjohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwfSxUWyRdPUcsVCk7ZnVuY3Rpb24gVyhlKXtyZXR1cm4oXCJ0eXBlXCJpbih0PWUpJiZ0LnR5cGUuJCR0eXBlb2YpPT09JD9HOlwiJCR0eXBlb2ZcImluIGU/WVtlLiQkdHlwZW9mXTpCO3ZhciB0fXZhciBxPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxIPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLFU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxKPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsWD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsWj1PYmplY3QucHJvdG90eXBlO2Z1bmN0aW9uIEsoZSx0LG4pe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXtpZihaKXt2YXIgbz1YKHQpO28mJm8hPT1aJiZLKGUsbyxuKX12YXIgcj1IKHQpO1UmJihyPXIuY29uY2F0KFUodCkpKTtmb3IodmFyIHM9VyhlKSxpPVcodCksYT0wO2E8ci5sZW5ndGg7KythKXt2YXIgYz1yW2FdO2lmKCEoYyBpbiBMfHxuJiZuW2NdfHxpJiZjIGluIGl8fHMmJmMgaW4gcykpe3ZhciBsPUoodCxjKTt0cnl7cShlLGMsbCl9Y2F0Y2goZSl7fX19fXJldHVybiBlfWZ1bmN0aW9uIFEoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX1mdW5jdGlvbiBlZShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmXCJzdHlsZWRDb21wb25lbnRJZFwiaW4gZX1mdW5jdGlvbiB0ZShlLHQpe3JldHVybiBlJiZ0P1wiXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdCh0KTplfHx0fHxcIlwifWZ1bmN0aW9uIG5lKGUsdCl7aWYoMD09PWUubGVuZ3RoKXJldHVyblwiXCI7Zm9yKHZhciBuPWVbMF0sbz0xO288ZS5sZW5ndGg7bysrKW4rPXQ/dCtlW29dOmVbb107cmV0dXJuIG59ZnVuY3Rpb24gb2UoZSl7cmV0dXJuIG51bGwhPT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3Rvci5uYW1lPT09T2JqZWN0Lm5hbWUmJiEoXCJwcm9wc1wiaW4gZSYmZS4kJHR5cGVvZil9ZnVuY3Rpb24gcmUoZSx0LG4pe2lmKHZvaWQgMD09PW4mJihuPSExKSwhbiYmIW9lKGUpJiYhQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKWVbb109cmUoZVtvXSx0W29dKTtlbHNlIGlmKG9lKHQpKWZvcih2YXIgbyBpbiB0KWVbb109cmUoZVtvXSx0W29dKTtyZXR1cm4gZX1mdW5jdGlvbiBzZShlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwidG9TdHJpbmdcIix7dmFsdWU6dH0pfXZhciBpZT1cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WP3sxOlwiQ2Fubm90IGNyZWF0ZSBzdHlsZWQtY29tcG9uZW50IGZvciBjb21wb25lbnQ6ICVzLlxcblxcblwiLDI6XCJDYW4ndCBjb2xsZWN0IHN0eWxlcyBvbmNlIHlvdSd2ZSBjb25zdW1lZCBhIGBTZXJ2ZXJTdHlsZVNoZWV0YCdzIHN0eWxlcyEgYFNlcnZlclN0eWxlU2hlZXRgIGlzIGEgb25lIG9mZiBpbnN0YW5jZSBmb3IgZWFjaCBzZXJ2ZXItc2lkZSByZW5kZXIgY3ljbGUuXFxuXFxuLSBBcmUgeW91IHRyeWluZyB0byByZXVzZSBpdCBhY3Jvc3MgcmVuZGVycz9cXG4tIEFyZSB5b3UgYWNjaWRlbnRhbGx5IGNhbGxpbmcgY29sbGVjdFN0eWxlcyB0d2ljZT9cXG5cXG5cIiwzOlwiU3RyZWFtaW5nIFNTUiBpcyBvbmx5IHN1cHBvcnRlZCBpbiBhIE5vZGUuanMgZW52aXJvbm1lbnQ7IFBsZWFzZSBkbyBub3QgdHJ5IHRvIGNhbGwgdGhpcyBtZXRob2QgaW4gdGhlIGJyb3dzZXIuXFxuXFxuXCIsNDpcIlRoZSBgU3R5bGVTaGVldE1hbmFnZXJgIGV4cGVjdHMgYSB2YWxpZCB0YXJnZXQgb3Igc2hlZXQgcHJvcCFcXG5cXG4tIERvZXMgdGhpcyBlcnJvciBvY2N1ciBvbiB0aGUgY2xpZW50IGFuZCBpcyB5b3VyIHRhcmdldCBmYWxzeT9cXG4tIERvZXMgdGhpcyBlcnJvciBvY2N1ciBvbiB0aGUgc2VydmVyIGFuZCBpcyB0aGUgc2hlZXQgZmFsc3k/XFxuXFxuXCIsNTpcIlRoZSBjbG9uZSBtZXRob2QgY2Fubm90IGJlIHVzZWQgb24gdGhlIGNsaWVudCFcXG5cXG4tIEFyZSB5b3UgcnVubmluZyBpbiBhIGNsaWVudC1saWtlIGVudmlyb25tZW50IG9uIHRoZSBzZXJ2ZXI/XFxuLSBBcmUgeW91IHRyeWluZyB0byBydW4gU1NSIG9uIHRoZSBjbGllbnQ/XFxuXFxuXCIsNjpcIlRyeWluZyB0byBpbnNlcnQgYSBuZXcgc3R5bGUgdGFnLCBidXQgdGhlIGdpdmVuIE5vZGUgaXMgdW5tb3VudGVkIVxcblxcbi0gQXJlIHlvdSB1c2luZyBhIGN1c3RvbSB0YXJnZXQgdGhhdCBpc24ndCBtb3VudGVkP1xcbi0gRG9lcyB5b3VyIGRvY3VtZW50IG5vdCBoYXZlIGEgdmFsaWQgaGVhZCBlbGVtZW50P1xcbi0gSGF2ZSB5b3UgYWNjaWRlbnRhbGx5IHJlbW92ZWQgYSBzdHlsZSB0YWcgbWFudWFsbHk/XFxuXFxuXCIsNzonVGhlbWVQcm92aWRlcjogUGxlYXNlIHJldHVybiBhbiBvYmplY3QgZnJvbSB5b3VyIFwidGhlbWVcIiBwcm9wIGZ1bmN0aW9uLCBlLmcuXFxuXFxuYGBganNcXG50aGVtZT17KCkgPT4gKHt9KX1cXG5gYGBcXG5cXG4nLDg6J1RoZW1lUHJvdmlkZXI6IFBsZWFzZSBtYWtlIHlvdXIgXCJ0aGVtZVwiIHByb3AgYW4gb2JqZWN0LlxcblxcbicsOTpcIk1pc3NpbmcgZG9jdW1lbnQgYDxoZWFkPmBcXG5cXG5cIiwxMDpcIkNhbm5vdCBmaW5kIGEgU3R5bGVTaGVldCBpbnN0YW5jZS4gVXN1YWxseSB0aGlzIGhhcHBlbnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvcGllcyBvZiBzdHlsZWQtY29tcG9uZW50cyBsb2FkZWQgYXQgb25jZS4gQ2hlY2sgb3V0IHRoaXMgaXNzdWUgZm9yIGhvdyB0byB0cm91Ymxlc2hvb3QgYW5kIGZpeCB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoaXMgc2l0dWF0aW9uIGNhbiBoYXBwZW46IGh0dHBzOi8vZ2l0aHViLmNvbS9zdHlsZWQtY29tcG9uZW50cy9zdHlsZWQtY29tcG9uZW50cy9pc3N1ZXMvMTk0MSNpc3N1ZWNvbW1lbnQtNDE3ODYyMDIxXFxuXFxuXCIsMTE6XCJfVGhpcyBlcnJvciB3YXMgcmVwbGFjZWQgd2l0aCBhIGRldi10aW1lIHdhcm5pbmcsIGl0IHdpbGwgYmUgZGVsZXRlZCBmb3IgdjQgZmluYWwuXyBbY3JlYXRlR2xvYmFsU3R5bGVdIHJlY2VpdmVkIGNoaWxkcmVuIHdoaWNoIHdpbGwgbm90IGJlIHJlbmRlcmVkLiBQbGVhc2UgdXNlIHRoZSBjb21wb25lbnQgd2l0aG91dCBwYXNzaW5nIGNoaWxkcmVuIGVsZW1lbnRzLlxcblxcblwiLDEyOlwiSXQgc2VlbXMgeW91IGFyZSBpbnRlcnBvbGF0aW5nIGEga2V5ZnJhbWUgZGVjbGFyYXRpb24gKCVzKSBpbnRvIGFuIHVudGFnZ2VkIHN0cmluZy4gVGhpcyB3YXMgc3VwcG9ydGVkIGluIHN0eWxlZC1jb21wb25lbnRzIHYzLCBidXQgaXMgbm90IGxvbmdlciBzdXBwb3J0ZWQgaW4gdjQgYXMga2V5ZnJhbWVzIGFyZSBub3cgaW5qZWN0ZWQgb24tZGVtYW5kLiBQbGVhc2Ugd3JhcCB5b3VyIHN0cmluZyBpbiB0aGUgY3NzXFxcXGBcXFxcYCBoZWxwZXIgd2hpY2ggZW5zdXJlcyB0aGUgc3R5bGVzIGFyZSBpbmplY3RlZCBjb3JyZWN0bHkuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hcGkjY3NzXFxuXFxuXCIsMTM6XCIlcyBpcyBub3QgYSBzdHlsZWQgY29tcG9uZW50IGFuZCBjYW5ub3QgYmUgcmVmZXJyZWQgdG8gdmlhIGNvbXBvbmVudCBzZWxlY3Rvci4gU2VlIGh0dHBzOi8vd3d3LnN0eWxlZC1jb21wb25lbnRzLmNvbS9kb2NzL2FkdmFuY2VkI3JlZmVycmluZy10by1vdGhlci1jb21wb25lbnRzIGZvciBtb3JlIGRldGFpbHMuXFxuXFxuXCIsMTQ6J1RoZW1lUHJvdmlkZXI6IFwidGhlbWVcIiBwcm9wIGlzIHJlcXVpcmVkLlxcblxcbicsMTU6XCJBIHN0eWxpcyBwbHVnaW4gaGFzIGJlZW4gc3VwcGxpZWQgdGhhdCBpcyBub3QgbmFtZWQuIFdlIG5lZWQgYSBuYW1lIGZvciBlYWNoIHBsdWdpbiB0byBiZSBhYmxlIHRvIHByZXZlbnQgc3R5bGluZyBjb2xsaXNpb25zIGJldHdlZW4gZGlmZmVyZW50IHN0eWxpcyBjb25maWd1cmF0aW9ucyB3aXRoaW4gdGhlIHNhbWUgYXBwLiBCZWZvcmUgeW91IHBhc3MgeW91ciBwbHVnaW4gdG8gYDxTdHlsZVNoZWV0TWFuYWdlciBzdHlsaXNQbHVnaW5zPXtbXX0+YCwgcGxlYXNlIG1ha2Ugc3VyZSBlYWNoIHBsdWdpbiBpcyB1bmlxdWVseS1uYW1lZCwgZS5nLlxcblxcbmBgYGpzXFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGltcG9ydGVkUGx1Z2luLCAnbmFtZScsIHsgdmFsdWU6ICdzb21lLXVuaXF1ZS1uYW1lJyB9KTtcXG5gYGBcXG5cXG5cIiwxNjpcIlJlYWNoZWQgdGhlIGxpbWl0IG9mIGhvdyBtYW55IHN0eWxlZCBjb21wb25lbnRzIG1heSBiZSBjcmVhdGVkIGF0IGdyb3VwICVzLlxcbllvdSBtYXkgb25seSBjcmVhdGUgdXAgdG8gMSwwNzMsNzQxLDgyNCBjb21wb25lbnRzLiBJZiB5b3UncmUgY3JlYXRpbmcgY29tcG9uZW50cyBkeW5hbWljYWxseSxcXG5hcyBmb3IgaW5zdGFuY2UgaW4geW91ciByZW5kZXIgbWV0aG9kIHRoZW4geW91IG1heSBiZSBydW5uaW5nIGludG8gdGhpcyBsaW1pdGF0aW9uLlxcblxcblwiLDE3OlwiQ1NTU3R5bGVTaGVldCBjb3VsZCBub3QgYmUgZm91bmQgb24gSFRNTFN0eWxlRWxlbWVudC5cXG5IYXMgc3R5bGVkLWNvbXBvbmVudHMnIHN0eWxlIHRhZyBiZWVuIHVubW91bnRlZCBvciBhbHRlcmVkIGJ5IGFub3RoZXIgc2NyaXB0P1xcblwiLDE4OlwiVGhlbWVQcm92aWRlcjogUGxlYXNlIG1ha2Ugc3VyZSB5b3VyIHVzZVRoZW1lIGhvb2sgaXMgd2l0aGluIGEgYDxUaGVtZVByb3ZpZGVyPmBcIn06e307ZnVuY3Rpb24gYWUoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07Zm9yKHZhciBuPWVbMF0sbz1bXSxyPTEscz1lLmxlbmd0aDtyPHM7cis9MSlvLnB1c2goZVtyXSk7cmV0dXJuIG8uZm9yRWFjaChmdW5jdGlvbihlKXtuPW4ucmVwbGFjZSgvJVthLXpdLyxlKX0pLG59ZnVuY3Rpb24gY2UodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107cmV0dXJuXCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOVj9uZXcgRXJyb3IoXCJBbiBlcnJvciBvY2N1cnJlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zdHlsZWQtY29tcG9uZW50cy9zdHlsZWQtY29tcG9uZW50cy9ibG9iL21haW4vcGFja2FnZXMvc3R5bGVkLWNvbXBvbmVudHMvc3JjL3V0aWxzL2Vycm9ycy5tZCNcIi5jb25jYXQodCxcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIikuY29uY2F0KG4ubGVuZ3RoPjA/XCIgQXJnczogXCIuY29uY2F0KG4uam9pbihcIiwgXCIpKTpcIlwiKSk6bmV3IEVycm9yKGFlLmFwcGx5KHZvaWQgMCxlKFtpZVt0XV0sbiwhMSkpLnRyaW0oKSl9dmFyIGxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmdyb3VwU2l6ZXM9bmV3IFVpbnQzMkFycmF5KDUxMiksdGhpcy5sZW5ndGg9NTEyLHRoaXMudGFnPWV9cmV0dXJuIGUucHJvdG90eXBlLmluZGV4T2ZHcm91cD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPTA7bjxlO24rKyl0Kz10aGlzLmdyb3VwU2l6ZXNbbl07cmV0dXJuIHR9LGUucHJvdG90eXBlLmluc2VydFJ1bGVzPWZ1bmN0aW9uKGUsdCl7aWYoZT49dGhpcy5ncm91cFNpemVzLmxlbmd0aCl7Zm9yKHZhciBuPXRoaXMuZ3JvdXBTaXplcyxvPW4ubGVuZ3RoLHI9bztlPj1yOylpZigocjw8PTEpPDApdGhyb3cgY2UoMTYsXCJcIi5jb25jYXQoZSkpO3RoaXMuZ3JvdXBTaXplcz1uZXcgVWludDMyQXJyYXkociksdGhpcy5ncm91cFNpemVzLnNldChuKSx0aGlzLmxlbmd0aD1yO2Zvcih2YXIgcz1vO3M8cjtzKyspdGhpcy5ncm91cFNpemVzW3NdPTB9Zm9yKHZhciBpPXRoaXMuaW5kZXhPZkdyb3VwKGUrMSksYT0ocz0wLHQubGVuZ3RoKTtzPGE7cysrKXRoaXMudGFnLmluc2VydFJ1bGUoaSx0W3NdKSYmKHRoaXMuZ3JvdXBTaXplc1tlXSsrLGkrKyl9LGUucHJvdG90eXBlLmNsZWFyR3JvdXA9ZnVuY3Rpb24oZSl7aWYoZTx0aGlzLmxlbmd0aCl7dmFyIHQ9dGhpcy5ncm91cFNpemVzW2VdLG49dGhpcy5pbmRleE9mR3JvdXAoZSksbz1uK3Q7dGhpcy5ncm91cFNpemVzW2VdPTA7Zm9yKHZhciByPW47cjxvO3IrKyl0aGlzLnRhZy5kZWxldGVSdWxlKG4pfX0sZS5wcm90b3R5cGUuZ2V0R3JvdXA9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtpZihlPj10aGlzLmxlbmd0aHx8MD09PXRoaXMuZ3JvdXBTaXplc1tlXSlyZXR1cm4gdDtmb3IodmFyIG49dGhpcy5ncm91cFNpemVzW2VdLG89dGhpcy5pbmRleE9mR3JvdXAoZSkscj1vK24scz1vO3M8cjtzKyspdCs9XCJcIi5jb25jYXQodGhpcy50YWcuZ2V0UnVsZShzKSkuY29uY2F0KFwiLyohc2MqL1xcblwiKTtyZXR1cm4gdH0sZX0oKSx1ZT1uZXcgTWFwLHBlPW5ldyBNYXAsZGU9MSxoZT1mdW5jdGlvbihlKXtpZih1ZS5oYXMoZSkpcmV0dXJuIHVlLmdldChlKTtmb3IoO3BlLmhhcyhkZSk7KWRlKys7dmFyIHQ9ZGUrKztpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoKDB8dCk8MHx8dD4xMDczNzQxODI0KSl0aHJvdyBjZSgxNixcIlwiLmNvbmNhdCh0KSk7cmV0dXJuIHVlLnNldChlLHQpLHBlLnNldCh0LGUpLHR9LGZlPWZ1bmN0aW9uKGUsdCl7dWUuc2V0KGUsdCkscGUuc2V0KHQsZSl9LG1lPVwic3R5bGVbXCIuY29uY2F0KGYsXCJdW1wiKS5jb25jYXQoXCJkYXRhLXN0eWxlZC12ZXJzaW9uXCIsJz1cIicpLmNvbmNhdChcIjYuMC43XCIsJ1wiXScpLHllPW5ldyBSZWdFeHAoXCJeXCIuY29uY2F0KGYsJ1xcXFwuZyhcXFxcZCspXFxcXFtpZD1cIihbXFxcXHdcXFxcZC1dKylcIlxcXFxdLio/XCIoW15cIl0qKScpKSx2ZT1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciBvLHI9bi5zcGxpdChcIixcIikscz0wLGk9ci5sZW5ndGg7czxpO3MrKykobz1yW3NdKSYmZS5yZWdpc3Rlck5hbWUodCxvKX0sZ2U9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4sbz0obnVsbCE9PShuPXQudGV4dENvbnRlbnQpJiZ2b2lkIDAhPT1uP246XCJcIikuc3BsaXQoXCIvKiFzYyovXFxuXCIpLHI9W10scz0wLGk9by5sZW5ndGg7czxpO3MrKyl7dmFyIGE9b1tzXS50cmltKCk7aWYoYSl7dmFyIGM9YS5tYXRjaCh5ZSk7aWYoYyl7dmFyIGw9MHxwYXJzZUludChjWzFdLDEwKSx1PWNbMl07MCE9PWwmJihmZSh1LGwpLHZlKGUsdSxjWzNdKSxlLmdldFRhZygpLmluc2VydFJ1bGVzKGwscikpLHIubGVuZ3RoPTB9ZWxzZSByLnB1c2goYSl9fX07ZnVuY3Rpb24gU2UoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgX193ZWJwYWNrX25vbmNlX18/X193ZWJwYWNrX25vbmNlX186bnVsbH12YXIgd2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuaGVhZCxuPWV8fHQsbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIikscj1mdW5jdGlvbihlKXt2YXIgdD1BcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW1wiLmNvbmNhdChmLFwiXVwiKSkpO3JldHVybiB0W3QubGVuZ3RoLTFdfShuKSxzPXZvaWQgMCE9PXI/ci5uZXh0U2libGluZzpudWxsO28uc2V0QXR0cmlidXRlKGYsXCJhY3RpdmVcIiksby5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlZC12ZXJzaW9uXCIsXCI2LjAuN1wiKTt2YXIgaT1TZSgpO3JldHVybiBpJiZvLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsaSksbi5pbnNlcnRCZWZvcmUobyxzKSxvfSxiZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5lbGVtZW50PXdlKGUpLHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKSksdGhpcy5zaGVldD1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD1kb2N1bWVudC5zdHlsZVNoZWV0cyxuPTAsbz10Lmxlbmd0aDtuPG87bisrKXt2YXIgcj10W25dO2lmKHIub3duZXJOb2RlPT09ZSlyZXR1cm4gcn10aHJvdyBjZSgxNyl9KHRoaXMuZWxlbWVudCksdGhpcy5sZW5ndGg9MH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gdGhpcy5zaGVldC5pbnNlcnRSdWxlKHQsZSksdGhpcy5sZW5ndGgrKywhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUucHJvdG90eXBlLmRlbGV0ZVJ1bGU9ZnVuY3Rpb24oZSl7dGhpcy5zaGVldC5kZWxldGVSdWxlKGUpLHRoaXMubGVuZ3RoLS19LGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zaGVldC5jc3NSdWxlc1tlXTtyZXR1cm4gdCYmdC5jc3NUZXh0P3QuY3NzVGV4dDpcIlwifSxlfSgpLEVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmVsZW1lbnQ9d2UoZSksdGhpcy5ub2Rlcz10aGlzLmVsZW1lbnQuY2hpbGROb2Rlcyx0aGlzLmxlbmd0aD0wfXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7aWYoZTw9dGhpcy5sZW5ndGgmJmU+PTApe3ZhciBuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpO3JldHVybiB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKG4sdGhpcy5ub2Rlc1tlXXx8bnVsbCksdGhpcy5sZW5ndGgrKywhMH1yZXR1cm4hMX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5ub2Rlc1tlXSksdGhpcy5sZW5ndGgtLX0sZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlbmd0aD90aGlzLm5vZGVzW2VdLnRleHRDb250ZW50OlwiXCJ9LGV9KCksTmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucnVsZXM9W10sdGhpcy5sZW5ndGg9MH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPD10aGlzLmxlbmd0aCYmKHRoaXMucnVsZXMuc3BsaWNlKGUsMCx0KSx0aGlzLmxlbmd0aCsrLCEwKX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLnJ1bGVzLnNwbGljZShlLDEpLHRoaXMubGVuZ3RoLS19LGUucHJvdG90eXBlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8dGhpcy5sZW5ndGg/dGhpcy5ydWxlc1tlXTpcIlwifSxlfSgpLFBlPXksX2U9e2lzU2VydmVyOiF5LHVzZUNTU09NSW5qZWN0aW9uOiF2fSxDZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxuLG8pe3ZvaWQgMD09PWUmJihlPU4pLHZvaWQgMD09PW4mJihuPXt9KTt2YXIgcj10aGlzO3RoaXMub3B0aW9ucz10KHQoe30sX2UpLGUpLHRoaXMuZ3M9bix0aGlzLm5hbWVzPW5ldyBNYXAobyksdGhpcy5zZXJ2ZXI9ISFlLmlzU2VydmVyLCF0aGlzLnNlcnZlciYmeSYmUGUmJihQZT0hMSxmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChtZSksbj0wLG89dC5sZW5ndGg7bjxvO24rKyl7dmFyIHI9dFtuXTtyJiZcImFjdGl2ZVwiIT09ci5nZXRBdHRyaWJ1dGUoZikmJihnZShlLHIpLHIucGFyZW50Tm9kZSYmci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKX19KHRoaXMpKSxzZSh0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmdldFRhZygpLG49dC5sZW5ndGgsbz1cIlwiLHI9ZnVuY3Rpb24obil7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIHBlLmdldChlKX0obik7aWYodm9pZCAwPT09cilyZXR1cm5cImNvbnRpbnVlXCI7dmFyIHM9ZS5uYW1lcy5nZXQociksaT10LmdldEdyb3VwKG4pO2lmKHZvaWQgMD09PXN8fDA9PT1pLmxlbmd0aClyZXR1cm5cImNvbnRpbnVlXCI7dmFyIGE9XCJcIi5jb25jYXQoZixcIi5nXCIpLmNvbmNhdChuLCdbaWQ9XCInKS5jb25jYXQociwnXCJdJyksYz1cIlwiO3ZvaWQgMCE9PXMmJnMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmxlbmd0aD4wJiYoYys9XCJcIi5jb25jYXQoZSxcIixcIikpfSksbys9XCJcIi5jb25jYXQoaSkuY29uY2F0KGEsJ3tjb250ZW50OlwiJykuY29uY2F0KGMsJ1wifScpLmNvbmNhdChcIi8qIXNjKi9cXG5cIil9LHM9MDtzPG47cysrKXIocyk7cmV0dXJuIG99KHIpfSl9cmV0dXJuIGUucmVnaXN0ZXJJZD1mdW5jdGlvbihlKXtyZXR1cm4gaGUoZSl9LGUucHJvdG90eXBlLnJlY29uc3RydWN0V2l0aE9wdGlvbnM9ZnVuY3Rpb24obixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89ITApLG5ldyBlKHQodCh7fSx0aGlzLm9wdGlvbnMpLG4pLHRoaXMuZ3MsbyYmdGhpcy5uYW1lc3x8dm9pZCAwKX0sZS5wcm90b3R5cGUuYWxsb2NhdGVHU0luc3RhbmNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdzW2VdPSh0aGlzLmdzW2VdfHwwKSsxfSxlLnByb3RvdHlwZS5nZXRUYWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWd8fCh0aGlzLnRhZz0oZT1mdW5jdGlvbihlKXt2YXIgdD1lLnVzZUNTU09NSW5qZWN0aW9uLG49ZS50YXJnZXQ7cmV0dXJuIGUuaXNTZXJ2ZXI/bmV3IE5lKG4pOnQ/bmV3IGJlKG4pOm5ldyBFZShuKX0odGhpcy5vcHRpb25zKSxuZXcgbGUoZSkpKTt2YXIgZX0sZS5wcm90b3R5cGUuaGFzTmFtZUZvcklkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmFtZXMuaGFzKGUpJiZ0aGlzLm5hbWVzLmdldChlKS5oYXModCl9LGUucHJvdG90eXBlLnJlZ2lzdGVyTmFtZT1mdW5jdGlvbihlLHQpe2lmKGhlKGUpLHRoaXMubmFtZXMuaGFzKGUpKXRoaXMubmFtZXMuZ2V0KGUpLmFkZCh0KTtlbHNle3ZhciBuPW5ldyBTZXQ7bi5hZGQodCksdGhpcy5uYW1lcy5zZXQoZSxuKX19LGUucHJvdG90eXBlLmluc2VydFJ1bGVzPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnJlZ2lzdGVyTmFtZShlLHQpLHRoaXMuZ2V0VGFnKCkuaW5zZXJ0UnVsZXMoaGUoZSksbil9LGUucHJvdG90eXBlLmNsZWFyTmFtZXM9ZnVuY3Rpb24oZSl7dGhpcy5uYW1lcy5oYXMoZSkmJnRoaXMubmFtZXMuZ2V0KGUpLmNsZWFyKCl9LGUucHJvdG90eXBlLmNsZWFyUnVsZXM9ZnVuY3Rpb24oZSl7dGhpcy5nZXRUYWcoKS5jbGVhckdyb3VwKGhlKGUpKSx0aGlzLmNsZWFyTmFtZXMoZSl9LGUucHJvdG90eXBlLmNsZWFyVGFnPWZ1bmN0aW9uKCl7dGhpcy50YWc9dm9pZCAwfSxlfSgpLEllPS8mL2csQWU9L15cXHMqXFwvXFwvLiokL2dtO2Z1bmN0aW9uIE9lKGUsdCl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwicnVsZVwiPT09ZS50eXBlJiYoZS52YWx1ZT1cIlwiLmNvbmNhdCh0LFwiIFwiKS5jb25jYXQoZS52YWx1ZSksZS52YWx1ZT1lLnZhbHVlLnJlcGxhY2VBbGwoXCIsXCIsXCIsXCIuY29uY2F0KHQsXCIgXCIpKSxlLnByb3BzPWUucHJvcHMubWFwKGZ1bmN0aW9uKGUpe3JldHVyblwiXCIuY29uY2F0KHQsXCIgXCIpLmNvbmNhdChlKX0pKSxBcnJheS5pc0FycmF5KGUuY2hpbGRyZW4pJiZcIkBrZXlmcmFtZXNcIiE9PWUudHlwZSYmKGUuY2hpbGRyZW49T2UoZS5jaGlsZHJlbix0KSksZX0pfWZ1bmN0aW9uIERlKGUpe3ZhciB0LG4sbyxyPXZvaWQgMD09PWU/TjplLHM9ci5vcHRpb25zLGk9dm9pZCAwPT09cz9OOnMsYT1yLnBsdWdpbnMsYz12b2lkIDA9PT1hP0U6YSxsPWZ1bmN0aW9uKGUsbyxyKXtyZXR1cm4gcj09PW58fHIuc3RhcnRzV2l0aChuKSYmci5lbmRzV2l0aChuKSYmci5yZXBsYWNlQWxsKG4sXCJcIikubGVuZ3RoPjA/XCIuXCIuY29uY2F0KHQpOmV9LHU9Yy5zbGljZSgpO3UucHVzaChmdW5jdGlvbihlKXtlLnR5cGU9PT1kLlJVTEVTRVQmJmUudmFsdWUuaW5jbHVkZXMoXCImXCIpJiYoZS5wcm9wc1swXT1lLnByb3BzWzBdLnJlcGxhY2UoSWUsbikucmVwbGFjZShvLGwpKX0pLGkucHJlZml4JiZ1LnB1c2goZC5wcmVmaXhlciksdS5wdXNoKGQuc3RyaW5naWZ5KTt2YXIgcD1mdW5jdGlvbihlLHIscyxhKXt2b2lkIDA9PT1yJiYocj1cIlwiKSx2b2lkIDA9PT1zJiYocz1cIlwiKSx2b2lkIDA9PT1hJiYoYT1cIiZcIiksdD1hLG49cixvPW5ldyBSZWdFeHAoXCJcXFxcXCIuY29uY2F0KG4sXCJcXFxcYlwiKSxcImdcIik7dmFyIGM9ZS5yZXBsYWNlKEFlLFwiXCIpLGw9ZC5jb21waWxlKHN8fHI/XCJcIi5jb25jYXQocyxcIiBcIikuY29uY2F0KHIsXCIgeyBcIikuY29uY2F0KGMsXCIgfVwiKTpjKTtpLm5hbWVzcGFjZSYmKGw9T2UobCxpLm5hbWVzcGFjZSkpO3ZhciBwPVtdO3JldHVybiBkLnNlcmlhbGl6ZShsLGQubWlkZGxld2FyZSh1LmNvbmNhdChkLnJ1bGVzaGVldChmdW5jdGlvbihlKXtyZXR1cm4gcC5wdXNoKGUpfSkpKSkscH07cmV0dXJuIHAuaGFzaD1jLmxlbmd0aD9jLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiB0Lm5hbWV8fGNlKDE1KSxrKGUsdC5uYW1lKX0sNTM4MSkudG9TdHJpbmcoKTpcIlwiLHB9dmFyIFJlPW5ldyBDZSxUZT1EZSgpLGtlPW8uY3JlYXRlQ29udGV4dCh7c2hvdWxkRm9yd2FyZFByb3A6dm9pZCAwLHN0eWxlU2hlZXQ6UmUsc3R5bGlzOlRlfSksamU9a2UuQ29uc3VtZXIseGU9by5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gVmUoKXtyZXR1cm4gYyhrZSl9ZnVuY3Rpb24gTWUoZSl7dmFyIHQ9cyhlLnN0eWxpc1BsdWdpbnMpLG49dFswXSxyPXRbMV0sYz1WZSgpLnN0eWxlU2hlZXQsbD1pKGZ1bmN0aW9uKCl7dmFyIHQ9YztyZXR1cm4gZS5zaGVldD90PWUuc2hlZXQ6ZS50YXJnZXQmJih0PXQucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyh7dGFyZ2V0OmUudGFyZ2V0fSwhMSkpLGUuZGlzYWJsZUNTU09NSW5qZWN0aW9uJiYodD10LnJlY29uc3RydWN0V2l0aE9wdGlvbnMoe3VzZUNTU09NSW5qZWN0aW9uOiExfSkpLHR9LFtlLmRpc2FibGVDU1NPTUluamVjdGlvbixlLnNoZWV0LGUudGFyZ2V0LGNdKSx1PWkoZnVuY3Rpb24oKXtyZXR1cm4gRGUoe29wdGlvbnM6e25hbWVzcGFjZTplLm5hbWVzcGFjZSxwcmVmaXg6ZS5lbmFibGVWZW5kb3JQcmVmaXhlc30scGx1Z2luczpufSl9LFtlLmVuYWJsZVZlbmRvclByZWZpeGVzLGUubmFtZXNwYWNlLG5dKTtyZXR1cm4gYShmdW5jdGlvbigpe3AobixlLnN0eWxpc1BsdWdpbnMpfHxyKGUuc3R5bGlzUGx1Z2lucyl9LFtlLnN0eWxpc1BsdWdpbnNdKSxvLmNyZWF0ZUVsZW1lbnQoa2UuUHJvdmlkZXIse3ZhbHVlOntzaG91bGRGb3J3YXJkUHJvcDplLnNob3VsZEZvcndhcmRQcm9wLHN0eWxlU2hlZXQ6bCxzdHlsaXM6dX19LG8uY3JlYXRlRWxlbWVudCh4ZS5Qcm92aWRlcix7dmFsdWU6dX0sZS5jaGlsZHJlbikpfXZhciBGZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgbj10aGlzO3RoaXMuaW5qZWN0PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9VGUpO3ZhciBvPW4ubmFtZSt0Lmhhc2g7ZS5oYXNOYW1lRm9ySWQobi5pZCxvKXx8ZS5pbnNlcnRSdWxlcyhuLmlkLG8sdChuLnJ1bGVzLG8sXCJAa2V5ZnJhbWVzXCIpKX0sdGhpcy5uYW1lPWUsdGhpcy5pZD1cInNjLWtleWZyYW1lcy1cIi5jb25jYXQoZSksdGhpcy5ydWxlcz10LHNlKHRoaXMsZnVuY3Rpb24oKXt0aHJvdyBjZSgxMixTdHJpbmcobi5uYW1lKSl9KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9VGUpLHRoaXMubmFtZStlLmhhc2h9LGV9KCksJGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PVwiQVwiJiZlPD1cIlpcIn07ZnVuY3Rpb24gemUoZSl7Zm9yKHZhciB0PVwiXCIsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgbz1lW25dO2lmKDE9PT1uJiZcIi1cIj09PW8mJlwiLVwiPT09ZVswXSlyZXR1cm4gZTskZShvKT90Kz1cIi1cIitvLnRvTG93ZXJDYXNlKCk6dCs9b31yZXR1cm4gdC5zdGFydHNXaXRoKFwibXMtXCIpP1wiLVwiK3Q6dH12YXIgQmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZXx8XCJcIj09PWV9LExlPWZ1bmN0aW9uKHQpe3ZhciBuLG8scj1bXTtmb3IodmFyIHMgaW4gdCl7dmFyIGk9dFtzXTt0Lmhhc093blByb3BlcnR5KHMpJiYhQmUoaSkmJihBcnJheS5pc0FycmF5KGkpJiZpLmlzQ3NzfHxRKGkpP3IucHVzaChcIlwiLmNvbmNhdCh6ZShzKSxcIjpcIiksaSxcIjtcIik6b2UoaSk/ci5wdXNoLmFwcGx5KHIsZShlKFtcIlwiLmNvbmNhdChzLFwiIHtcIildLExlKGkpLCExKSxbXCJ9XCJdLCExKSk6ci5wdXNoKFwiXCIuY29uY2F0KHplKHMpLFwiOiBcIikuY29uY2F0KChuPXMsbnVsbD09KG89aSl8fFwiYm9vbGVhblwiPT10eXBlb2Ygb3x8XCJcIj09PW8/XCJcIjpcIm51bWJlclwiIT10eXBlb2Ygb3x8MD09PW98fG4gaW4gaHx8bi5zdGFydHNXaXRoKFwiLS1cIik/U3RyaW5nKG8pLnRyaW0oKTpcIlwiLmNvbmNhdChvLFwicHhcIikpLFwiO1wiKSkpfXJldHVybiByfTtmdW5jdGlvbiBHZShlLHQsbixvKXtpZihCZShlKSlyZXR1cm5bXTtpZihlZShlKSlyZXR1cm5bXCIuXCIuY29uY2F0KGUuc3R5bGVkQ29tcG9uZW50SWQpXTtpZihRKGUpKXtpZighUShzPWUpfHxzLnByb3RvdHlwZSYmcy5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudHx8IXQpcmV0dXJuW2VdO3ZhciByPWUodCk7cmV0dXJuXCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOVnx8XCJvYmplY3RcIiE9dHlwZW9mIHJ8fEFycmF5LmlzQXJyYXkocil8fHIgaW5zdGFuY2VvZiBGZXx8b2Uocil8fG51bGw9PT1yfHxjb25zb2xlLmVycm9yKFwiXCIuY29uY2F0KFYoZSksXCIgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlwiKSksR2Uocix0LG4sbyl9dmFyIHM7cmV0dXJuIGUgaW5zdGFuY2VvZiBGZT9uPyhlLmluamVjdChuLG8pLFtlLmdldE5hbWUobyldKTpbZV06b2UoZSk/TGUoZSk6QXJyYXkuaXNBcnJheShlKT9BcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KEUsZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEdlKGUsdCxuLG8pfSkpOltlLnRvU3RyaW5nKCldfWZ1bmN0aW9uIFllKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCs9MSl7dmFyIG49ZVt0XTtpZihRKG4pJiYhZWUobikpcmV0dXJuITF9cmV0dXJuITB9dmFyIFdlPWooXCI2LjAuN1wiKSxxZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3RoaXMucnVsZXM9ZSx0aGlzLnN0YXRpY1J1bGVzSWQ9XCJcIix0aGlzLmlzU3RhdGljPVwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJih2b2lkIDA9PT1ufHxuLmlzU3RhdGljKSYmWWUoZSksdGhpcy5jb21wb25lbnRJZD10LHRoaXMuYmFzZUhhc2g9ayhXZSx0KSx0aGlzLmJhc2VTdHlsZT1uLENlLnJlZ2lzdGVySWQodCl9cmV0dXJuIGUucHJvdG90eXBlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbz10aGlzLmJhc2VTdHlsZT90aGlzLmJhc2VTdHlsZS5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyhlLHQsbik6XCJcIjtpZih0aGlzLmlzU3RhdGljJiYhbi5oYXNoKWlmKHRoaXMuc3RhdGljUnVsZXNJZCYmdC5oYXNOYW1lRm9ySWQodGhpcy5jb21wb25lbnRJZCx0aGlzLnN0YXRpY1J1bGVzSWQpKW89dGUobyx0aGlzLnN0YXRpY1J1bGVzSWQpO2Vsc2V7dmFyIHI9bmUoR2UodGhpcy5ydWxlcyxlLHQsbikpLHM9UihrKHRoaXMuYmFzZUhhc2gscik+Pj4wKTtpZighdC5oYXNOYW1lRm9ySWQodGhpcy5jb21wb25lbnRJZCxzKSl7dmFyIGk9bihyLFwiLlwiLmNvbmNhdChzKSx2b2lkIDAsdGhpcy5jb21wb25lbnRJZCk7dC5pbnNlcnRSdWxlcyh0aGlzLmNvbXBvbmVudElkLHMsaSl9bz10ZShvLHMpLHRoaXMuc3RhdGljUnVsZXNJZD1zfWVsc2V7Zm9yKHZhciBhPWsodGhpcy5iYXNlSGFzaCxuLmhhc2gpLGM9XCJcIixsPTA7bDx0aGlzLnJ1bGVzLmxlbmd0aDtsKyspe3ZhciB1PXRoaXMucnVsZXNbbF07aWYoXCJzdHJpbmdcIj09dHlwZW9mIHUpYys9dSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoYT1rKGEsdSkpO2Vsc2UgaWYodSl7dmFyIHA9bmUoR2UodSxlLHQsbikpO2E9ayhhLHApLGMrPXB9fWlmKGMpe3ZhciBkPVIoYT4+PjApO3QuaGFzTmFtZUZvcklkKHRoaXMuY29tcG9uZW50SWQsZCl8fHQuaW5zZXJ0UnVsZXModGhpcy5jb21wb25lbnRJZCxkLG4oYyxcIi5cIi5jb25jYXQoZCksdm9pZCAwLHRoaXMuY29tcG9uZW50SWQpKSxvPXRlKG8sZCl9fXJldHVybiBvfSxlfSgpLEhlPW8uY3JlYXRlQ29udGV4dCh2b2lkIDApLFVlPUhlLkNvbnN1bWVyO2Z1bmN0aW9uIEplKCl7dmFyIGU9YyhIZSk7aWYoIWUpdGhyb3cgY2UoMTgpO3JldHVybiBlfWZ1bmN0aW9uIFhlKGUpe3ZhciBuPW8udXNlQ29udGV4dChIZSkscj1pKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYoIWUpdGhyb3cgY2UoMTQpO2lmKFEoZSkpe3ZhciBvPWUobik7aWYoXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKG51bGw9PT1vfHxBcnJheS5pc0FycmF5KG8pfHxcIm9iamVjdFwiIT10eXBlb2YgbykpdGhyb3cgY2UoNyk7cmV0dXJuIG99aWYoQXJyYXkuaXNBcnJheShlKXx8XCJvYmplY3RcIiE9dHlwZW9mIGUpdGhyb3cgY2UoOCk7cmV0dXJuIG4/dCh0KHt9LG4pLGUpOmV9KGUudGhlbWUsbil9LFtlLnRoZW1lLG5dKTtyZXR1cm4gZS5jaGlsZHJlbj9vLmNyZWF0ZUVsZW1lbnQoSGUuUHJvdmlkZXIse3ZhbHVlOnJ9LGUuY2hpbGRyZW4pOm51bGx9dmFyIFplPXt9LEtlPW5ldyBTZXQ7ZnVuY3Rpb24gUWUoZSxyLHMpe3ZhciBpPWVlKGUpLGE9ZSxjPSFNKGUpLHA9ci5hdHRycyxkPXZvaWQgMD09PXA/RTpwLGg9ci5jb21wb25lbnRJZCxmPXZvaWQgMD09PWg/ZnVuY3Rpb24oZSx0KXt2YXIgbj1cInN0cmluZ1wiIT10eXBlb2YgZT9cInNjXCI6QShlKTtaZVtuXT0oWmVbbl18fDApKzE7dmFyIG89XCJcIi5jb25jYXQobixcIi1cIikuY29uY2F0KHgoXCI2LjAuN1wiK24rWmVbbl0pKTtyZXR1cm4gdD9cIlwiLmNvbmNhdCh0LFwiLVwiKS5jb25jYXQobyk6b30oci5kaXNwbGF5TmFtZSxyLnBhcmVudENvbXBvbmVudElkKTpoLG09ci5kaXNwbGF5TmFtZSx5PXZvaWQgMD09PW0/ZnVuY3Rpb24oZSl7cmV0dXJuIE0oZSk/XCJzdHlsZWQuXCIuY29uY2F0KGUpOlwiU3R5bGVkKFwiLmNvbmNhdChWKGUpLFwiKVwiKX0oZSk6bSx2PXIuZGlzcGxheU5hbWUmJnIuY29tcG9uZW50SWQ/XCJcIi5jb25jYXQoQShyLmRpc3BsYXlOYW1lKSxcIi1cIikuY29uY2F0KHIuY29tcG9uZW50SWQpOnIuY29tcG9uZW50SWR8fGYsZz1pJiZhLmF0dHJzP2EuYXR0cnMuY29uY2F0KGQpLmZpbHRlcihCb29sZWFuKTpkLFM9ci5zaG91bGRGb3J3YXJkUHJvcDtpZihpJiZhLnNob3VsZEZvcndhcmRQcm9wKXt2YXIgdz1hLnNob3VsZEZvcndhcmRQcm9wO2lmKHIuc2hvdWxkRm9yd2FyZFByb3Ape3ZhciBDPXIuc2hvdWxkRm9yd2FyZFByb3A7Uz1mdW5jdGlvbihlLHQpe3JldHVybiB3KGUsdCkmJkMoZSx0KX19ZWxzZSBTPXd9dmFyIEk9bmV3IHFlKHMsdixpP2EuY29tcG9uZW50U3R5bGU6dm9pZCAwKTtmdW5jdGlvbiBPKGUscil7cmV0dXJuIGZ1bmN0aW9uKGUscixzKXt2YXIgaT1lLmF0dHJzLGE9ZS5jb21wb25lbnRTdHlsZSxjPWUuZGVmYXVsdFByb3BzLHA9ZS5mb2xkZWRDb21wb25lbnRJZHMsZD1lLnN0eWxlZENvbXBvbmVudElkLGg9ZS50YXJnZXQsZj1vLnVzZUNvbnRleHQoSGUpLG09VmUoKSx5PWUuc2hvdWxkRm9yd2FyZFByb3B8fG0uc2hvdWxkRm9yd2FyZFByb3A7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmbChkKTt2YXIgdj1mdW5jdGlvbihlLG4sbyl7Zm9yKHZhciByLHM9dCh0KHt9LG4pLHtjbGFzc05hbWU6dm9pZCAwLHRoZW1lOm99KSxpPTA7aTxlLmxlbmd0aDtpKz0xKXt2YXIgYT1RKHI9ZVtpXSk/cihzKTpyO2Zvcih2YXIgYyBpbiBhKXNbY109XCJjbGFzc05hbWVcIj09PWM/dGUoc1tjXSxhW2NdKTpcInN0eWxlXCI9PT1jP3QodCh7fSxzW2NdKSxhW2NdKTphW2NdfXJldHVybiBuLmNsYXNzTmFtZSYmKHMuY2xhc3NOYW1lPXRlKHMuY2xhc3NOYW1lLG4uY2xhc3NOYW1lKSksc30oaSxyLFAocixmLGMpfHxOKSxnPXYuYXN8fGgsUz17fTtmb3IodmFyIHcgaW4gdil2b2lkIDA9PT12W3ddfHxcIiRcIj09PXdbMF18fFwiYXNcIj09PXd8fFwidGhlbWVcIj09PXd8fChcImZvcndhcmRlZEFzXCI9PT13P1MuYXM9di5mb3J3YXJkZWRBczp5JiYheSh3LGcpfHwoU1t3XT12W3ddLHl8fFwiZGV2ZWxvcG1lbnRcIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WfHxuKHcpfHxLZS5oYXModyl8fCFfLmhhcyhnKXx8KEtlLmFkZCh3KSxjb25zb2xlLndhcm4oJ3N0eWxlZC1jb21wb25lbnRzOiBpdCBsb29rcyBsaWtlIGFuIHVua25vd24gcHJvcCBcIicuY29uY2F0KHcsJ1wiIGlzIGJlaW5nIHNlbnQgdGhyb3VnaCB0byB0aGUgRE9NLCB3aGljaCB3aWxsIGxpa2VseSB0cmlnZ2VyIGEgUmVhY3QgY29uc29sZSBlcnJvci4gSWYgeW91IHdvdWxkIGxpa2UgYXV0b21hdGljIGZpbHRlcmluZyBvZiB1bmtub3duIHByb3BzLCB5b3UgY2FuIG9wdC1pbnRvIHRoYXQgYmVoYXZpb3IgdmlhIGA8U3R5bGVTaGVldE1hbmFnZXIgc2hvdWxkRm9yd2FyZFByb3A9ey4uLn0+YCAoY29ubmVjdCBhbiBBUEkgbGlrZSBgQGVtb3Rpb24vaXMtcHJvcC12YWxpZGApIG9yIGNvbnNpZGVyIHVzaW5nIHRyYW5zaWVudCBwcm9wcyAoYCRgIHByZWZpeCBmb3IgYXV0b21hdGljIGZpbHRlcmluZy4pJykpKSkpO3ZhciBiPWZ1bmN0aW9uKGUsdCl7dmFyIG49VmUoKSxvPWUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXModCxuLnN0eWxlU2hlZXQsbi5zdHlsaXMpO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmwobyksb30oYSx2KTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZlLndhcm5Ub29NYW55Q2xhc3NlcyYmZS53YXJuVG9vTWFueUNsYXNzZXMoYik7dmFyIEU9dGUocCxkKTtyZXR1cm4gYiYmKEUrPVwiIFwiK2IpLHYuY2xhc3NOYW1lJiYoRSs9XCIgXCIrdi5jbGFzc05hbWUpLFNbTShnKSYmIV8uaGFzKGcpP1wiY2xhc3NcIjpcImNsYXNzTmFtZVwiXT1FLFMucmVmPXMsdShnLFMpfShELGUscil9XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKE8uZGlzcGxheU5hbWU9eSk7dmFyIEQ9by5mb3J3YXJkUmVmKE8pO3JldHVybiBELmF0dHJzPWcsRC5jb21wb25lbnRTdHlsZT1JLEQuc2hvdWxkRm9yd2FyZFByb3A9UyxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoRC5kaXNwbGF5TmFtZT15KSxELmZvbGRlZENvbXBvbmVudElkcz1pP3RlKGEuZm9sZGVkQ29tcG9uZW50SWRzLGEuc3R5bGVkQ29tcG9uZW50SWQpOlwiXCIsRC5zdHlsZWRDb21wb25lbnRJZD12LEQudGFyZ2V0PWk/YS50YXJnZXQ6ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRCxcImRlZmF1bHRQcm9wc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9sZGVkRGVmYXVsdFByb3BzfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fZm9sZGVkRGVmYXVsdFByb3BzPWk/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07Zm9yKHZhciBvPTAscj10O288ci5sZW5ndGg7bysrKXJlKGUscltvXSwhMCk7cmV0dXJuIGV9KHt9LGEuZGVmYXVsdFByb3BzLGUpOmV9fSksXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKGIoeSx2KSxELndhcm5Ub29NYW55Q2xhc3Nlcz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9LG89ITE7cmV0dXJuIGZ1bmN0aW9uKHIpe2lmKCFvJiYobltyXT0hMCxPYmplY3Qua2V5cyhuKS5sZW5ndGg+PTIwMCkpe3ZhciBzPXQ/JyB3aXRoIHRoZSBpZCBvZiBcIicuY29uY2F0KHQsJ1wiJyk6XCJcIjtjb25zb2xlLndhcm4oXCJPdmVyIFwiLmNvbmNhdCgyMDAsXCIgY2xhc3NlcyB3ZXJlIGdlbmVyYXRlZCBmb3IgY29tcG9uZW50IFwiKS5jb25jYXQoZSkuY29uY2F0KHMsXCIuXFxuXCIpK1wiQ29uc2lkZXIgdXNpbmcgdGhlIGF0dHJzIG1ldGhvZCwgdG9nZXRoZXIgd2l0aCBhIHN0eWxlIG9iamVjdCBmb3IgZnJlcXVlbnRseSBjaGFuZ2VkIHN0eWxlcy5cXG5FeGFtcGxlOlxcbiAgY29uc3QgQ29tcG9uZW50ID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xcbiAgICBzdHlsZToge1xcbiAgICAgIGJhY2tncm91bmQ6IHByb3BzLmJhY2tncm91bmQsXFxuICAgIH0sXFxuICB9KSlgd2lkdGg6IDEwMCU7YFxcblxcbiAgPENvbXBvbmVudCAvPlwiKSxvPSEwLG49e319fX0oeSx2KSksc2UoRCxmdW5jdGlvbigpe3JldHVyblwiLlwiLmNvbmNhdChELnN0eWxlZENvbXBvbmVudElkKX0pLGMmJksoRCxlLHthdHRyczohMCxjb21wb25lbnRTdHlsZTohMCxkaXNwbGF5TmFtZTohMCxmb2xkZWRDb21wb25lbnRJZHM6ITAsc2hvdWxkRm9yd2FyZFByb3A6ITAsc3R5bGVkQ29tcG9uZW50SWQ6ITAsdGFyZ2V0OiEwfSksRH1mdW5jdGlvbiBldChlLHQpe2Zvcih2YXIgbj1bZVswXV0sbz0wLHI9dC5sZW5ndGg7bzxyO28rPTEpbi5wdXNoKHRbb10sZVtvKzFdKTtyZXR1cm4gbn12YXIgdHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oZSx7aXNDc3M6ITB9KX07ZnVuY3Rpb24gbnQodCl7Zm9yKHZhciBuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107aWYoUSh0KXx8b2UodCkpe3ZhciByPXQ7cmV0dXJuIHR0KEdlKGV0KEUsZShbcl0sbiwhMCkpKSl9dmFyIHM9dDtyZXR1cm4gMD09PW4ubGVuZ3RoJiYxPT09cy5sZW5ndGgmJlwic3RyaW5nXCI9PXR5cGVvZiBzWzBdP0dlKHMpOnR0KEdlKGV0KHMsbikpKX1mdW5jdGlvbiBvdChuLG8scil7aWYodm9pZCAwPT09ciYmKHI9TiksIW8pdGhyb3cgY2UoMSxvKTt2YXIgcz1mdW5jdGlvbih0KXtmb3IodmFyIHM9W10saT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspc1tpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gbihvLHIsbnQuYXBwbHkodm9pZCAwLGUoW3RdLHMsITEpKSl9O3JldHVybiBzLmF0dHJzPWZ1bmN0aW9uKGUpe3JldHVybiBvdChuLG8sdCh0KHt9LHIpLHthdHRyczpBcnJheS5wcm90b3R5cGUuY29uY2F0KHIuYXR0cnMsZSkuZmlsdGVyKEJvb2xlYW4pfSkpfSxzLndpdGhDb25maWc9ZnVuY3Rpb24oZSl7cmV0dXJuIG90KG4sbyx0KHQoe30sciksZSkpfSxzfXZhciBydD1mdW5jdGlvbihlKXtyZXR1cm4gb3QoUWUsZSl9LHN0PXJ0O18uZm9yRWFjaChmdW5jdGlvbihlKXtzdFtlXT1ydChlKX0pO3ZhciBpdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnJ1bGVzPWUsdGhpcy5jb21wb25lbnRJZD10LHRoaXMuaXNTdGF0aWM9WWUoZSksQ2UucmVnaXN0ZXJJZCh0aGlzLmNvbXBvbmVudElkKzEpfXJldHVybiBlLnByb3RvdHlwZS5jcmVhdGVTdHlsZXM9ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIHI9byhuZShHZSh0aGlzLnJ1bGVzLHQsbixvKSksXCJcIikscz10aGlzLmNvbXBvbmVudElkK2U7bi5pbnNlcnRSdWxlcyhzLHMscil9LGUucHJvdG90eXBlLnJlbW92ZVN0eWxlcz1mdW5jdGlvbihlLHQpe3QuY2xlYXJSdWxlcyh0aGlzLmNvbXBvbmVudElkK2UpfSxlLnByb3RvdHlwZS5yZW5kZXJTdHlsZXM9ZnVuY3Rpb24oZSx0LG4sbyl7ZT4yJiZDZS5yZWdpc3RlcklkKHRoaXMuY29tcG9uZW50SWQrZSksdGhpcy5yZW1vdmVTdHlsZXMoZSxuKSx0aGlzLmNyZWF0ZVN0eWxlcyhlLHQsbixvKX0sZX0oKTtmdW5jdGlvbiBhdChuKXtmb3IodmFyIHI9W10scz0xO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspcltzLTFdPWFyZ3VtZW50c1tzXTt2YXIgaT1udC5hcHBseSh2b2lkIDAsZShbbl0sciwhMSkpLGE9XCJzYy1nbG9iYWwtXCIuY29uY2F0KHgoSlNPTi5zdHJpbmdpZnkoaSkpKSxjPW5ldyBpdChpLGEpO1wicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmIoYSk7dmFyIGw9ZnVuY3Rpb24oZSl7dmFyIHQ9VmUoKSxuPW8udXNlQ29udGV4dChIZSkscj1vLnVzZVJlZih0LnN0eWxlU2hlZXQuYWxsb2NhdGVHU0luc3RhbmNlKGEpKS5jdXJyZW50O3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJm8uQ2hpbGRyZW4uY291bnQoZS5jaGlsZHJlbikmJmNvbnNvbGUud2FybihcIlRoZSBnbG9iYWwgc3R5bGUgY29tcG9uZW50IFwiLmNvbmNhdChhLFwiIHdhcyBnaXZlbiBjaGlsZCBKU1guIGNyZWF0ZUdsb2JhbFN0eWxlIGRvZXMgbm90IHJlbmRlciBjaGlsZHJlbi5cIikpLFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmkuc29tZShmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmLTEhPT1lLmluZGV4T2YoXCJAaW1wb3J0XCIpfSkmJmNvbnNvbGUud2FybihcIlBsZWFzZSBkbyBub3QgdXNlIEBpbXBvcnQgQ1NTIHN5bnRheCBpbiBjcmVhdGVHbG9iYWxTdHlsZSBhdCB0aGlzIHRpbWUsIGFzIHRoZSBDU1NPTSBBUElzIHdlIHVzZSBpbiBwcm9kdWN0aW9uIGRvIG5vdCBoYW5kbGUgaXQgd2VsbC4gSW5zdGVhZCwgd2UgcmVjb21tZW5kIHVzaW5nIGEgbGlicmFyeSBzdWNoIGFzIHJlYWN0LWhlbG1ldCB0byBpbmplY3QgYSB0eXBpY2FsIDxsaW5rPiBtZXRhIHRhZyB0byB0aGUgc3R5bGVzaGVldCwgb3Igc2ltcGx5IGVtYmVkZGluZyBpdCBtYW51YWxseSBpbiB5b3VyIGluZGV4Lmh0bWwgPGhlYWQ+IHNlY3Rpb24gZm9yIGEgc2ltcGxlciBhcHAuXCIpLHQuc3R5bGVTaGVldC5zZXJ2ZXImJnUocixlLHQuc3R5bGVTaGVldCxuLHQuc3R5bGlzKSxvLnVzZUxheW91dEVmZmVjdChmdW5jdGlvbigpe2lmKCF0LnN0eWxlU2hlZXQuc2VydmVyKXJldHVybiB1KHIsZSx0LnN0eWxlU2hlZXQsbix0LnN0eWxpcyksZnVuY3Rpb24oKXtyZXR1cm4gYy5yZW1vdmVTdHlsZXMocix0LnN0eWxlU2hlZXQpfX0sW3IsZSx0LnN0eWxlU2hlZXQsbix0LnN0eWxpc10pLG51bGx9O2Z1bmN0aW9uIHUoZSxuLG8scixzKXtpZihjLmlzU3RhdGljKWMucmVuZGVyU3R5bGVzKGUsZyxvLHMpO2Vsc2V7dmFyIGk9dCh0KHt9LG4pLHt0aGVtZTpQKG4scixsLmRlZmF1bHRQcm9wcyl9KTtjLnJlbmRlclN0eWxlcyhlLGksbyxzKX19cmV0dXJuIG8ubWVtbyhsKX1mdW5jdGlvbiBjdCh0KXtmb3IodmFyIG49W10sbz0xO288YXJndW1lbnRzLmxlbmd0aDtvKyspbltvLTFdPWFyZ3VtZW50c1tvXTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZcIlJlYWN0TmF0aXZlXCI9PT1uYXZpZ2F0b3IucHJvZHVjdCYmY29uc29sZS53YXJuKFwiYGtleWZyYW1lc2AgY2Fubm90IGJlIHVzZWQgb24gUmVhY3ROYXRpdmUsIG9ubHkgb24gdGhlIHdlYi4gVG8gZG8gYW5pbWF0aW9uIGluIFJlYWN0TmF0aXZlIHBsZWFzZSB1c2UgQW5pbWF0ZWQuXCIpO3ZhciByPW5lKG50LmFwcGx5KHZvaWQgMCxlKFt0XSxuLCExKSkpLHM9eChyKTtyZXR1cm4gbmV3IEZlKHMscil9ZnVuY3Rpb24gbHQoZSl7dmFyIG49by5mb3J3YXJkUmVmKGZ1bmN0aW9uKG4scil7dmFyIHM9UChuLG8udXNlQ29udGV4dChIZSksZS5kZWZhdWx0UHJvcHMpO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJnZvaWQgMD09PXMmJmNvbnNvbGUud2FybignW3dpdGhUaGVtZV0gWW91IGFyZSBub3QgdXNpbmcgYSBUaGVtZVByb3ZpZGVyIG5vciBwYXNzaW5nIGEgdGhlbWUgcHJvcCBvciBhIHRoZW1lIGluIGRlZmF1bHRQcm9wcyBpbiBjb21wb25lbnQgY2xhc3MgXCInLmNvbmNhdChWKGUpLCdcIicpKSxvLmNyZWF0ZUVsZW1lbnQoZSx0KHt9LG4se3RoZW1lOnMscmVmOnJ9KSl9KTtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYobi5kaXNwbGF5TmFtZT1cIldpdGhUaGVtZShcIi5jb25jYXQoVihlKSxcIilcIikpLEsobixlKX12YXIgdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIGU9dGhpczt0aGlzLl9lbWl0U2hlZXRDU1M9ZnVuY3Rpb24oKXt2YXIgdD1lLmluc3RhbmNlLnRvU3RyaW5nKCksbj1TZSgpLG89bmUoW24mJidub25jZT1cIicuY29uY2F0KG4sJ1wiJyksXCJcIi5jb25jYXQoZiwnPVwidHJ1ZVwiJyksXCJcIi5jb25jYXQoXCJkYXRhLXN0eWxlZC12ZXJzaW9uXCIsJz1cIicpLmNvbmNhdChcIjYuMC43XCIsJ1wiJyldLmZpbHRlcihCb29sZWFuKSxcIiBcIik7cmV0dXJuXCI8c3R5bGUgXCIuY29uY2F0KG8sXCI+XCIpLmNvbmNhdCh0LFwiPC9zdHlsZT5cIil9LHRoaXMuZ2V0U3R5bGVUYWdzPWZ1bmN0aW9uKCl7aWYoZS5zZWFsZWQpdGhyb3cgY2UoMik7cmV0dXJuIGUuX2VtaXRTaGVldENTUygpfSx0aGlzLmdldFN0eWxlRWxlbWVudD1mdW5jdGlvbigpe3ZhciBuO2lmKGUuc2VhbGVkKXRocm93IGNlKDIpO3ZhciByPSgobj17fSlbZl09XCJcIixuW1wiZGF0YS1zdHlsZWQtdmVyc2lvblwiXT1cIjYuMC43XCIsbi5kYW5nZXJvdXNseVNldElubmVySFRNTD17X19odG1sOmUuaW5zdGFuY2UudG9TdHJpbmcoKX0sbikscz1TZSgpO3JldHVybiBzJiYoci5ub25jZT1zKSxbby5jcmVhdGVFbGVtZW50KFwic3R5bGVcIix0KHt9LHIse2tleTpcInNjLTAtMFwifSkpXX0sdGhpcy5zZWFsPWZ1bmN0aW9uKCl7ZS5zZWFsZWQ9ITB9LHRoaXMuaW5zdGFuY2U9bmV3IENlKHtpc1NlcnZlcjohMH0pLHRoaXMuc2VhbGVkPSExfXJldHVybiBlLnByb3RvdHlwZS5jb2xsZWN0U3R5bGVzPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2VhbGVkKXRocm93IGNlKDIpO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoTWUse3NoZWV0OnRoaXMuaW5zdGFuY2V9LGUpfSxlLnByb3RvdHlwZS5pbnRlcmxlYXZlV2l0aE5vZGVTdHJlYW09ZnVuY3Rpb24oZSl7dGhyb3cgY2UoMyl9LGV9KCkscHQ9e1N0eWxlU2hlZXQ6Q2UsbWFpblNoZWV0OlJlfTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZcIlJlYWN0TmF0aXZlXCI9PT1uYXZpZ2F0b3IucHJvZHVjdCYmY29uc29sZS53YXJuKFwiSXQgbG9va3MgbGlrZSB5b3UndmUgaW1wb3J0ZWQgJ3N0eWxlZC1jb21wb25lbnRzJyBvbiBSZWFjdCBOYXRpdmUuXFxuUGVyaGFwcyB5b3UncmUgbG9va2luZyB0byBpbXBvcnQgJ3N0eWxlZC1jb21wb25lbnRzL25hdGl2ZSc/XFxuUmVhZCBtb3JlIGFib3V0IHRoaXMgYXQgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYmFzaWNzI3JlYWN0LW5hdGl2ZVwiKTt2YXIgZHQ9XCJfX3NjLVwiLmNvbmNhdChmLFwiX19cIik7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ0ZXN0XCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvd1tkdF18fCh3aW5kb3dbZHRdPTApLDE9PT13aW5kb3dbZHRdJiZjb25zb2xlLndhcm4oXCJJdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzZXZlcmFsIGluc3RhbmNlcyBvZiAnc3R5bGVkLWNvbXBvbmVudHMnIGluaXRpYWxpemVkIGluIHRoaXMgYXBwbGljYXRpb24uIFRoaXMgbWF5IGNhdXNlIGR5bmFtaWMgc3R5bGVzIHRvIG5vdCByZW5kZXIgcHJvcGVybHksIGVycm9ycyBkdXJpbmcgdGhlIHJlaHlkcmF0aW9uIHByb2Nlc3MsIGEgbWlzc2luZyB0aGVtZSBwcm9wLCBhbmQgbWFrZXMgeW91ciBhcHBsaWNhdGlvbiBiaWdnZXIgd2l0aG91dCBnb29kIHJlYXNvbi5cXG5cXG5TZWUgaHR0cHM6Ly9zLWMuc2gvMkJBWHplZCBmb3IgbW9yZSBpbmZvLlwiKSx3aW5kb3dbZHRdKz0xKTtleHBvcnR7dXQgYXMgU2VydmVyU3R5bGVTaGVldCxqZSBhcyBTdHlsZVNoZWV0Q29uc3VtZXIsa2UgYXMgU3R5bGVTaGVldENvbnRleHQsTWUgYXMgU3R5bGVTaGVldE1hbmFnZXIsVWUgYXMgVGhlbWVDb25zdW1lcixIZSBhcyBUaGVtZUNvbnRleHQsWGUgYXMgVGhlbWVQcm92aWRlcixwdCBhcyBfX1BSSVZBVEVfXyxhdCBhcyBjcmVhdGVHbG9iYWxTdHlsZSxudCBhcyBjc3Msc3QgYXMgZGVmYXVsdCxlZSBhcyBpc1N0eWxlZENvbXBvbmVudCxjdCBhcyBrZXlmcmFtZXMsc3QgYXMgc3R5bGVkLEplIGFzIHVzZVRoZW1lLG0gYXMgdmVyc2lvbixsdCBhcyB3aXRoVGhlbWV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVkLWNvbXBvbmVudHMuYnJvd3Nlci5lc20uanMubWFwXG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNlbGxFeHRlbmRlZCA9IGV4cG9ydHMuQ2VsbEJhc2UgPSB2b2lkIDA7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBtZWRpYV8xID0gcmVxdWlyZShcIi4vbWVkaWFcIik7XG5leHBvcnRzLkNlbGxCYXNlID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdGxpbmUtaGVpZ2h0OiBub3JtYWw7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRsaW5lLWhlaWdodDogbm9ybWFsO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lLCBoZWFkQ2VsbCA9IF9hLmhlYWRDZWxsO1xuICAgIHJldHVybiB0aGVtZVtoZWFkQ2VsbCA/ICdoZWFkQ2VsbHMnIDogJ2NlbGxzJ10uc3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgbm9QYWRkaW5nID0gX2Eubm9QYWRkaW5nO1xuICAgIHJldHVybiBub1BhZGRpbmcgJiYgJ3BhZGRpbmc6IDAnO1xufSk7XG4vLyBGbGV4IGNhbGN1bGF0aW9uc1xuZXhwb3J0cy5DZWxsRXh0ZW5kZWQgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0KShleHBvcnRzLkNlbGxCYXNlKSh0ZW1wbGF0ZU9iamVjdF83IHx8ICh0ZW1wbGF0ZU9iamVjdF83ID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZmxleC1ncm93OiBcIiwgXCI7XFxuXFx0ZmxleC1zaHJpbms6IDA7XFxuXFx0ZmxleC1iYXNpczogMDtcXG5cXHRtYXgtd2lkdGg6IFwiLCBcIjtcXG5cXHRtaW4td2lkdGg6IFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFxuXFx0LyogaGFuZGxlIGhpZGluZyBjZWxscyAqL1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdGZsZXgtZ3JvdzogXCIsIFwiO1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcdGZsZXgtYmFzaXM6IDA7XFxuXFx0bWF4LXdpZHRoOiBcIiwgXCI7XFxuXFx0bWluLXdpZHRoOiBcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcblxcdC8qIGhhbmRsZSBoaWRpbmcgY2VsbHMgKi9cXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBidXR0b24gPSBfYS5idXR0b24sIGdyb3cgPSBfYS5ncm93O1xuICAgIHJldHVybiAoZ3JvdyA9PT0gMCB8fCBidXR0b24gPyAwIDogZ3JvdyB8fCAxKTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBtYXhXaWR0aCA9IF9hLm1heFdpZHRoO1xuICAgIHJldHVybiBtYXhXaWR0aCB8fCAnMTAwJSc7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgbWluV2lkdGggPSBfYS5taW5XaWR0aDtcbiAgICByZXR1cm4gbWluV2lkdGggfHwgJzEwMHB4Jztcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB3aWR0aCA9IF9hLndpZHRoO1xuICAgIHJldHVybiB3aWR0aCAmJiAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRcXHRcXHRtaW4td2lkdGg6IFwiLCBcIjtcXG5cXHRcXHRcXHRtYXgtd2lkdGg6IFwiLCBcIjtcXG5cXHRcXHRcIl0sIFtcIlxcblxcdFxcdFxcdG1pbi13aWR0aDogXCIsIFwiO1xcblxcdFxcdFxcdG1heC13aWR0aDogXCIsIFwiO1xcblxcdFxcdFwiXSkpLCB3aWR0aCwgd2lkdGgpO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHJpZ2h0ID0gX2EucmlnaHQ7XG4gICAgcmV0dXJuIHJpZ2h0ICYmICdqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kJztcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBidXR0b24gPSBfYS5idXR0b24sIGNlbnRlciA9IF9hLmNlbnRlcjtcbiAgICByZXR1cm4gKGNlbnRlciB8fCBidXR0b24pICYmICdqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcic7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgY29tcGFjdCA9IF9hLmNvbXBhY3QsIGJ1dHRvbiA9IF9hLmJ1dHRvbjtcbiAgICByZXR1cm4gKGNvbXBhY3QgfHwgYnV0dG9uKSAmJiAncGFkZGluZzogMCc7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgaGlkZSA9IF9hLmhpZGU7XG4gICAgcmV0dXJuIGhpZGUgJiZcbiAgICAgICAgaGlkZSA9PT0gJ3NtJyAmJiBtZWRpYV8xLm1lZGlhLnNtKHRlbXBsYXRlT2JqZWN0XzMgfHwgKHRlbXBsYXRlT2JqZWN0XzMgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIFwiXSwgW1wiXFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICBcIl0pKSk7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgaGlkZSA9IF9hLmhpZGU7XG4gICAgcmV0dXJuIGhpZGUgJiZcbiAgICAgICAgaGlkZSA9PT0gJ21kJyAmJiBtZWRpYV8xLm1lZGlhLm1kKHRlbXBsYXRlT2JqZWN0XzQgfHwgKHRlbXBsYXRlT2JqZWN0XzQgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIFwiXSwgW1wiXFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICBcIl0pKSk7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgaGlkZSA9IF9hLmhpZGU7XG4gICAgcmV0dXJuIGhpZGUgJiZcbiAgICAgICAgaGlkZSA9PT0gJ2xnJyAmJiBtZWRpYV8xLm1lZGlhLmxnKHRlbXBsYXRlT2JqZWN0XzUgfHwgKHRlbXBsYXRlT2JqZWN0XzUgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIFwiXSwgW1wiXFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICBcIl0pKSk7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgaGlkZSA9IF9hLmhpZGU7XG4gICAgcmV0dXJuIGhpZGUgJiZcbiAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihoaWRlKSAmJiBtZWRpYV8xLm1lZGlhLmN1c3RvbShoaWRlKSh0ZW1wbGF0ZU9iamVjdF82IHx8ICh0ZW1wbGF0ZU9iamVjdF82ID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICBcIl0sIFtcIlxcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgXCJdKSkpO1xufSk7XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMiwgdGVtcGxhdGVPYmplY3RfMywgdGVtcGxhdGVPYmplY3RfNCwgdGVtcGxhdGVPYmplY3RfNSwgdGVtcGxhdGVPYmplY3RfNiwgdGVtcGxhdGVPYmplY3RfNztcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIGRlZmF1bHRDb21wb25lbnROYW1lID0gJ2lucHV0JztcbnZhciBjYWxjdWxhdGVCYXNlU3R5bGUgPSBmdW5jdGlvbiAoZGlzYWJsZWQpIHsgcmV0dXJuIChfX2Fzc2lnbihfX2Fzc2lnbih7IGZvbnRTaXplOiAnMThweCcgfSwgKCFkaXNhYmxlZCAmJiB7IGN1cnNvcjogJ3BvaW50ZXInIH0pKSwgeyBwYWRkaW5nOiAwLCBtYXJnaW5Ub3A6ICcxcHgnLCB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJywgcG9zaXRpb246ICdyZWxhdGl2ZScgfSkpOyB9O1xuZnVuY3Rpb24gQ2hlY2tib3goX2EpIHtcbiAgICB2YXIgbmFtZSA9IF9hLm5hbWUsIF9iID0gX2EuY29tcG9uZW50LCBjb21wb25lbnQgPSBfYiA9PT0gdm9pZCAwID8gZGVmYXVsdENvbXBvbmVudE5hbWUgOiBfYiwgX2MgPSBfYS5jb21wb25lbnRPcHRpb25zLCBjb21wb25lbnRPcHRpb25zID0gX2MgPT09IHZvaWQgMCA/IHsgc3R5bGU6IHt9IH0gOiBfYywgX2QgPSBfYS5pbmRldGVybWluYXRlLCBpbmRldGVybWluYXRlID0gX2QgPT09IHZvaWQgMCA/IGZhbHNlIDogX2QsIF9lID0gX2EuY2hlY2tlZCwgY2hlY2tlZCA9IF9lID09PSB2b2lkIDAgPyBmYWxzZSA6IF9lLCBfZiA9IF9hLmRpc2FibGVkLCBkaXNhYmxlZCA9IF9mID09PSB2b2lkIDAgPyBmYWxzZSA6IF9mLCBfZyA9IF9hLm9uQ2xpY2ssIG9uQ2xpY2sgPSBfZyA9PT0gdm9pZCAwID8gdXRpbF8xLm5vb3AgOiBfZztcbiAgICB2YXIgc2V0Q2hlY2tib3hSZWYgPSBmdW5jdGlvbiAoY2hlY2tib3gpIHtcbiAgICAgICAgaWYgKGNoZWNrYm94KSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIGNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgVGFnTmFtZSA9IGNvbXBvbmVudDtcbiAgICB2YXIgYmFzZVN0eWxlID0gVGFnTmFtZSAhPT0gZGVmYXVsdENvbXBvbmVudE5hbWUgPyBjb21wb25lbnRPcHRpb25zLnN0eWxlIDogY2FsY3VsYXRlQmFzZVN0eWxlKGRpc2FibGVkKTtcbiAgICB2YXIgcmVzb2x2ZWRDb21wb25lbnRPcHRpb25zID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiAoMCwgdXRpbF8xLmhhbmRsZUZ1bmN0aW9uUHJvcHMpKGNvbXBvbmVudE9wdGlvbnMsIGluZGV0ZXJtaW5hdGUpOyB9LCBbY29tcG9uZW50T3B0aW9ucywgaW5kZXRlcm1pbmF0ZV0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUYWdOYW1lXG4gICAgLy8gYWxsb3cgdGhpcyBjb21wb25lbnQgdG8gZnVsbHkgY29udHJvbCB0aGVzZSBvcHRpb25zXG4gICAgLCBfX2Fzc2lnbih7IFxuICAgICAgICAvLyBhbGxvdyB0aGlzIGNvbXBvbmVudCB0byBmdWxseSBjb250cm9sIHRoZXNlIG9wdGlvbnNcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLCByZWY6IHNldENoZWNrYm94UmVmLCBzdHlsZTogYmFzZVN0eWxlLCBvbkNsaWNrOiBkaXNhYmxlZCA/IHV0aWxfMS5ub29wIDogb25DbGljaywgbmFtZTogbmFtZSwgXCJhcmlhLWxhYmVsXCI6IG5hbWUsIGNoZWNrZWQ6IGNoZWNrZWQsIGRpc2FibGVkOiBkaXNhYmxlZCB9LCByZXNvbHZlZENvbXBvbmVudE9wdGlvbnMsIHsgb25DaGFuZ2U6IHV0aWxfMS5ub29wIH0pKSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSZWFjdC5tZW1vKENoZWNrYm94KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIHVzZVJUTF8xID0gcmVxdWlyZShcIi4vaG9va3MvdXNlUlRMXCIpO1xudmFyIFRpdGxlID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGZsZXg6IDEgMCBhdXRvO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRjb2xvcjogXCIsIFwiO1xcblxcdGZvbnQtc2l6ZTogXCIsIFwiO1xcblxcdGZvbnQtd2VpZ2h0OiA0MDA7XFxuXCJdLCBbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0ZmxleDogMSAwIGF1dG87XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdGNvbG9yOiBcIiwgXCI7XFxuXFx0Zm9udC1zaXplOiBcIiwgXCI7XFxuXFx0Zm9udC13ZWlnaHQ6IDQwMDtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmNvbnRleHRNZW51LmZvbnRDb2xvcjtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS5jb250ZXh0TWVudS5mb250U2l6ZTtcbn0pO1xudmFyIENvbnRleHRBY3Rpb25zID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8yIHx8ICh0ZW1wbGF0ZU9iamVjdF8yID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuXFx0ZmxleC13cmFwOiB3cmFwO1xcblwiXSwgW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuXFx0ZmxleC13cmFwOiB3cmFwO1xcblwiXSkpKTtcbnZhciBDb250ZXh0TWVudVN0eWxlID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8zIHx8ICh0ZW1wbGF0ZU9iamVjdF8zID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdHRvcDogMDtcXG5cXHRsZWZ0OiAwO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRib3gtc2l6aW5nOiBpbmhlcml0O1xcblxcdHotaW5kZXg6IDE7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHR0b3A6IDA7XFxuXFx0bGVmdDogMDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0Ym94LXNpemluZzogaW5oZXJpdDtcXG5cXHR6LWluZGV4OiAxO1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBydGwgPSBfYS5ydGw7XG4gICAgcmV0dXJuIHJ0bCAmJiAnZGlyZWN0aW9uOiBydGwnO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmNvbnRleHRNZW51LnN0eWxlO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWUsIHZpc2libGUgPSBfYS52aXNpYmxlO1xuICAgIHJldHVybiB2aXNpYmxlICYmIHRoZW1lLmNvbnRleHRNZW51LmFjdGl2ZVN0eWxlO1xufSk7XG52YXIgZ2VuZXJhdGVEZWZhdWx0Q29udGV4dFRpdGxlID0gZnVuY3Rpb24gKGNvbnRleHRNZXNzYWdlLCBzZWxlY3RlZENvdW50LCBydGwpIHtcbiAgICBpZiAoc2VsZWN0ZWRDb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGRhdHVtTmFtZSA9IHNlbGVjdGVkQ291bnQgPT09IDEgPyBjb250ZXh0TWVzc2FnZS5zaW5ndWxhciA6IGNvbnRleHRNZXNzYWdlLnBsdXJhbDtcbiAgICAvLyBUT0RPOiBhZGQgbW9jayBkb2N1bWVudCBydGwgdGVzdHNcbiAgICBpZiAocnRsKSB7XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChzZWxlY3RlZENvdW50LCBcIiBcIikuY29uY2F0KGNvbnRleHRNZXNzYWdlLm1lc3NhZ2UgfHwgJycsIFwiIFwiKS5jb25jYXQoZGF0dW1OYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KHNlbGVjdGVkQ291bnQsIFwiIFwiKS5jb25jYXQoZGF0dW1OYW1lLCBcIiBcIikuY29uY2F0KGNvbnRleHRNZXNzYWdlLm1lc3NhZ2UgfHwgJycpO1xufTtcbmZ1bmN0aW9uIENvbnRleHRNZW51KF9hKSB7XG4gICAgdmFyIGNvbnRleHRNZXNzYWdlID0gX2EuY29udGV4dE1lc3NhZ2UsIGNvbnRleHRBY3Rpb25zID0gX2EuY29udGV4dEFjdGlvbnMsIGNvbnRleHRDb21wb25lbnQgPSBfYS5jb250ZXh0Q29tcG9uZW50LCBzZWxlY3RlZENvdW50ID0gX2Euc2VsZWN0ZWRDb3VudCwgZGlyZWN0aW9uID0gX2EuZGlyZWN0aW9uO1xuICAgIHZhciBpc1JUTCA9ICgwLCB1c2VSVExfMS5kZWZhdWx0KShkaXJlY3Rpb24pO1xuICAgIHZhciB2aXNpYmxlID0gc2VsZWN0ZWRDb3VudCA+IDA7XG4gICAgaWYgKGNvbnRleHRDb21wb25lbnQpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRleHRNZW51U3R5bGUsIHsgdmlzaWJsZTogdmlzaWJsZSB9LCBSZWFjdC5jbG9uZUVsZW1lbnQoY29udGV4dENvbXBvbmVudCwgeyBzZWxlY3RlZENvdW50OiBzZWxlY3RlZENvdW50IH0pKSk7XG4gICAgfVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZXh0TWVudVN0eWxlLCB7IHZpc2libGU6IHZpc2libGUsIHJ0bDogaXNSVEwgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUaXRsZSwgbnVsbCwgZ2VuZXJhdGVEZWZhdWx0Q29udGV4dFRpdGxlKGNvbnRleHRNZXNzYWdlLCBzZWxlY3RlZENvdW50LCBpc1JUTCkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRleHRBY3Rpb25zLCBudWxsLCBjb250ZXh0QWN0aW9ucykpKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IENvbnRleHRNZW51O1xudmFyIHRlbXBsYXRlT2JqZWN0XzEsIHRlbXBsYXRlT2JqZWN0XzIsIHRlbXBsYXRlT2JqZWN0XzM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciB0YWJsZVJlZHVjZXJfMSA9IHJlcXVpcmUoXCIuL3RhYmxlUmVkdWNlclwiKTtcbnZhciBUYWJsZV8xID0gcmVxdWlyZShcIi4vVGFibGVcIik7XG52YXIgVGFibGVIZWFkXzEgPSByZXF1aXJlKFwiLi9UYWJsZUhlYWRcIik7XG52YXIgVGFibGVIZWFkUm93XzEgPSByZXF1aXJlKFwiLi9UYWJsZUhlYWRSb3dcIik7XG52YXIgVGFibGVSb3dfMSA9IHJlcXVpcmUoXCIuL1RhYmxlUm93XCIpO1xudmFyIFRhYmxlQ29sXzEgPSByZXF1aXJlKFwiLi9UYWJsZUNvbFwiKTtcbnZhciBUYWJsZUNvbENoZWNrYm94XzEgPSByZXF1aXJlKFwiLi9UYWJsZUNvbENoZWNrYm94XCIpO1xudmFyIFRhYmxlSGVhZGVyXzEgPSByZXF1aXJlKFwiLi9UYWJsZUhlYWRlclwiKTtcbnZhciBUYWJsZVN1YmhlYWRlcl8xID0gcmVxdWlyZShcIi4vVGFibGVTdWJoZWFkZXJcIik7XG52YXIgVGFibGVCb2R5XzEgPSByZXF1aXJlKFwiLi9UYWJsZUJvZHlcIik7XG52YXIgUmVzcG9uc2l2ZVdyYXBwZXJfMSA9IHJlcXVpcmUoXCIuL1Jlc3BvbnNpdmVXcmFwcGVyXCIpO1xudmFyIFByb2dyZXNzV3JhcHBlcl8xID0gcmVxdWlyZShcIi4vUHJvZ3Jlc3NXcmFwcGVyXCIpO1xudmFyIFRhYmxlV3JhcHBlcl8xID0gcmVxdWlyZShcIi4vVGFibGVXcmFwcGVyXCIpO1xudmFyIFRhYmxlQ29sRXhwYW5kZXJfMSA9IHJlcXVpcmUoXCIuL1RhYmxlQ29sRXhwYW5kZXJcIik7XG52YXIgQ2VsbF8xID0gcmVxdWlyZShcIi4vQ2VsbFwiKTtcbnZhciBOb0RhdGFXcmFwcGVyXzEgPSByZXF1aXJlKFwiLi9Ob0RhdGFXcmFwcGVyXCIpO1xudmFyIFBhZ2luYXRpb25fMSA9IHJlcXVpcmUoXCIuL1BhZ2luYXRpb25cIik7XG52YXIgdXNlRGlkVXBkYXRlRWZmZWN0XzEgPSByZXF1aXJlKFwiLi9ob29rcy91c2VEaWRVcGRhdGVFZmZlY3RcIik7XG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBkZWZhdWx0UHJvcHNfMSA9IHJlcXVpcmUoXCIuL2RlZmF1bHRQcm9wc1wiKTtcbnZhciBzdHlsZXNfMSA9IHJlcXVpcmUoXCIuL3N0eWxlc1wiKTtcbnZhciB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG52YXIgdXNlQ29sdW1uc18xID0gcmVxdWlyZShcIi4vaG9va3MvdXNlQ29sdW1uc1wiKTtcbmZ1bmN0aW9uIERhdGFUYWJsZShwcm9wcykge1xuICAgIHZhciBfYSA9IHByb3BzLmRhdGEsIGRhdGEgPSBfYSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmRhdGEgOiBfYSwgX2IgPSBwcm9wcy5jb2x1bW5zLCBjb2x1bW5zID0gX2IgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5jb2x1bW5zIDogX2IsIF9jID0gcHJvcHMudGl0bGUsIHRpdGxlID0gX2MgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy50aXRsZSA6IF9jLCBfZCA9IHByb3BzLmFjdGlvbnMsIGFjdGlvbnMgPSBfZCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmFjdGlvbnMgOiBfZCwgX2UgPSBwcm9wcy5rZXlGaWVsZCwga2V5RmllbGQgPSBfZSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmtleUZpZWxkIDogX2UsIF9mID0gcHJvcHMuc3RyaXBlZCwgc3RyaXBlZCA9IF9mID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc3RyaXBlZCA6IF9mLCBfZyA9IHByb3BzLmhpZ2hsaWdodE9uSG92ZXIsIGhpZ2hsaWdodE9uSG92ZXIgPSBfZyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmhpZ2hsaWdodE9uSG92ZXIgOiBfZywgX2ggPSBwcm9wcy5wb2ludGVyT25Ib3ZlciwgcG9pbnRlck9uSG92ZXIgPSBfaCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBvaW50ZXJPbkhvdmVyIDogX2gsIF9qID0gcHJvcHMuZGVuc2UsIGRlbnNlID0gX2ogPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5kZW5zZSA6IF9qLCBfayA9IHByb3BzLnNlbGVjdGFibGVSb3dzLCBzZWxlY3RhYmxlUm93cyA9IF9rID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZVJvd3MgOiBfaywgX2wgPSBwcm9wcy5zZWxlY3RhYmxlUm93c1NpbmdsZSwgc2VsZWN0YWJsZVJvd3NTaW5nbGUgPSBfbCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnNlbGVjdGFibGVSb3dzU2luZ2xlIDogX2wsIF9tID0gcHJvcHMuc2VsZWN0YWJsZVJvd3NIaWdobGlnaHQsIHNlbGVjdGFibGVSb3dzSGlnaGxpZ2h0ID0gX20gPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zZWxlY3RhYmxlUm93c0hpZ2hsaWdodCA6IF9tLCBfbyA9IHByb3BzLnNlbGVjdGFibGVSb3dzTm9TZWxlY3RBbGwsIHNlbGVjdGFibGVSb3dzTm9TZWxlY3RBbGwgPSBfbyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnNlbGVjdGFibGVSb3dzTm9TZWxlY3RBbGwgOiBfbywgX3AgPSBwcm9wcy5zZWxlY3RhYmxlUm93c1Zpc2libGVPbmx5LCBzZWxlY3RhYmxlUm93c1Zpc2libGVPbmx5ID0gX3AgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zZWxlY3RhYmxlUm93c1Zpc2libGVPbmx5IDogX3AsIF9xID0gcHJvcHMuc2VsZWN0YWJsZVJvd1NlbGVjdGVkLCBzZWxlY3RhYmxlUm93U2VsZWN0ZWQgPSBfcSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnNlbGVjdGFibGVSb3dTZWxlY3RlZCA6IF9xLCBfciA9IHByb3BzLnNlbGVjdGFibGVSb3dEaXNhYmxlZCwgc2VsZWN0YWJsZVJvd0Rpc2FibGVkID0gX3IgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zZWxlY3RhYmxlUm93RGlzYWJsZWQgOiBfciwgX3MgPSBwcm9wcy5zZWxlY3RhYmxlUm93c0NvbXBvbmVudCwgc2VsZWN0YWJsZVJvd3NDb21wb25lbnQgPSBfcyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnNlbGVjdGFibGVSb3dzQ29tcG9uZW50IDogX3MsIF90ID0gcHJvcHMuc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcywgc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcyA9IF90ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcyA6IF90LCBfdSA9IHByb3BzLm9uUm93RXhwYW5kVG9nZ2xlZCwgb25Sb3dFeHBhbmRUb2dnbGVkID0gX3UgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5vblJvd0V4cGFuZFRvZ2dsZWQgOiBfdSwgX3YgPSBwcm9wcy5vblNlbGVjdGVkUm93c0NoYW5nZSwgb25TZWxlY3RlZFJvd3NDaGFuZ2UgPSBfdiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm9uU2VsZWN0ZWRSb3dzQ2hhbmdlIDogX3YsIF93ID0gcHJvcHMuZXhwYW5kYWJsZUljb24sIGV4cGFuZGFibGVJY29uID0gX3cgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5leHBhbmRhYmxlSWNvbiA6IF93LCBfeCA9IHByb3BzLm9uQ2hhbmdlUm93c1BlclBhZ2UsIG9uQ2hhbmdlUm93c1BlclBhZ2UgPSBfeCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm9uQ2hhbmdlUm93c1BlclBhZ2UgOiBfeCwgX3kgPSBwcm9wcy5vbkNoYW5nZVBhZ2UsIG9uQ2hhbmdlUGFnZSA9IF95ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25DaGFuZ2VQYWdlIDogX3ksIF96ID0gcHJvcHMucGFnaW5hdGlvblNlcnZlciwgcGFnaW5hdGlvblNlcnZlciA9IF96ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvblNlcnZlciA6IF96LCBfMCA9IHByb3BzLnBhZ2luYXRpb25TZXJ2ZXJPcHRpb25zLCBwYWdpbmF0aW9uU2VydmVyT3B0aW9ucyA9IF8wID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvblNlcnZlck9wdGlvbnMgOiBfMCwgXzEgPSBwcm9wcy5wYWdpbmF0aW9uVG90YWxSb3dzLCBwYWdpbmF0aW9uVG90YWxSb3dzID0gXzEgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uVG90YWxSb3dzIDogXzEsIF8yID0gcHJvcHMucGFnaW5hdGlvbkRlZmF1bHRQYWdlLCBwYWdpbmF0aW9uRGVmYXVsdFBhZ2UgPSBfMiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25EZWZhdWx0UGFnZSA6IF8yLCBfMyA9IHByb3BzLnBhZ2luYXRpb25SZXNldERlZmF1bHRQYWdlLCBwYWdpbmF0aW9uUmVzZXREZWZhdWx0UGFnZSA9IF8zID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvblJlc2V0RGVmYXVsdFBhZ2UgOiBfMywgXzQgPSBwcm9wcy5wYWdpbmF0aW9uUGVyUGFnZSwgcGFnaW5hdGlvblBlclBhZ2UgPSBfNCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25QZXJQYWdlIDogXzQsIF81ID0gcHJvcHMucGFnaW5hdGlvblJvd3NQZXJQYWdlT3B0aW9ucywgcGFnaW5hdGlvblJvd3NQZXJQYWdlT3B0aW9ucyA9IF81ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvblJvd3NQZXJQYWdlT3B0aW9ucyA6IF81LCBfNiA9IHByb3BzLnBhZ2luYXRpb25JY29uTGFzdFBhZ2UsIHBhZ2luYXRpb25JY29uTGFzdFBhZ2UgPSBfNiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25JY29uTGFzdFBhZ2UgOiBfNiwgXzcgPSBwcm9wcy5wYWdpbmF0aW9uSWNvbkZpcnN0UGFnZSwgcGFnaW5hdGlvbkljb25GaXJzdFBhZ2UgPSBfNyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25JY29uRmlyc3RQYWdlIDogXzcsIF84ID0gcHJvcHMucGFnaW5hdGlvbkljb25OZXh0LCBwYWdpbmF0aW9uSWNvbk5leHQgPSBfOCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25JY29uTmV4dCA6IF84LCBfOSA9IHByb3BzLnBhZ2luYXRpb25JY29uUHJldmlvdXMsIHBhZ2luYXRpb25JY29uUHJldmlvdXMgPSBfOSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25JY29uUHJldmlvdXMgOiBfOSwgXzEwID0gcHJvcHMucGFnaW5hdGlvbkNvbXBvbmVudCwgcGFnaW5hdGlvbkNvbXBvbmVudCA9IF8xMCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25Db21wb25lbnQgOiBfMTAsIF8xMSA9IHByb3BzLnBhZ2luYXRpb25Db21wb25lbnRPcHRpb25zLCBwYWdpbmF0aW9uQ29tcG9uZW50T3B0aW9ucyA9IF8xMSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25Db21wb25lbnRPcHRpb25zIDogXzExLCBfMTIgPSBwcm9wcy5yZXNwb25zaXZlLCByZXNwb25zaXZlID0gXzEyID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucmVzcG9uc2l2ZSA6IF8xMiwgXzEzID0gcHJvcHMucHJvZ3Jlc3NQZW5kaW5nLCBwcm9ncmVzc1BlbmRpbmcgPSBfMTMgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wcm9ncmVzc1BlbmRpbmcgOiBfMTMsIF8xNCA9IHByb3BzLnByb2dyZXNzQ29tcG9uZW50LCBwcm9ncmVzc0NvbXBvbmVudCA9IF8xNCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnByb2dyZXNzQ29tcG9uZW50IDogXzE0LCBfMTUgPSBwcm9wcy5wZXJzaXN0VGFibGVIZWFkLCBwZXJzaXN0VGFibGVIZWFkID0gXzE1ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGVyc2lzdFRhYmxlSGVhZCA6IF8xNSwgXzE2ID0gcHJvcHMubm9EYXRhQ29tcG9uZW50LCBub0RhdGFDb21wb25lbnQgPSBfMTYgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5ub0RhdGFDb21wb25lbnQgOiBfMTYsIF8xNyA9IHByb3BzLmRpc2FibGVkLCBkaXNhYmxlZCA9IF8xNyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmRpc2FibGVkIDogXzE3LCBfMTggPSBwcm9wcy5ub1RhYmxlSGVhZCwgbm9UYWJsZUhlYWQgPSBfMTggPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5ub1RhYmxlSGVhZCA6IF8xOCwgXzE5ID0gcHJvcHMubm9IZWFkZXIsIG5vSGVhZGVyID0gXzE5ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMubm9IZWFkZXIgOiBfMTksIF8yMCA9IHByb3BzLmZpeGVkSGVhZGVyLCBmaXhlZEhlYWRlciA9IF8yMCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmZpeGVkSGVhZGVyIDogXzIwLCBfMjEgPSBwcm9wcy5maXhlZEhlYWRlclNjcm9sbEhlaWdodCwgZml4ZWRIZWFkZXJTY3JvbGxIZWlnaHQgPSBfMjEgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5maXhlZEhlYWRlclNjcm9sbEhlaWdodCA6IF8yMSwgXzIyID0gcHJvcHMucGFnaW5hdGlvbiwgcGFnaW5hdGlvbiA9IF8yMiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb24gOiBfMjIsIF8yMyA9IHByb3BzLnN1YkhlYWRlciwgc3ViSGVhZGVyID0gXzIzID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc3ViSGVhZGVyIDogXzIzLCBfMjQgPSBwcm9wcy5zdWJIZWFkZXJBbGlnbiwgc3ViSGVhZGVyQWxpZ24gPSBfMjQgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zdWJIZWFkZXJBbGlnbiA6IF8yNCwgXzI1ID0gcHJvcHMuc3ViSGVhZGVyV3JhcCwgc3ViSGVhZGVyV3JhcCA9IF8yNSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnN1YkhlYWRlcldyYXAgOiBfMjUsIF8yNiA9IHByb3BzLnN1YkhlYWRlckNvbXBvbmVudCwgc3ViSGVhZGVyQ29tcG9uZW50ID0gXzI2ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc3ViSGVhZGVyQ29tcG9uZW50IDogXzI2LCBfMjcgPSBwcm9wcy5ub0NvbnRleHRNZW51LCBub0NvbnRleHRNZW51ID0gXzI3ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMubm9Db250ZXh0TWVudSA6IF8yNywgXzI4ID0gcHJvcHMuY29udGV4dE1lc3NhZ2UsIGNvbnRleHRNZXNzYWdlID0gXzI4ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuY29udGV4dE1lc3NhZ2UgOiBfMjgsIF8yOSA9IHByb3BzLmNvbnRleHRBY3Rpb25zLCBjb250ZXh0QWN0aW9ucyA9IF8yOSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmNvbnRleHRBY3Rpb25zIDogXzI5LCBfMzAgPSBwcm9wcy5jb250ZXh0Q29tcG9uZW50LCBjb250ZXh0Q29tcG9uZW50ID0gXzMwID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuY29udGV4dENvbXBvbmVudCA6IF8zMCwgXzMxID0gcHJvcHMuZXhwYW5kYWJsZVJvd3MsIGV4cGFuZGFibGVSb3dzID0gXzMxID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZXhwYW5kYWJsZVJvd3MgOiBfMzEsIF8zMiA9IHByb3BzLm9uUm93Q2xpY2tlZCwgb25Sb3dDbGlja2VkID0gXzMyID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25Sb3dDbGlja2VkIDogXzMyLCBfMzMgPSBwcm9wcy5vblJvd0RvdWJsZUNsaWNrZWQsIG9uUm93RG91YmxlQ2xpY2tlZCA9IF8zMyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm9uUm93RG91YmxlQ2xpY2tlZCA6IF8zMywgXzM0ID0gcHJvcHMub25Sb3dNb3VzZUVudGVyLCBvblJvd01vdXNlRW50ZXIgPSBfMzQgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5vblJvd01vdXNlRW50ZXIgOiBfMzQsIF8zNSA9IHByb3BzLm9uUm93TW91c2VMZWF2ZSwgb25Sb3dNb3VzZUxlYXZlID0gXzM1ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25Sb3dNb3VzZUxlYXZlIDogXzM1LCBfMzYgPSBwcm9wcy5zb3J0SWNvbiwgc29ydEljb24gPSBfMzYgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zb3J0SWNvbiA6IF8zNiwgXzM3ID0gcHJvcHMub25Tb3J0LCBvblNvcnQgPSBfMzcgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5vblNvcnQgOiBfMzcsIF8zOCA9IHByb3BzLnNvcnRGdW5jdGlvbiwgc29ydEZ1bmN0aW9uID0gXzM4ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc29ydEZ1bmN0aW9uIDogXzM4LCBfMzkgPSBwcm9wcy5zb3J0U2VydmVyLCBzb3J0U2VydmVyID0gXzM5ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc29ydFNlcnZlciA6IF8zOSwgXzQwID0gcHJvcHMuZXhwYW5kYWJsZVJvd3NDb21wb25lbnQsIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50ID0gXzQwID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZXhwYW5kYWJsZVJvd3NDb21wb25lbnQgOiBfNDAsIF80MSA9IHByb3BzLmV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMgPSBfNDEgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5leHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzIDogXzQxLCBfNDIgPSBwcm9wcy5leHBhbmRhYmxlUm93RGlzYWJsZWQsIGV4cGFuZGFibGVSb3dEaXNhYmxlZCA9IF80MiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmV4cGFuZGFibGVSb3dEaXNhYmxlZCA6IF80MiwgXzQzID0gcHJvcHMuZXhwYW5kYWJsZVJvd3NIaWRlRXhwYW5kZXIsIGV4cGFuZGFibGVSb3dzSGlkZUV4cGFuZGVyID0gXzQzID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZXhwYW5kYWJsZVJvd3NIaWRlRXhwYW5kZXIgOiBfNDMsIF80NCA9IHByb3BzLmV4cGFuZE9uUm93Q2xpY2tlZCwgZXhwYW5kT25Sb3dDbGlja2VkID0gXzQ0ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZXhwYW5kT25Sb3dDbGlja2VkIDogXzQ0LCBfNDUgPSBwcm9wcy5leHBhbmRPblJvd0RvdWJsZUNsaWNrZWQsIGV4cGFuZE9uUm93RG91YmxlQ2xpY2tlZCA9IF80NSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmV4cGFuZE9uUm93RG91YmxlQ2xpY2tlZCA6IF80NSwgXzQ2ID0gcHJvcHMuZXhwYW5kYWJsZVJvd0V4cGFuZGVkLCBleHBhbmRhYmxlUm93RXhwYW5kZWQgPSBfNDYgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5leHBhbmRhYmxlUm93RXhwYW5kZWQgOiBfNDYsIF80NyA9IHByb3BzLmV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXMsIGV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXMgPSBfNDcgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5leHBhbmRhYmxlSW5oZXJpdENvbmRpdGlvbmFsU3R5bGVzIDogXzQ3LCBfNDggPSBwcm9wcy5kZWZhdWx0U29ydEZpZWxkSWQsIGRlZmF1bHRTb3J0RmllbGRJZCA9IF80OCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmRlZmF1bHRTb3J0RmllbGRJZCA6IF80OCwgXzQ5ID0gcHJvcHMuZGVmYXVsdFNvcnRBc2MsIGRlZmF1bHRTb3J0QXNjID0gXzQ5ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZGVmYXVsdFNvcnRBc2MgOiBfNDksIF81MCA9IHByb3BzLmNsZWFyU2VsZWN0ZWRSb3dzLCBjbGVhclNlbGVjdGVkUm93cyA9IF81MCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmNsZWFyU2VsZWN0ZWRSb3dzIDogXzUwLCBfNTEgPSBwcm9wcy5jb25kaXRpb25hbFJvd1N0eWxlcywgY29uZGl0aW9uYWxSb3dTdHlsZXMgPSBfNTEgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5jb25kaXRpb25hbFJvd1N0eWxlcyA6IF81MSwgXzUyID0gcHJvcHMudGhlbWUsIHRoZW1lID0gXzUyID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMudGhlbWUgOiBfNTIsIF81MyA9IHByb3BzLmN1c3RvbVN0eWxlcywgY3VzdG9tU3R5bGVzID0gXzUzID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuY3VzdG9tU3R5bGVzIDogXzUzLCBfNTQgPSBwcm9wcy5kaXJlY3Rpb24sIGRpcmVjdGlvbiA9IF81NCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmRpcmVjdGlvbiA6IF81NCwgXzU1ID0gcHJvcHMub25Db2x1bW5PcmRlckNoYW5nZSwgb25Db2x1bW5PcmRlckNoYW5nZSA9IF81NSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm9uQ29sdW1uT3JkZXJDaGFuZ2UgOiBfNTUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgXzU2ID0gKDAsIHVzZUNvbHVtbnNfMS5kZWZhdWx0KShjb2x1bW5zLCBvbkNvbHVtbk9yZGVyQ2hhbmdlLCBkZWZhdWx0U29ydEZpZWxkSWQsIGRlZmF1bHRTb3J0QXNjKSwgdGFibGVDb2x1bW5zID0gXzU2LnRhYmxlQ29sdW1ucywgZHJhZ2dpbmdDb2x1bW5JZCA9IF81Ni5kcmFnZ2luZ0NvbHVtbklkLCBoYW5kbGVEcmFnU3RhcnQgPSBfNTYuaGFuZGxlRHJhZ1N0YXJ0LCBoYW5kbGVEcmFnRW50ZXIgPSBfNTYuaGFuZGxlRHJhZ0VudGVyLCBoYW5kbGVEcmFnT3ZlciA9IF81Ni5oYW5kbGVEcmFnT3ZlciwgaGFuZGxlRHJhZ0xlYXZlID0gXzU2LmhhbmRsZURyYWdMZWF2ZSwgaGFuZGxlRHJhZ0VuZCA9IF81Ni5oYW5kbGVEcmFnRW5kLCBkZWZhdWx0U29ydERpcmVjdGlvbiA9IF81Ni5kZWZhdWx0U29ydERpcmVjdGlvbiwgZGVmYXVsdFNvcnRDb2x1bW4gPSBfNTYuZGVmYXVsdFNvcnRDb2x1bW47XG4gICAgdmFyIF81NyA9IFJlYWN0LnVzZVJlZHVjZXIodGFibGVSZWR1Y2VyXzEudGFibGVSZWR1Y2VyLCB7XG4gICAgICAgIGFsbFNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWRDb3VudDogMCxcbiAgICAgICAgc2VsZWN0ZWRSb3dzOiBbXSxcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW46IGRlZmF1bHRTb3J0Q29sdW1uLFxuICAgICAgICB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogZmFsc2UsXG4gICAgICAgIHNvcnREaXJlY3Rpb246IGRlZmF1bHRTb3J0RGlyZWN0aW9uLFxuICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbkRlZmF1bHRQYWdlLFxuICAgICAgICByb3dzUGVyUGFnZTogcGFnaW5hdGlvblBlclBhZ2UsXG4gICAgICAgIHNlbGVjdGVkUm93c0ZsYWc6IGZhbHNlLFxuICAgICAgICBjb250ZXh0TWVzc2FnZTogZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmNvbnRleHRNZXNzYWdlLFxuICAgIH0pLCBfNTggPSBfNTdbMF0sIHJvd3NQZXJQYWdlID0gXzU4LnJvd3NQZXJQYWdlLCBjdXJyZW50UGFnZSA9IF81OC5jdXJyZW50UGFnZSwgc2VsZWN0ZWRSb3dzID0gXzU4LnNlbGVjdGVkUm93cywgYWxsU2VsZWN0ZWQgPSBfNTguYWxsU2VsZWN0ZWQsIHNlbGVjdGVkQ291bnQgPSBfNTguc2VsZWN0ZWRDb3VudCwgc2VsZWN0ZWRDb2x1bW4gPSBfNTguc2VsZWN0ZWRDb2x1bW4sIHNvcnREaXJlY3Rpb24gPSBfNTguc29ydERpcmVjdGlvbiwgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UgPSBfNTgudG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UsIGRpc3BhdGNoID0gXzU3WzFdO1xuICAgIHZhciBfNTkgPSBwYWdpbmF0aW9uU2VydmVyT3B0aW9ucy5wZXJzaXN0U2VsZWN0ZWRPblNvcnQsIHBlcnNpc3RTZWxlY3RlZE9uU29ydCA9IF81OSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfNTksIF82MCA9IHBhZ2luYXRpb25TZXJ2ZXJPcHRpb25zLnBlcnNpc3RTZWxlY3RlZE9uUGFnZUNoYW5nZSwgcGVyc2lzdFNlbGVjdGVkT25QYWdlQ2hhbmdlID0gXzYwID09PSB2b2lkIDAgPyBmYWxzZSA6IF82MDtcbiAgICB2YXIgbWVyZ2VTZWxlY3Rpb25zID0gISEocGFnaW5hdGlvblNlcnZlciAmJiAocGVyc2lzdFNlbGVjdGVkT25QYWdlQ2hhbmdlIHx8IHBlcnNpc3RTZWxlY3RlZE9uU29ydCkpO1xuICAgIHZhciBlbmFibGVkUGFnaW5hdGlvbiA9IHBhZ2luYXRpb24gJiYgIXByb2dyZXNzUGVuZGluZyAmJiBkYXRhLmxlbmd0aCA+IDA7XG4gICAgdmFyIFBhZ2luYXRpb24gPSBwYWdpbmF0aW9uQ29tcG9uZW50IHx8IFBhZ2luYXRpb25fMS5kZWZhdWx0O1xuICAgIHZhciBjdXJyZW50VGhlbWUgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuICgwLCBzdHlsZXNfMS5jcmVhdGVTdHlsZXMpKGN1c3RvbVN0eWxlcywgdGhlbWUpOyB9LCBbY3VzdG9tU3R5bGVzLCB0aGVtZV0pO1xuICAgIHZhciB3cmFwcGVyUHJvcHMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIChfX2Fzc2lnbih7fSwgKGRpcmVjdGlvbiAhPT0gJ2F1dG8nICYmIHsgZGlyOiBkaXJlY3Rpb24gfSkpKTsgfSwgW2RpcmVjdGlvbl0pO1xuICAgIHZhciBzb3J0ZWREYXRhID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIHNlcnZlci1zaWRlIHNvcnRpbmcgYnlwYXNzZXMgaW50ZXJuYWwgc29ydGluZ1xuICAgICAgICBpZiAoc29ydFNlcnZlcikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChzZWxlY3RlZENvbHVtbiA9PT0gbnVsbCB8fCBzZWxlY3RlZENvbHVtbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VsZWN0ZWRDb2x1bW4uc29ydEZ1bmN0aW9uKSAmJiB0eXBlb2Ygc2VsZWN0ZWRDb2x1bW4uc29ydEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YXIgc29ydEZuXzEgPSBzZWxlY3RlZENvbHVtbi5zb3J0RnVuY3Rpb247XG4gICAgICAgICAgICB2YXIgY3VzdG9tU29ydEZ1bmN0aW9uID0gc29ydERpcmVjdGlvbiA9PT0gdHlwZXNfMS5Tb3J0T3JkZXIuQVNDID8gc29ydEZuXzEgOiBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gc29ydEZuXzEoYSwgYikgKiAtMTsgfTtcbiAgICAgICAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5KFtdLCBkYXRhLCB0cnVlKS5zb3J0KGN1c3RvbVNvcnRGdW5jdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgwLCB1dGlsXzEuc29ydCkoZGF0YSwgc2VsZWN0ZWRDb2x1bW4gPT09IG51bGwgfHwgc2VsZWN0ZWRDb2x1bW4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlbGVjdGVkQ29sdW1uLnNlbGVjdG9yLCBzb3J0RGlyZWN0aW9uLCBzb3J0RnVuY3Rpb24pO1xuICAgIH0sIFtzb3J0U2VydmVyLCBzZWxlY3RlZENvbHVtbiwgc29ydERpcmVjdGlvbiwgZGF0YSwgc29ydEZ1bmN0aW9uXSk7XG4gICAgdmFyIHRhYmxlUm93cyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAocGFnaW5hdGlvbiAmJiAhcGFnaW5hdGlvblNlcnZlcikge1xuICAgICAgICAgICAgLy8gd2hlbiB1c2luZyBjbGllbnQtc2lkZSBwYWdpbmF0aW9uIHdlIGNhbiBqdXN0IHNsaWNlIHRoZSByb3dzIHNldFxuICAgICAgICAgICAgdmFyIGxhc3RJbmRleCA9IGN1cnJlbnRQYWdlICogcm93c1BlclBhZ2U7XG4gICAgICAgICAgICB2YXIgZmlyc3RJbmRleCA9IGxhc3RJbmRleCAtIHJvd3NQZXJQYWdlO1xuICAgICAgICAgICAgcmV0dXJuIHNvcnRlZERhdGEuc2xpY2UoZmlyc3RJbmRleCwgbGFzdEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc29ydGVkRGF0YTtcbiAgICB9LCBbY3VycmVudFBhZ2UsIHBhZ2luYXRpb24sIHBhZ2luYXRpb25TZXJ2ZXIsIHJvd3NQZXJQYWdlLCBzb3J0ZWREYXRhXSk7XG4gICAgdmFyIGhhbmRsZVNvcnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoYWN0aW9uKSB7XG4gICAgICAgIGRpc3BhdGNoKGFjdGlvbik7XG4gICAgfSwgW10pO1xuICAgIHZhciBoYW5kbGVTZWxlY3RBbGxSb3dzID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGFjdGlvbikge1xuICAgICAgICBkaXNwYXRjaChhY3Rpb24pO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgaGFuZGxlU2VsZWN0ZWRSb3cgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoYWN0aW9uKSB7XG4gICAgICAgIGRpc3BhdGNoKGFjdGlvbik7XG4gICAgfSwgW10pO1xuICAgIHZhciBoYW5kbGVSb3dDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHJvdywgZSkgeyByZXR1cm4gb25Sb3dDbGlja2VkKHJvdywgZSk7IH0sIFtvblJvd0NsaWNrZWRdKTtcbiAgICB2YXIgaGFuZGxlUm93RG91YmxlQ2xpY2tlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChyb3csIGUpIHsgcmV0dXJuIG9uUm93RG91YmxlQ2xpY2tlZChyb3csIGUpOyB9LCBbb25Sb3dEb3VibGVDbGlja2VkXSk7XG4gICAgdmFyIGhhbmRsZVJvd01vdXNlRW50ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAocm93LCBlKSB7IHJldHVybiBvblJvd01vdXNlRW50ZXIocm93LCBlKTsgfSwgW29uUm93TW91c2VFbnRlcl0pO1xuICAgIHZhciBoYW5kbGVSb3dNb3VzZUxlYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHJvdywgZSkgeyByZXR1cm4gb25Sb3dNb3VzZUxlYXZlKHJvdywgZSk7IH0sIFtvblJvd01vdXNlTGVhdmVdKTtcbiAgICB2YXIgaGFuZGxlQ2hhbmdlUGFnZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChwYWdlKSB7XG4gICAgICAgIHJldHVybiBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnQ0hBTkdFX1BBR0UnLFxuICAgICAgICAgICAgcGFnZTogcGFnZSxcbiAgICAgICAgICAgIHBhZ2luYXRpb25TZXJ2ZXI6IHBhZ2luYXRpb25TZXJ2ZXIsXG4gICAgICAgICAgICB2aXNpYmxlT25seTogc2VsZWN0YWJsZVJvd3NWaXNpYmxlT25seSxcbiAgICAgICAgICAgIHBlcnNpc3RTZWxlY3RlZE9uUGFnZUNoYW5nZTogcGVyc2lzdFNlbGVjdGVkT25QYWdlQ2hhbmdlLFxuICAgICAgICB9KTtcbiAgICB9LCBbcGFnaW5hdGlvblNlcnZlciwgcGVyc2lzdFNlbGVjdGVkT25QYWdlQ2hhbmdlLCBzZWxlY3RhYmxlUm93c1Zpc2libGVPbmx5XSk7XG4gICAgdmFyIGhhbmRsZUNoYW5nZVJvd3NQZXJQYWdlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKG5ld1Jvd3NQZXJQYWdlKSB7XG4gICAgICAgIHZhciByb3dDb3VudCA9IHBhZ2luYXRpb25Ub3RhbFJvd3MgfHwgdGFibGVSb3dzLmxlbmd0aDtcbiAgICAgICAgdmFyIHVwZGF0ZWRQYWdlID0gKDAsIHV0aWxfMS5nZXROdW1iZXJPZlBhZ2VzKShyb3dDb3VudCwgbmV3Um93c1BlclBhZ2UpO1xuICAgICAgICB2YXIgcmVjYWxjdWxhdGVkUGFnZSA9ICgwLCB1dGlsXzEucmVjYWxjdWxhdGVQYWdlKShjdXJyZW50UGFnZSwgdXBkYXRlZFBhZ2UpO1xuICAgICAgICAvLyB1cGRhdGUgdGhlIGN1cnJlbnRQYWdlIGZvciBjbGllbnQtc2lkZSBwYWdpbmF0aW9uXG4gICAgICAgIC8vIHNlcnZlciAtIHNpZGUgc2hvdWxkIGJlIGhhbmRsZWQgYnkgb25DaGFuZ2VSb3dzUGVyUGFnZVxuICAgICAgICBpZiAoIXBhZ2luYXRpb25TZXJ2ZXIpIHtcbiAgICAgICAgICAgIGhhbmRsZUNoYW5nZVBhZ2UocmVjYWxjdWxhdGVkUGFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnQ0hBTkdFX1JPV1NfUEVSX1BBR0UnLCBwYWdlOiByZWNhbGN1bGF0ZWRQYWdlLCByb3dzUGVyUGFnZTogbmV3Um93c1BlclBhZ2UgfSk7XG4gICAgfSwgW2N1cnJlbnRQYWdlLCBoYW5kbGVDaGFuZ2VQYWdlLCBwYWdpbmF0aW9uU2VydmVyLCBwYWdpbmF0aW9uVG90YWxSb3dzLCB0YWJsZVJvd3MubGVuZ3RoXSk7XG4gICAgdmFyIHNob3dUYWJsZUhlYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChub1RhYmxlSGVhZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZXJzaXN0VGFibGVIZWFkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc29ydGVkRGF0YS5sZW5ndGggPiAwICYmICFwcm9ncmVzc1BlbmRpbmc7XG4gICAgfTtcbiAgICB2YXIgc2hvd0hlYWRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG5vSGVhZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLy8gcmVjYWxjdWxhdGUgdGhlIHBhZ2luYXRpb24gYW5kIGN1cnJlbnRQYWdlIGlmIHRoZSByb3dzIGxlbmd0aCBjaGFuZ2VzXG4gICAgaWYgKHBhZ2luYXRpb24gJiYgIXBhZ2luYXRpb25TZXJ2ZXIgJiYgc29ydGVkRGF0YS5sZW5ndGggPiAwICYmIHRhYmxlUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFyIHVwZGF0ZWRQYWdlID0gKDAsIHV0aWxfMS5nZXROdW1iZXJPZlBhZ2VzKShzb3J0ZWREYXRhLmxlbmd0aCwgcm93c1BlclBhZ2UpO1xuICAgICAgICB2YXIgcmVjYWxjdWxhdGVkUGFnZSA9ICgwLCB1dGlsXzEucmVjYWxjdWxhdGVQYWdlKShjdXJyZW50UGFnZSwgdXBkYXRlZFBhZ2UpO1xuICAgICAgICBoYW5kbGVDaGFuZ2VQYWdlKHJlY2FsY3VsYXRlZFBhZ2UpO1xuICAgIH1cbiAgICAoMCwgdXNlRGlkVXBkYXRlRWZmZWN0XzEuZGVmYXVsdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICBvblNlbGVjdGVkUm93c0NoYW5nZSh7IGFsbFNlbGVjdGVkOiBhbGxTZWxlY3RlZCwgc2VsZWN0ZWRDb3VudDogc2VsZWN0ZWRDb3VudCwgc2VsZWN0ZWRSb3dzOiBzZWxlY3RlZFJvd3Muc2xpY2UoMCkgfSk7XG4gICAgICAgIC8vIG9uU2VsZWN0ZWRSb3dzQ2hhbmdlIHRyaWdnZXIgaXMgY29udHJvbGxlZCBieSB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZSBzdGF0ZVxuICAgIH0sIFt0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZV0pO1xuICAgICgwLCB1c2VEaWRVcGRhdGVFZmZlY3RfMS5kZWZhdWx0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uU29ydChzZWxlY3RlZENvbHVtbiwgc29ydERpcmVjdGlvbiwgc29ydGVkRGF0YS5zbGljZSgwKSk7XG4gICAgICAgIC8vIGRvIG5vdCB1cGRhdGUgb24gc29ydGVkRGF0YVxuICAgIH0sIFtzZWxlY3RlZENvbHVtbiwgc29ydERpcmVjdGlvbl0pO1xuICAgICgwLCB1c2VEaWRVcGRhdGVFZmZlY3RfMS5kZWZhdWx0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uQ2hhbmdlUGFnZShjdXJyZW50UGFnZSwgcGFnaW5hdGlvblRvdGFsUm93cyB8fCBzb3J0ZWREYXRhLmxlbmd0aCk7XG4gICAgfSwgW2N1cnJlbnRQYWdlXSk7XG4gICAgKDAsIHVzZURpZFVwZGF0ZUVmZmVjdF8xLmRlZmF1bHQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25DaGFuZ2VSb3dzUGVyUGFnZShyb3dzUGVyUGFnZSwgY3VycmVudFBhZ2UpO1xuICAgIH0sIFtyb3dzUGVyUGFnZV0pO1xuICAgICgwLCB1c2VEaWRVcGRhdGVFZmZlY3RfMS5kZWZhdWx0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGhhbmRsZUNoYW5nZVBhZ2UocGFnaW5hdGlvbkRlZmF1bHRQYWdlKTtcbiAgICB9LCBbcGFnaW5hdGlvbkRlZmF1bHRQYWdlLCBwYWdpbmF0aW9uUmVzZXREZWZhdWx0UGFnZV0pO1xuICAgICgwLCB1c2VEaWRVcGRhdGVFZmZlY3RfMS5kZWZhdWx0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb25TZXJ2ZXIgJiYgcGFnaW5hdGlvblRvdGFsUm93cyA+IDApIHtcbiAgICAgICAgICAgIHZhciB1cGRhdGVkUGFnZSA9ICgwLCB1dGlsXzEuZ2V0TnVtYmVyT2ZQYWdlcykocGFnaW5hdGlvblRvdGFsUm93cywgcm93c1BlclBhZ2UpO1xuICAgICAgICAgICAgdmFyIHJlY2FsY3VsYXRlZFBhZ2UgPSAoMCwgdXRpbF8xLnJlY2FsY3VsYXRlUGFnZSkoY3VycmVudFBhZ2UsIHVwZGF0ZWRQYWdlKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcmVjYWxjdWxhdGVkUGFnZSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZVBhZ2UocmVjYWxjdWxhdGVkUGFnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbcGFnaW5hdGlvblRvdGFsUm93c10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ0NMRUFSX1NFTEVDVEVEX1JPV1MnLCBzZWxlY3RlZFJvd3NGbGFnOiBjbGVhclNlbGVjdGVkUm93cyB9KTtcbiAgICB9LCBbc2VsZWN0YWJsZVJvd3NTaW5nbGUsIGNsZWFyU2VsZWN0ZWRSb3dzXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFzZWxlY3RhYmxlUm93U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJlU2VsZWN0ZWRSb3dzID0gc29ydGVkRGF0YS5maWx0ZXIoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gc2VsZWN0YWJsZVJvd1NlbGVjdGVkKHJvdyk7IH0pO1xuICAgICAgICAvLyBpZiBzZWxlY3RhYmxlUm93c1NpbmdsZSBtb2RlIHRoZW4gcmV0dXJuIHRoZSBmaXJzdCBtYXRjaFxuICAgICAgICB2YXIgc2VsZWN0ZWQgPSBzZWxlY3RhYmxlUm93c1NpbmdsZSA/IHByZVNlbGVjdGVkUm93cy5zbGljZSgwLCAxKSA6IHByZVNlbGVjdGVkUm93cztcbiAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgICAgdHlwZTogJ1NFTEVDVF9NVUxUSVBMRV9ST1dTJyxcbiAgICAgICAgICAgIGtleUZpZWxkOiBrZXlGaWVsZCxcbiAgICAgICAgICAgIHNlbGVjdGVkUm93czogc2VsZWN0ZWQsXG4gICAgICAgICAgICB0b3RhbFJvd3M6IHNvcnRlZERhdGEubGVuZ3RoLFxuICAgICAgICAgICAgbWVyZ2VTZWxlY3Rpb25zOiBtZXJnZVNlbGVjdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gdXBkYXRlIHRoZSBzZWxlY3RlZFJvd1N0YXRlIGlmIGRhdGEgY2hhbmdlc1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgW2RhdGEsIHNlbGVjdGFibGVSb3dTZWxlY3RlZF0pO1xuICAgIHZhciB2aXNpYmxlUm93cyA9IHNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHkgPyB0YWJsZVJvd3MgOiBzb3J0ZWREYXRhO1xuICAgIHZhciBzaG93U2VsZWN0QWxsID0gcGVyc2lzdFNlbGVjdGVkT25QYWdlQ2hhbmdlIHx8IHNlbGVjdGFibGVSb3dzU2luZ2xlIHx8IHNlbGVjdGFibGVSb3dzTm9TZWxlY3RBbGw7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KHN0eWxlZF9jb21wb25lbnRzXzEuVGhlbWVQcm92aWRlciwgeyB0aGVtZTogY3VycmVudFRoZW1lIH0sXG4gICAgICAgIHNob3dIZWFkZXIoKSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZUhlYWRlcl8xLmRlZmF1bHQsIHsgdGl0bGU6IHRpdGxlLCBhY3Rpb25zOiBhY3Rpb25zLCBzaG93TWVudTogIW5vQ29udGV4dE1lbnUsIHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkQ291bnQsIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBjb250ZXh0QWN0aW9uczogY29udGV4dEFjdGlvbnMsIGNvbnRleHRDb21wb25lbnQ6IGNvbnRleHRDb21wb25lbnQsIGNvbnRleHRNZXNzYWdlOiBjb250ZXh0TWVzc2FnZSB9KSksXG4gICAgICAgIHN1YkhlYWRlciAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZVN1YmhlYWRlcl8xLmRlZmF1bHQsIHsgYWxpZ246IHN1YkhlYWRlckFsaWduLCB3cmFwQ29udGVudDogc3ViSGVhZGVyV3JhcCB9LCBzdWJIZWFkZXJDb21wb25lbnQpKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChSZXNwb25zaXZlV3JhcHBlcl8xLmRlZmF1bHQsIF9fYXNzaWduKHsgcmVzcG9uc2l2ZTogcmVzcG9uc2l2ZSwgZml4ZWRIZWFkZXI6IGZpeGVkSGVhZGVyLCBmaXhlZEhlYWRlclNjcm9sbEhlaWdodDogZml4ZWRIZWFkZXJTY3JvbGxIZWlnaHQsIGNsYXNzTmFtZTogY2xhc3NOYW1lIH0sIHdyYXBwZXJQcm9wcyksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlV3JhcHBlcl8xLmRlZmF1bHQsIG51bGwsXG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3NQZW5kaW5nICYmICFwZXJzaXN0VGFibGVIZWFkICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHJvZ3Jlc3NXcmFwcGVyXzEuZGVmYXVsdCwgbnVsbCwgcHJvZ3Jlc3NDb21wb25lbnQpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVfMS5kZWZhdWx0LCB7IGRpc2FibGVkOiBkaXNhYmxlZCwgY2xhc3NOYW1lOiBcInJkdF9UYWJsZVwiLCByb2xlOiBcInRhYmxlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1RhYmxlSGVhZCgpICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlSGVhZF8xLmRlZmF1bHQsIHsgY2xhc3NOYW1lOiBcInJkdF9UYWJsZUhlYWRcIiwgcm9sZTogXCJyb3dncm91cFwiLCBmaXhlZEhlYWRlcjogZml4ZWRIZWFkZXIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVIZWFkUm93XzEuZGVmYXVsdCwgeyBjbGFzc05hbWU6IFwicmR0X1RhYmxlSGVhZFJvd1wiLCByb2xlOiBcInJvd1wiLCBkZW5zZTogZGVuc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlUm93cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvd1NlbGVjdEFsbCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KENlbGxfMS5DZWxsQmFzZSwgeyBzdHlsZTogeyBmbGV4OiAnMCAwIDQ4cHgnIH0gfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVDb2xDaGVja2JveF8xLmRlZmF1bHQsIHsgYWxsU2VsZWN0ZWQ6IGFsbFNlbGVjdGVkLCBzZWxlY3RlZFJvd3M6IHNlbGVjdGVkUm93cywgc2VsZWN0YWJsZVJvd3NDb21wb25lbnQ6IHNlbGVjdGFibGVSb3dzQ29tcG9uZW50LCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzOiBzZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzLCBzZWxlY3RhYmxlUm93RGlzYWJsZWQ6IHNlbGVjdGFibGVSb3dEaXNhYmxlZCwgcm93RGF0YTogdmlzaWJsZVJvd3MsIGtleUZpZWxkOiBrZXlGaWVsZCwgbWVyZ2VTZWxlY3Rpb25zOiBtZXJnZVNlbGVjdGlvbnMsIG9uU2VsZWN0QWxsUm93czogaGFuZGxlU2VsZWN0QWxsUm93cyB9KSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzICYmICFleHBhbmRhYmxlUm93c0hpZGVFeHBhbmRlciAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlQ29sRXhwYW5kZXJfMS5kZWZhdWx0LCBudWxsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlQ29sXzEuZGVmYXVsdCwgeyBrZXk6IGNvbHVtbi5pZCwgY29sdW1uOiBjb2x1bW4sIHNlbGVjdGVkQ29sdW1uOiBzZWxlY3RlZENvbHVtbiwgZGlzYWJsZWQ6IHByb2dyZXNzUGVuZGluZyB8fCBzb3J0ZWREYXRhLmxlbmd0aCA9PT0gMCwgcGFnaW5hdGlvbjogcGFnaW5hdGlvbiwgcGFnaW5hdGlvblNlcnZlcjogcGFnaW5hdGlvblNlcnZlciwgcGVyc2lzdFNlbGVjdGVkT25Tb3J0OiBwZXJzaXN0U2VsZWN0ZWRPblNvcnQsIHNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHk6IHNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHksIHNvcnREaXJlY3Rpb246IHNvcnREaXJlY3Rpb24sIHNvcnRJY29uOiBzb3J0SWNvbiwgc29ydFNlcnZlcjogc29ydFNlcnZlciwgb25Tb3J0OiBoYW5kbGVTb3J0LCBvbkRyYWdTdGFydDogaGFuZGxlRHJhZ1N0YXJ0LCBvbkRyYWdPdmVyOiBoYW5kbGVEcmFnT3Zlciwgb25EcmFnRW5kOiBoYW5kbGVEcmFnRW5kLCBvbkRyYWdFbnRlcjogaGFuZGxlRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZTogaGFuZGxlRHJhZ0xlYXZlLCBkcmFnZ2luZ0NvbHVtbklkOiBkcmFnZ2luZ0NvbHVtbklkIH0pKTsgfSkpKSksXG4gICAgICAgICAgICAgICAgICAgICFzb3J0ZWREYXRhLmxlbmd0aCAmJiAhcHJvZ3Jlc3NQZW5kaW5nICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTm9EYXRhV3JhcHBlcl8xLmRlZmF1bHQsIG51bGwsIG5vRGF0YUNvbXBvbmVudCksXG4gICAgICAgICAgICAgICAgICAgIHByb2dyZXNzUGVuZGluZyAmJiBwZXJzaXN0VGFibGVIZWFkICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHJvZ3Jlc3NXcmFwcGVyXzEuZGVmYXVsdCwgbnVsbCwgcHJvZ3Jlc3NDb21wb25lbnQpLFxuICAgICAgICAgICAgICAgICAgICAhcHJvZ3Jlc3NQZW5kaW5nICYmIHNvcnRlZERhdGEubGVuZ3RoID4gMCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZUJvZHlfMS5kZWZhdWx0LCB7IGNsYXNzTmFtZTogXCJyZHRfVGFibGVCb2R5XCIsIHJvbGU6IFwicm93Z3JvdXBcIiB9LCB0YWJsZVJvd3MubWFwKGZ1bmN0aW9uIChyb3csIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAoMCwgdXRpbF8xLnByb3ApKHJvdywga2V5RmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gKDAsIHV0aWxfMS5pc0VtcHR5KShrZXkpID8gaSA6IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9ICgwLCB1dGlsXzEuaXNSb3dTZWxlY3RlZCkocm93LCBzZWxlY3RlZFJvd3MsIGtleUZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBleHBhbmRlckV4cGFuZGVyID0gISEoZXhwYW5kYWJsZVJvd3MgJiYgZXhwYW5kYWJsZVJvd0V4cGFuZGVkICYmIGV4cGFuZGFibGVSb3dFeHBhbmRlZChyb3cpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBleHBhbmRlckRpc2FibGVkID0gISEoZXhwYW5kYWJsZVJvd3MgJiYgZXhwYW5kYWJsZVJvd0Rpc2FibGVkICYmIGV4cGFuZGFibGVSb3dEaXNhYmxlZChyb3cpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZVJvd18xLmRlZmF1bHQsIHsgaWQ6IGlkLCBrZXk6IGlkLCBrZXlGaWVsZDoga2V5RmllbGQsIFwiZGF0YS1yb3ctaWRcIjogaWQsIGNvbHVtbnM6IHRhYmxlQ29sdW1ucywgcm93OiByb3csIHJvd0NvdW50OiBzb3J0ZWREYXRhLmxlbmd0aCwgcm93SW5kZXg6IGksIHNlbGVjdGFibGVSb3dzOiBzZWxlY3RhYmxlUm93cywgZXhwYW5kYWJsZVJvd3M6IGV4cGFuZGFibGVSb3dzLCBleHBhbmRhYmxlSWNvbjogZXhwYW5kYWJsZUljb24sIGhpZ2hsaWdodE9uSG92ZXI6IGhpZ2hsaWdodE9uSG92ZXIsIHBvaW50ZXJPbkhvdmVyOiBwb2ludGVyT25Ib3ZlciwgZGVuc2U6IGRlbnNlLCBleHBhbmRPblJvd0NsaWNrZWQ6IGV4cGFuZE9uUm93Q2xpY2tlZCwgZXhwYW5kT25Sb3dEb3VibGVDbGlja2VkOiBleHBhbmRPblJvd0RvdWJsZUNsaWNrZWQsIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50OiBleHBhbmRhYmxlUm93c0NvbXBvbmVudCwgZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wczogZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcywgZXhwYW5kYWJsZVJvd3NIaWRlRXhwYW5kZXI6IGV4cGFuZGFibGVSb3dzSGlkZUV4cGFuZGVyLCBkZWZhdWx0RXhwYW5kZXJEaXNhYmxlZDogZXhwYW5kZXJEaXNhYmxlZCwgZGVmYXVsdEV4cGFuZGVkOiBleHBhbmRlckV4cGFuZGVyLCBleHBhbmRhYmxlSW5oZXJpdENvbmRpdGlvbmFsU3R5bGVzOiBleHBhbmRhYmxlSW5oZXJpdENvbmRpdGlvbmFsU3R5bGVzLCBjb25kaXRpb25hbFJvd1N0eWxlczogY29uZGl0aW9uYWxSb3dTdHlsZXMsIHNlbGVjdGVkOiBzZWxlY3RlZCwgc2VsZWN0YWJsZVJvd3NIaWdobGlnaHQ6IHNlbGVjdGFibGVSb3dzSGlnaGxpZ2h0LCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudDogc2VsZWN0YWJsZVJvd3NDb21wb25lbnQsIHNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHM6IHNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIHNlbGVjdGFibGVSb3dEaXNhYmxlZDogc2VsZWN0YWJsZVJvd0Rpc2FibGVkLCBzZWxlY3RhYmxlUm93c1NpbmdsZTogc2VsZWN0YWJsZVJvd3NTaW5nbGUsIHN0cmlwZWQ6IHN0cmlwZWQsIG9uUm93RXhwYW5kVG9nZ2xlZDogb25Sb3dFeHBhbmRUb2dnbGVkLCBvblJvd0NsaWNrZWQ6IGhhbmRsZVJvd0NsaWNrZWQsIG9uUm93RG91YmxlQ2xpY2tlZDogaGFuZGxlUm93RG91YmxlQ2xpY2tlZCwgb25Sb3dNb3VzZUVudGVyOiBoYW5kbGVSb3dNb3VzZUVudGVyLCBvblJvd01vdXNlTGVhdmU6IGhhbmRsZVJvd01vdXNlTGVhdmUsIG9uU2VsZWN0ZWRSb3c6IGhhbmRsZVNlbGVjdGVkUm93LCBkcmFnZ2luZ0NvbHVtbklkOiBkcmFnZ2luZ0NvbHVtbklkLCBvbkRyYWdTdGFydDogaGFuZGxlRHJhZ1N0YXJ0LCBvbkRyYWdPdmVyOiBoYW5kbGVEcmFnT3Zlciwgb25EcmFnRW5kOiBoYW5kbGVEcmFnRW5kLCBvbkRyYWdFbnRlcjogaGFuZGxlRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZTogaGFuZGxlRHJhZ0xlYXZlIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfSkpKSkpKSxcbiAgICAgICAgZW5hYmxlZFBhZ2luYXRpb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUGFnaW5hdGlvbiwgeyBvbkNoYW5nZVBhZ2U6IGhhbmRsZUNoYW5nZVBhZ2UsIG9uQ2hhbmdlUm93c1BlclBhZ2U6IGhhbmRsZUNoYW5nZVJvd3NQZXJQYWdlLCByb3dDb3VudDogcGFnaW5hdGlvblRvdGFsUm93cyB8fCBzb3J0ZWREYXRhLmxlbmd0aCwgY3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLCByb3dzUGVyUGFnZTogcm93c1BlclBhZ2UsIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBwYWdpbmF0aW9uUm93c1BlclBhZ2VPcHRpb25zOiBwYWdpbmF0aW9uUm93c1BlclBhZ2VPcHRpb25zLCBwYWdpbmF0aW9uSWNvbkxhc3RQYWdlOiBwYWdpbmF0aW9uSWNvbkxhc3RQYWdlLCBwYWdpbmF0aW9uSWNvbkZpcnN0UGFnZTogcGFnaW5hdGlvbkljb25GaXJzdFBhZ2UsIHBhZ2luYXRpb25JY29uTmV4dDogcGFnaW5hdGlvbkljb25OZXh0LCBwYWdpbmF0aW9uSWNvblByZXZpb3VzOiBwYWdpbmF0aW9uSWNvblByZXZpb3VzLCBwYWdpbmF0aW9uQ29tcG9uZW50T3B0aW9uczogcGFnaW5hdGlvbkNvbXBvbmVudE9wdGlvbnMgfSkpKSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gUmVhY3QubWVtbyhEYXRhVGFibGUpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgQnV0dG9uU3R5bGUgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuYnV0dG9uKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0Ym9yZGVyOiBub25lO1xcblxcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRib3JkZXI6IG5vbmU7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuZXhwYW5kZXJCdXR0b24uc3R5bGU7XG59KTtcbmZ1bmN0aW9uIEV4cGFuZGVyQnV0dG9uKF9hKSB7XG4gICAgdmFyIF9iID0gX2EuZGlzYWJsZWQsIGRpc2FibGVkID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIF9jID0gX2EuZXhwYW5kZWQsIGV4cGFuZGVkID0gX2MgPT09IHZvaWQgMCA/IGZhbHNlIDogX2MsIGV4cGFuZGFibGVJY29uID0gX2EuZXhwYW5kYWJsZUljb24sIGlkID0gX2EuaWQsIHJvdyA9IF9hLnJvdywgb25Ub2dnbGVkID0gX2Eub25Ub2dnbGVkO1xuICAgIHZhciBpY29uID0gZXhwYW5kZWQgPyBleHBhbmRhYmxlSWNvbi5leHBhbmRlZCA6IGV4cGFuZGFibGVJY29uLmNvbGxhcHNlZDtcbiAgICB2YXIgaGFuZGxlVG9nZ2xlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gb25Ub2dnbGVkICYmIG9uVG9nZ2xlZChyb3cpOyB9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChCdXR0b25TdHlsZSwgeyBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQsIG9uQ2xpY2s6IGhhbmRsZVRvZ2dsZSwgXCJkYXRhLXRlc3RpZFwiOiBcImV4cGFuZGVyLWJ1dHRvbi1cIi5jb25jYXQoaWQpLCBkaXNhYmxlZDogZGlzYWJsZWQsIFwiYXJpYS1sYWJlbFwiOiBleHBhbmRlZCA/ICdDb2xsYXBzZSBSb3cnIDogJ0V4cGFuZCBSb3cnLCByb2xlOiBcImJ1dHRvblwiLCB0eXBlOiBcImJ1dHRvblwiIH0sIGljb24pKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IEV4cGFuZGVyQnV0dG9uO1xudmFyIHRlbXBsYXRlT2JqZWN0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuLy8gQHRzLWlnbm9yZVxudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgRXhwYW5kZXJSb3dTdHlsZSA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdHdpZHRoOiAxMDAlO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdHdpZHRoOiAxMDAlO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmV4cGFuZGVyUm93LnN0eWxlO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGV4dGVuZGVkUm93U3R5bGUgPSBfYS5leHRlbmRlZFJvd1N0eWxlO1xuICAgIHJldHVybiBleHRlbmRlZFJvd1N0eWxlO1xufSk7XG5mdW5jdGlvbiBFeHBhbmRlclJvdyhfYSkge1xuICAgIHZhciBkYXRhID0gX2EuZGF0YSwgRXhwYW5kZXJDb21wb25lbnQgPSBfYS5FeHBhbmRlckNvbXBvbmVudCwgZXhwYW5kZXJDb21wb25lbnRQcm9wcyA9IF9hLmV4cGFuZGVyQ29tcG9uZW50UHJvcHMsIGV4dGVuZGVkUm93U3R5bGUgPSBfYS5leHRlbmRlZFJvd1N0eWxlLCBleHRlbmRlZENsYXNzTmFtZXMgPSBfYS5leHRlbmRlZENsYXNzTmFtZXM7XG4gICAgLy8gd2UgbmVlZCB0byBzdHJpcCBvZiByZHRfVGFibGVSb3cgZnJvbSBleHRlbmRlZENsYXNzTmFtZXNcbiAgICB2YXIgY2xhc3NOYW1lc1NwbGl0ID0gZXh0ZW5kZWRDbGFzc05hbWVzLnNwbGl0KCcgJykuZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjICE9PSAncmR0X1RhYmxlUm93JzsgfSk7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBfX3NwcmVhZEFycmF5KFsncmR0X0V4cGFuZGVyUm93J10sIGNsYXNzTmFtZXNTcGxpdCwgdHJ1ZSkuam9pbignICcpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRlclJvd1N0eWxlLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcywgZXh0ZW5kZWRSb3dTdHlsZTogZXh0ZW5kZWRSb3dTdHlsZSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZGVyQ29tcG9uZW50LCBfX2Fzc2lnbih7IGRhdGE6IGRhdGEgfSwgZXhwYW5kZXJDb21wb25lbnRQcm9wcykpKSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSZWFjdC5tZW1vKEV4cGFuZGVyUm93KTtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgTm9EYXRhV3JhcHBlciA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLm5vRGF0YS5zdHlsZTtcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gTm9EYXRhV3JhcHBlcjtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIFNlbGVjdF8xID0gcmVxdWlyZShcIi4vU2VsZWN0XCIpO1xudmFyIHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgdXNlV2luZG93U2l6ZV8xID0gcmVxdWlyZShcIi4vaG9va3MvdXNlV2luZG93U2l6ZVwiKTtcbnZhciB1c2VSVExfMSA9IHJlcXVpcmUoXCIuL2hvb2tzL3VzZVJUTFwiKTtcbnZhciBtZWRpYV8xID0gcmVxdWlyZShcIi4vbWVkaWFcIik7XG52YXIgZGVmYXVsdFByb3BzXzEgPSByZXF1aXJlKFwiLi9kZWZhdWx0UHJvcHNcIik7XG52YXIgZGVmYXVsdENvbXBvbmVudE9wdGlvbnMgPSB7XG4gICAgcm93c1BlclBhZ2VUZXh0OiAnUm93cyBwZXIgcGFnZTonLFxuICAgIHJhbmdlU2VwYXJhdG9yVGV4dDogJ29mJyxcbiAgICBub1Jvd3NQZXJQYWdlOiBmYWxzZSxcbiAgICBzZWxlY3RBbGxSb3dzSXRlbTogZmFsc2UsXG4gICAgc2VsZWN0QWxsUm93c0l0ZW1UZXh0OiAnQWxsJyxcbn07XG52YXIgUGFnaW5hdGlvbldyYXBwZXIgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQubmF2KHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXg6IDEgMSBhdXRvO1xcblxcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdHBhZGRpbmctcmlnaHQ6IDhweDtcXG5cXHRwYWRkaW5nLWxlZnQ6IDhweDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXg6IDEgMSBhdXRvO1xcblxcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdHBhZGRpbmctcmlnaHQ6IDhweDtcXG5cXHRwYWRkaW5nLWxlZnQ6IDhweDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS5wYWdpbmF0aW9uLnN0eWxlO1xufSk7XG52YXIgQnV0dG9uID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmJ1dHRvbih0ZW1wbGF0ZU9iamVjdF8yIHx8ICh0ZW1wbGF0ZU9iamVjdF8yID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGRpc3BsYXk6IGJsb2NrO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdGJvcmRlcjogbm9uZTtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGRpc3BsYXk6IGJsb2NrO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdGJvcmRlcjogbm9uZTtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUucGFnaW5hdGlvbi5wYWdlQnV0dG9uc1N0eWxlO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGlzUlRMID0gX2EuaXNSVEw7XG4gICAgcmV0dXJuIGlzUlRMICYmICd0cmFuc2Zvcm06IHNjYWxlKC0xLCAtMSknO1xufSk7XG52YXIgUGFnZUxpc3QgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzQgfHwgKHRlbXBsYXRlT2JqZWN0XzQgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0Ym9yZGVyLXJhZGl1czogNHB4O1xcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGJvcmRlci1yYWRpdXM6IDRweDtcXG5cXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgbWVkaWFfMS5tZWRpYS5zbSh0ZW1wbGF0ZU9iamVjdF8zIHx8ICh0ZW1wbGF0ZU9iamVjdF8zID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcXG4gIFwiXSwgW1wiXFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcXG4gIFwiXSkpKSk7XG52YXIgU3BhbiA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5zcGFuKHRlbXBsYXRlT2JqZWN0XzUgfHwgKHRlbXBsYXRlT2JqZWN0XzUgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRmbGV4LXNocmluazogMTtcXG5cXHR1c2VyLXNlbGVjdDogbm9uZTtcXG5cIl0sIFtcIlxcblxcdGZsZXgtc2hyaW5rOiAxO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblwiXSkpKTtcbnZhciBSYW5nZSA9ICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQpKFNwYW4pKHRlbXBsYXRlT2JqZWN0XzYgfHwgKHRlbXBsYXRlT2JqZWN0XzYgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRtYXJnaW46IDAgMjRweDtcXG5cIl0sIFtcIlxcblxcdG1hcmdpbjogMCAyNHB4O1xcblwiXSkpKTtcbnZhciBSb3dMYWJlbCA9ICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQpKFNwYW4pKHRlbXBsYXRlT2JqZWN0XzcgfHwgKHRlbXBsYXRlT2JqZWN0XzcgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRtYXJnaW46IDAgNHB4O1xcblwiXSwgW1wiXFxuXFx0bWFyZ2luOiAwIDRweDtcXG5cIl0pKSk7XG5mdW5jdGlvbiBQYWdpbmF0aW9uKF9hKSB7XG4gICAgdmFyIHJvd3NQZXJQYWdlID0gX2Eucm93c1BlclBhZ2UsIHJvd0NvdW50ID0gX2Eucm93Q291bnQsIGN1cnJlbnRQYWdlID0gX2EuY3VycmVudFBhZ2UsIF9iID0gX2EuZGlyZWN0aW9uLCBkaXJlY3Rpb24gPSBfYiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmRpcmVjdGlvbiA6IF9iLCBfYyA9IF9hLnBhZ2luYXRpb25Sb3dzUGVyUGFnZU9wdGlvbnMsIHBhZ2luYXRpb25Sb3dzUGVyUGFnZU9wdGlvbnMgPSBfYyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25Sb3dzUGVyUGFnZU9wdGlvbnMgOiBfYywgX2QgPSBfYS5wYWdpbmF0aW9uSWNvbkxhc3RQYWdlLCBwYWdpbmF0aW9uSWNvbkxhc3RQYWdlID0gX2QgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uSWNvbkxhc3RQYWdlIDogX2QsIF9lID0gX2EucGFnaW5hdGlvbkljb25GaXJzdFBhZ2UsIHBhZ2luYXRpb25JY29uRmlyc3RQYWdlID0gX2UgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uSWNvbkZpcnN0UGFnZSA6IF9lLCBfZiA9IF9hLnBhZ2luYXRpb25JY29uTmV4dCwgcGFnaW5hdGlvbkljb25OZXh0ID0gX2YgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uSWNvbk5leHQgOiBfZiwgX2cgPSBfYS5wYWdpbmF0aW9uSWNvblByZXZpb3VzLCBwYWdpbmF0aW9uSWNvblByZXZpb3VzID0gX2cgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uSWNvblByZXZpb3VzIDogX2csIF9oID0gX2EucGFnaW5hdGlvbkNvbXBvbmVudE9wdGlvbnMsIHBhZ2luYXRpb25Db21wb25lbnRPcHRpb25zID0gX2ggPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uQ29tcG9uZW50T3B0aW9ucyA6IF9oLCBfaiA9IF9hLm9uQ2hhbmdlUm93c1BlclBhZ2UsIG9uQ2hhbmdlUm93c1BlclBhZ2UgPSBfaiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm9uQ2hhbmdlUm93c1BlclBhZ2UgOiBfaiwgX2sgPSBfYS5vbkNoYW5nZVBhZ2UsIG9uQ2hhbmdlUGFnZSA9IF9rID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25DaGFuZ2VQYWdlIDogX2s7XG4gICAgdmFyIHdpbmRvd1NpemUgPSAoMCwgdXNlV2luZG93U2l6ZV8xLmRlZmF1bHQpKCk7XG4gICAgdmFyIGlzUlRMID0gKDAsIHVzZVJUTF8xLmRlZmF1bHQpKGRpcmVjdGlvbik7XG4gICAgdmFyIHNob3VsZFNob3cgPSB3aW5kb3dTaXplLndpZHRoICYmIHdpbmRvd1NpemUud2lkdGggPiBtZWRpYV8xLlNNQUxMO1xuICAgIC8vIGNvbnN0IGlzUlRMID0gZGV0ZWN0UlRMKGRpcmVjdGlvbik7XG4gICAgdmFyIG51bVBhZ2VzID0gKDAsIHV0aWxfMS5nZXROdW1iZXJPZlBhZ2VzKShyb3dDb3VudCwgcm93c1BlclBhZ2UpO1xuICAgIHZhciBsYXN0SW5kZXggPSBjdXJyZW50UGFnZSAqIHJvd3NQZXJQYWdlO1xuICAgIHZhciBmaXJzdEluZGV4ID0gbGFzdEluZGV4IC0gcm93c1BlclBhZ2UgKyAxO1xuICAgIHZhciBkaXNhYmxlZExlc3NlciA9IGN1cnJlbnRQYWdlID09PSAxO1xuICAgIHZhciBkaXNhYmxlZEdyZWF0ZXIgPSBjdXJyZW50UGFnZSA9PT0gbnVtUGFnZXM7XG4gICAgdmFyIG9wdGlvbnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVmYXVsdENvbXBvbmVudE9wdGlvbnMpLCBwYWdpbmF0aW9uQ29tcG9uZW50T3B0aW9ucyk7XG4gICAgdmFyIHJhbmdlID0gY3VycmVudFBhZ2UgPT09IG51bVBhZ2VzXG4gICAgICAgID8gXCJcIi5jb25jYXQoZmlyc3RJbmRleCwgXCItXCIpLmNvbmNhdChyb3dDb3VudCwgXCIgXCIpLmNvbmNhdChvcHRpb25zLnJhbmdlU2VwYXJhdG9yVGV4dCwgXCIgXCIpLmNvbmNhdChyb3dDb3VudClcbiAgICAgICAgOiBcIlwiLmNvbmNhdChmaXJzdEluZGV4LCBcIi1cIikuY29uY2F0KGxhc3RJbmRleCwgXCIgXCIpLmNvbmNhdChvcHRpb25zLnJhbmdlU2VwYXJhdG9yVGV4dCwgXCIgXCIpLmNvbmNhdChyb3dDb3VudCk7XG4gICAgdmFyIGhhbmRsZVByZXZpb3VzID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DaGFuZ2VQYWdlKGN1cnJlbnRQYWdlIC0gMSk7IH0sIFtjdXJyZW50UGFnZSwgb25DaGFuZ2VQYWdlXSk7XG4gICAgdmFyIGhhbmRsZU5leHQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNoYW5nZVBhZ2UoY3VycmVudFBhZ2UgKyAxKTsgfSwgW2N1cnJlbnRQYWdlLCBvbkNoYW5nZVBhZ2VdKTtcbiAgICB2YXIgaGFuZGxlRmlyc3QgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNoYW5nZVBhZ2UoMSk7IH0sIFtvbkNoYW5nZVBhZ2VdKTtcbiAgICB2YXIgaGFuZGxlTGFzdCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2hhbmdlUGFnZSgoMCwgdXRpbF8xLmdldE51bWJlck9mUGFnZXMpKHJvd0NvdW50LCByb3dzUGVyUGFnZSkpOyB9LCBbb25DaGFuZ2VQYWdlLCByb3dDb3VudCwgcm93c1BlclBhZ2VdKTtcbiAgICB2YXIgaGFuZGxlUm93c1BlclBhZ2UgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkgeyByZXR1cm4gb25DaGFuZ2VSb3dzUGVyUGFnZShOdW1iZXIoZS50YXJnZXQudmFsdWUpLCBjdXJyZW50UGFnZSk7IH0sIFtjdXJyZW50UGFnZSwgb25DaGFuZ2VSb3dzUGVyUGFnZV0pO1xuICAgIHZhciBzZWxlY3RPcHRpb25zID0gcGFnaW5hdGlvblJvd3NQZXJQYWdlT3B0aW9ucy5tYXAoZnVuY3Rpb24gKG51bSkgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIiwgeyBrZXk6IG51bSwgdmFsdWU6IG51bSB9LCBudW0pKTsgfSk7XG4gICAgaWYgKG9wdGlvbnMuc2VsZWN0QWxsUm93c0l0ZW0pIHtcbiAgICAgICAgc2VsZWN0T3B0aW9ucy5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIiwgeyBrZXk6IC0xLCB2YWx1ZTogcm93Q291bnQgfSwgb3B0aW9ucy5zZWxlY3RBbGxSb3dzSXRlbVRleHQpKTtcbiAgICB9XG4gICAgdmFyIHNlbGVjdCA9IChSZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdF8xLmRlZmF1bHQsIHsgb25DaGFuZ2U6IGhhbmRsZVJvd3NQZXJQYWdlLCBkZWZhdWx0VmFsdWU6IHJvd3NQZXJQYWdlLCBcImFyaWEtbGFiZWxcIjogb3B0aW9ucy5yb3dzUGVyUGFnZVRleHQgfSwgc2VsZWN0T3B0aW9ucykpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChQYWdpbmF0aW9uV3JhcHBlciwgeyBjbGFzc05hbWU6IFwicmR0X1BhZ2luYXRpb25cIiB9LFxuICAgICAgICAhb3B0aW9ucy5ub1Jvd3NQZXJQYWdlICYmIHNob3VsZFNob3cgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJvd0xhYmVsLCBudWxsLCBvcHRpb25zLnJvd3NQZXJQYWdlVGV4dCksXG4gICAgICAgICAgICBzZWxlY3QpKSxcbiAgICAgICAgc2hvdWxkU2hvdyAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFJhbmdlLCBudWxsLCByYW5nZSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUGFnZUxpc3QsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyBpZDogXCJwYWdpbmF0aW9uLWZpcnN0LXBhZ2VcIiwgdHlwZTogXCJidXR0b25cIiwgXCJhcmlhLWxhYmVsXCI6IFwiRmlyc3QgUGFnZVwiLCBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWRMZXNzZXIsIG9uQ2xpY2s6IGhhbmRsZUZpcnN0LCBkaXNhYmxlZDogZGlzYWJsZWRMZXNzZXIsIGlzUlRMOiBpc1JUTCB9LCBwYWdpbmF0aW9uSWNvbkZpcnN0UGFnZSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyBpZDogXCJwYWdpbmF0aW9uLXByZXZpb3VzLXBhZ2VcIiwgdHlwZTogXCJidXR0b25cIiwgXCJhcmlhLWxhYmVsXCI6IFwiUHJldmlvdXMgUGFnZVwiLCBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWRMZXNzZXIsIG9uQ2xpY2s6IGhhbmRsZVByZXZpb3VzLCBkaXNhYmxlZDogZGlzYWJsZWRMZXNzZXIsIGlzUlRMOiBpc1JUTCB9LCBwYWdpbmF0aW9uSWNvblByZXZpb3VzKSxcbiAgICAgICAgICAgICFvcHRpb25zLm5vUm93c1BlclBhZ2UgJiYgIXNob3VsZFNob3cgJiYgc2VsZWN0LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCdXR0b24sIHsgaWQ6IFwicGFnaW5hdGlvbi1uZXh0LXBhZ2VcIiwgdHlwZTogXCJidXR0b25cIiwgXCJhcmlhLWxhYmVsXCI6IFwiTmV4dCBQYWdlXCIsIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZEdyZWF0ZXIsIG9uQ2xpY2s6IGhhbmRsZU5leHQsIGRpc2FibGVkOiBkaXNhYmxlZEdyZWF0ZXIsIGlzUlRMOiBpc1JUTCB9LCBwYWdpbmF0aW9uSWNvbk5leHQpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCdXR0b24sIHsgaWQ6IFwicGFnaW5hdGlvbi1sYXN0LXBhZ2VcIiwgdHlwZTogXCJidXR0b25cIiwgXCJhcmlhLWxhYmVsXCI6IFwiTGFzdCBQYWdlXCIsIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZEdyZWF0ZXIsIG9uQ2xpY2s6IGhhbmRsZUxhc3QsIGRpc2FibGVkOiBkaXNhYmxlZEdyZWF0ZXIsIGlzUlRMOiBpc1JUTCB9LCBwYWdpbmF0aW9uSWNvbkxhc3RQYWdlKSkpKTtcbn1cbi8vIGV4cG9ydCBkZWZhdWx0IFJlYWN0Lm1lbW8oUGFnaW5hdGlvbik7XG5leHBvcnRzLmRlZmF1bHQgPSBQYWdpbmF0aW9uO1xudmFyIHRlbXBsYXRlT2JqZWN0XzEsIHRlbXBsYXRlT2JqZWN0XzIsIHRlbXBsYXRlT2JqZWN0XzMsIHRlbXBsYXRlT2JqZWN0XzQsIHRlbXBsYXRlT2JqZWN0XzUsIHRlbXBsYXRlT2JqZWN0XzYsIHRlbXBsYXRlT2JqZWN0Xzc7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBQcm9ncmVzc1dyYXBwZXIgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKHByb3BzKSB7IHJldHVybiBwcm9wcy50aGVtZS5wcm9ncmVzcy5zdHlsZTsgfSk7XG5leHBvcnRzLmRlZmF1bHQgPSBQcm9ncmVzc1dyYXBwZXI7XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xuLyogSGFjayB3aGVuIHVzaW5nIGxheW92ZXJzL21lbnVzIHRoYXQgZ2V0IGNsaXBwZWQgYnkgb3ZlcmZsb3cteFxuICB3aGVuIGEgdGFibGUgaXMgcmVzcG9uc2l2ZSBkdWUgdG8gb3ZlcmZsb3cteHkgc2Nyb2xsIHNwZWMgc3R1cGlkaXR5LlxuICBOb3RlOiBUaGUgcGFyZW50IGVsZW1lbnQgaGVpZ2h0IG11c3QgYmUgc2V0IHRvIDEwMCUhXG4gIGh0dHBzOi8vd3d3LmJydW5pbGRvLm9yZy90ZXN0L092ZXJmbG93eHkyLmh0bWxcbiovXG52YXIgUmVzcG9uc2l2ZVdyYXBwZXIgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzMgfHwgKHRlbXBsYXRlT2JqZWN0XzMgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0Ym9yZGVyLXJhZGl1czogaW5oZXJpdDtcXG5cXHRcIiwgXCI7XFxuXFxuXFx0XCIsIFwiO1xcblxcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRib3JkZXItcmFkaXVzOiBpbmhlcml0O1xcblxcdFwiLCBcIjtcXG5cXG5cXHRcIiwgXCI7XFxuXFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgcmVzcG9uc2l2ZSA9IF9hLnJlc3BvbnNpdmUsIGZpeGVkSGVhZGVyID0gX2EuZml4ZWRIZWFkZXI7XG4gICAgcmV0dXJuIHJlc3BvbnNpdmUgJiYgKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuY3NzKSh0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0XFx0XFx0b3ZlcmZsb3cteDogYXV0bztcXG5cXG5cXHRcXHRcXHQvLyBoaWRkZW4gcHJldmVudHMgdmVydGljYWwgc2Nyb2xsaW5nIGluIGZpcmVmb3ggd2hlbiBmaXhlZEhlYWRlciBpcyBkaXNhYmxlZFxcblxcdFxcdFxcdG92ZXJmbG93LXk6IFwiLCBcIjtcXG5cXHRcXHRcXHRtaW4taGVpZ2h0OiAwO1xcblxcdFxcdFwiXSwgW1wiXFxuXFx0XFx0XFx0b3ZlcmZsb3cteDogYXV0bztcXG5cXG5cXHRcXHRcXHQvLyBoaWRkZW4gcHJldmVudHMgdmVydGljYWwgc2Nyb2xsaW5nIGluIGZpcmVmb3ggd2hlbiBmaXhlZEhlYWRlciBpcyBkaXNhYmxlZFxcblxcdFxcdFxcdG92ZXJmbG93LXk6IFwiLCBcIjtcXG5cXHRcXHRcXHRtaW4taGVpZ2h0OiAwO1xcblxcdFxcdFwiXSkpLCBmaXhlZEhlYWRlciA/ICdhdXRvJyA6ICdoaWRkZW4nKTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBfYiA9IF9hLmZpeGVkSGVhZGVyLCBmaXhlZEhlYWRlciA9IF9iID09PSB2b2lkIDAgPyBmYWxzZSA6IF9iLCBfYyA9IF9hLmZpeGVkSGVhZGVyU2Nyb2xsSGVpZ2h0LCBmaXhlZEhlYWRlclNjcm9sbEhlaWdodCA9IF9jID09PSB2b2lkIDAgPyAnMTAwdmgnIDogX2M7XG4gICAgcmV0dXJuIGZpeGVkSGVhZGVyICYmICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfMiB8fCAodGVtcGxhdGVPYmplY3RfMiA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdFxcdFxcdG1heC1oZWlnaHQ6IFwiLCBcIjtcXG5cXHRcXHRcXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XFxuXFx0XFx0XCJdLCBbXCJcXG5cXHRcXHRcXHRtYXgtaGVpZ2h0OiBcIiwgXCI7XFxuXFx0XFx0XFx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xcblxcdFxcdFwiXSkpLCBmaXhlZEhlYWRlclNjcm9sbEhlaWdodCk7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUucmVzcG9uc2l2ZVdyYXBwZXIuc3R5bGU7XG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IFJlc3BvbnNpdmVXcmFwcGVyO1xudmFyIHRlbXBsYXRlT2JqZWN0XzEsIHRlbXBsYXRlT2JqZWN0XzIsIHRlbXBsYXRlT2JqZWN0XzM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgRHJvcGRvd25fMSA9IHJlcXVpcmUoXCIuL2ljb25zL0Ryb3Bkb3duXCIpO1xudmFyIFNlbGVjdENvbnRyb2wgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuc2VsZWN0KHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0aGVpZ2h0OiAyNHB4O1xcblxcdG1heC13aWR0aDogMTAwJTtcXG5cXHR1c2VyLXNlbGVjdDogbm9uZTtcXG5cXHRwYWRkaW5nLWxlZnQ6IDhweDtcXG5cXHRwYWRkaW5nLXJpZ2h0OiAyNHB4O1xcblxcdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcblxcdGZvbnQtc2l6ZTogaW5oZXJpdDtcXG5cXHRjb2xvcjogaW5oZXJpdDtcXG5cXHRib3JkZXI6IG5vbmU7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0YXBwZWFyYW5jZTogbm9uZTtcXG5cXHRkaXJlY3Rpb246IGx0cjtcXG5cXHRmbGV4LXNocmluazogMDtcXG5cXG5cXHQmOjotbXMtZXhwYW5kIHtcXG5cXHRcXHRkaXNwbGF5OiBub25lO1xcblxcdH1cXG5cXG5cXHQmOmRpc2FibGVkOjotbXMtZXhwYW5kIHtcXG5cXHRcXHRiYWNrZ3JvdW5kOiAjZjYwO1xcblxcdH1cXG5cXG5cXHRvcHRpb24ge1xcblxcdFxcdGNvbG9yOiBpbml0aWFsO1xcblxcdH1cXG5cIl0sIFtcIlxcblxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRoZWlnaHQ6IDI0cHg7XFxuXFx0bWF4LXdpZHRoOiAxMDAlO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdHBhZGRpbmctbGVmdDogOHB4O1xcblxcdHBhZGRpbmctcmlnaHQ6IDI0cHg7XFxuXFx0Ym94LXNpemluZzogY29udGVudC1ib3g7XFxuXFx0Zm9udC1zaXplOiBpbmhlcml0O1xcblxcdGNvbG9yOiBpbmhlcml0O1xcblxcdGJvcmRlcjogbm9uZTtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRhcHBlYXJhbmNlOiBub25lO1xcblxcdGRpcmVjdGlvbjogbHRyO1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcblxcdCY6Oi1tcy1leHBhbmQge1xcblxcdFxcdGRpc3BsYXk6IG5vbmU7XFxuXFx0fVxcblxcblxcdCY6ZGlzYWJsZWQ6Oi1tcy1leHBhbmQge1xcblxcdFxcdGJhY2tncm91bmQ6ICNmNjA7XFxuXFx0fVxcblxcblxcdG9wdGlvbiB7XFxuXFx0XFx0Y29sb3I6IGluaXRpYWw7XFxuXFx0fVxcblwiXSkpKTtcbnZhciBTZWxlY3RXcmFwcGVyID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8yIHx8ICh0ZW1wbGF0ZU9iamVjdF8yID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcdGZvbnQtc2l6ZTogaW5oZXJpdDtcXG5cXHRjb2xvcjogaW5oZXJpdDtcXG5cXHRtYXJnaW4tdG9wOiAxcHg7XFxuXFxuXFx0c3ZnIHtcXG5cXHRcXHR0b3A6IDA7XFxuXFx0XFx0cmlnaHQ6IDA7XFxuXFx0XFx0Y29sb3I6IGluaGVyaXQ7XFxuXFx0XFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdFxcdGZpbGw6IGN1cnJlbnRDb2xvcjtcXG5cXHRcXHR3aWR0aDogMjRweDtcXG5cXHRcXHRoZWlnaHQ6IDI0cHg7XFxuXFx0XFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xcblxcdFxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdFxcdHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcdH1cXG5cIl0sIFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRmbGV4LXNocmluazogMDtcXG5cXHRmb250LXNpemU6IGluaGVyaXQ7XFxuXFx0Y29sb3I6IGluaGVyaXQ7XFxuXFx0bWFyZ2luLXRvcDogMXB4O1xcblxcblxcdHN2ZyB7XFxuXFx0XFx0dG9wOiAwO1xcblxcdFxcdHJpZ2h0OiAwO1xcblxcdFxcdGNvbG9yOiBpbmhlcml0O1xcblxcdFxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHRcXHRmaWxsOiBjdXJyZW50Q29sb3I7XFxuXFx0XFx0d2lkdGg6IDI0cHg7XFxuXFx0XFx0aGVpZ2h0OiAyNHB4O1xcblxcdFxcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG5cXHRcXHR1c2VyLXNlbGVjdDogbm9uZTtcXG5cXHRcXHRwb2ludGVyLWV2ZW50czogbm9uZTtcXG5cXHR9XFxuXCJdKSkpO1xudmFyIFNlbGVjdCA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBfYS5kZWZhdWx0VmFsdWUsIG9uQ2hhbmdlID0gX2Eub25DaGFuZ2UsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImRlZmF1bHRWYWx1ZVwiLCBcIm9uQ2hhbmdlXCJdKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VsZWN0V3JhcHBlciwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCBfX2Fzc2lnbih7IG9uQ2hhbmdlOiBvbkNoYW5nZSwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUgfSwgcmVzdCkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyb3Bkb3duXzEuZGVmYXVsdCwgbnVsbCkpKTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBTZWxlY3Q7XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIGRpc2FibGVkQ1NTID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuY3NzKSh0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFx0b3BhY2l0eTogMC40O1xcblwiXSwgW1wiXFxuXFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFx0b3BhY2l0eTogMC40O1xcblwiXSkpKTtcbnZhciBUYWJsZVN0eWxlID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8yIHx8ICh0ZW1wbGF0ZU9iamVjdF8yID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtd2lkdGg6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0bWF4LXdpZHRoOiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBkaXNhYmxlZCA9IF9hLmRpc2FibGVkO1xuICAgIHJldHVybiBkaXNhYmxlZCAmJiBkaXNhYmxlZENTUztcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS50YWJsZS5zdHlsZTtcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gVGFibGVTdHlsZTtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xLCB0ZW1wbGF0ZU9iamVjdF8yO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgQm9keSA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cIl0sIFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cIl0pKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCb2R5O1xudmFyIHRlbXBsYXRlT2JqZWN0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG4vLyBAdHMtaWdub3JlXG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBDZWxsXzEgPSByZXF1aXJlKFwiLi9DZWxsXCIpO1xudmFyIHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgb3ZlcmZsb3dDU1MgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXY6Zmlyc3QtY2hpbGQge1xcblxcdFxcdHdoaXRlLXNwYWNlOiBcIiwgXCI7XFxuXFx0XFx0b3ZlcmZsb3c6IFwiLCBcIjtcXG5cXHRcXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cXHR9XFxuXCJdLCBbXCJcXG5cXHRkaXY6Zmlyc3QtY2hpbGQge1xcblxcdFxcdHdoaXRlLXNwYWNlOiBcIiwgXCI7XFxuXFx0XFx0b3ZlcmZsb3c6IFwiLCBcIjtcXG5cXHRcXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cXHR9XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB3cmFwQ2VsbCA9IF9hLndyYXBDZWxsO1xuICAgIHJldHVybiAod3JhcENlbGwgPyAnbm9ybWFsJyA6ICdub3dyYXAnKTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBhbGxvd092ZXJmbG93ID0gX2EuYWxsb3dPdmVyZmxvdztcbiAgICByZXR1cm4gKGFsbG93T3ZlcmZsb3cgPyAndmlzaWJsZScgOiAnaGlkZGVuJyk7XG59KTtcbnZhciBDZWxsU3R5bGUgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0KShDZWxsXzEuQ2VsbEV4dGVuZGVkKS5hdHRycyhmdW5jdGlvbiAocHJvcHMpIHsgcmV0dXJuICh7XG4gICAgc3R5bGU6IHByb3BzLnN0eWxlLFxufSk7IH0pKHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgcmVuZGVyQXNDZWxsID0gX2EucmVuZGVyQXNDZWxsO1xuICAgIHJldHVybiAhcmVuZGVyQXNDZWxsICYmIG92ZXJmbG93Q1NTO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWUsIGlzRHJhZ2dpbmcgPSBfYS5pc0RyYWdnaW5nO1xuICAgIHJldHVybiBpc0RyYWdnaW5nICYmIHRoZW1lLmNlbGxzLmRyYWdnaW5nU3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgY2VsbFN0eWxlID0gX2EuY2VsbFN0eWxlO1xuICAgIHJldHVybiBjZWxsU3R5bGU7XG59KTtcbmZ1bmN0aW9uIENlbGwoX2EpIHtcbiAgICB2YXIgaWQgPSBfYS5pZCwgY29sdW1uID0gX2EuY29sdW1uLCByb3cgPSBfYS5yb3csIHJvd0luZGV4ID0gX2Eucm93SW5kZXgsIGRhdGFUYWcgPSBfYS5kYXRhVGFnLCBpc0RyYWdnaW5nID0gX2EuaXNEcmFnZ2luZywgb25EcmFnU3RhcnQgPSBfYS5vbkRyYWdTdGFydCwgb25EcmFnT3ZlciA9IF9hLm9uRHJhZ092ZXIsIG9uRHJhZ0VuZCA9IF9hLm9uRHJhZ0VuZCwgb25EcmFnRW50ZXIgPSBfYS5vbkRyYWdFbnRlciwgb25EcmFnTGVhdmUgPSBfYS5vbkRyYWdMZWF2ZTtcbiAgICB2YXIgX2IgPSAoMCwgdXRpbF8xLmdldENvbmRpdGlvbmFsU3R5bGUpKHJvdywgY29sdW1uLmNvbmRpdGlvbmFsQ2VsbFN0eWxlcywgWydyZHRfVGFibGVDZWxsJ10pLCBzdHlsZSA9IF9iLnN0eWxlLCBjbGFzc05hbWVzID0gX2IuY2xhc3NOYW1lcztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2VsbFN0eWxlLCB7IGlkOiBpZCwgXCJkYXRhLWNvbHVtbi1pZFwiOiBjb2x1bW4uaWQsIHJvbGU6IFwiY2VsbFwiLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMsIFwiZGF0YS10YWdcIjogZGF0YVRhZywgY2VsbFN0eWxlOiBjb2x1bW4uc3R5bGUsIHJlbmRlckFzQ2VsbDogISFjb2x1bW4uY2VsbCwgYWxsb3dPdmVyZmxvdzogY29sdW1uLmFsbG93T3ZlcmZsb3csIGJ1dHRvbjogY29sdW1uLmJ1dHRvbiwgY2VudGVyOiBjb2x1bW4uY2VudGVyLCBjb21wYWN0OiBjb2x1bW4uY29tcGFjdCwgZ3JvdzogY29sdW1uLmdyb3csIGhpZGU6IGNvbHVtbi5oaWRlLCBtYXhXaWR0aDogY29sdW1uLm1heFdpZHRoLCBtaW5XaWR0aDogY29sdW1uLm1pbldpZHRoLCByaWdodDogY29sdW1uLnJpZ2h0LCB3aWR0aDogY29sdW1uLndpZHRoLCB3cmFwQ2VsbDogY29sdW1uLndyYXAsIHN0eWxlOiBzdHlsZSwgaXNEcmFnZ2luZzogaXNEcmFnZ2luZywgb25EcmFnU3RhcnQ6IG9uRHJhZ1N0YXJ0LCBvbkRyYWdPdmVyOiBvbkRyYWdPdmVyLCBvbkRyYWdFbmQ6IG9uRHJhZ0VuZCwgb25EcmFnRW50ZXI6IG9uRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZTogb25EcmFnTGVhdmUgfSxcbiAgICAgICAgIWNvbHVtbi5jZWxsICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBcImRhdGEtdGFnXCI6IGRhdGFUYWcgfSwgKDAsIHV0aWxfMS5nZXRQcm9wZXJ0eSkocm93LCBjb2x1bW4uc2VsZWN0b3IsIGNvbHVtbi5mb3JtYXQsIHJvd0luZGV4KSksXG4gICAgICAgIGNvbHVtbi5jZWxsICYmIGNvbHVtbi5jZWxsKHJvdywgcm93SW5kZXgsIGNvbHVtbiwgaWQpKSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSZWFjdC5tZW1vKENlbGwpO1xudmFyIHRlbXBsYXRlT2JqZWN0XzEsIHRlbXBsYXRlT2JqZWN0XzI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBDZWxsXzEgPSByZXF1aXJlKFwiLi9DZWxsXCIpO1xudmFyIENoZWNrYm94XzEgPSByZXF1aXJlKFwiLi9DaGVja2JveFwiKTtcbnZhciBUYWJsZUNlbGxDaGVja2JveFN0eWxlID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdCkoQ2VsbF8xLkNlbGxCYXNlKSh0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZmxleDogMCAwIDQ4cHg7XFxuXFx0bWluLXdpZHRoOiA0OHB4O1xcblxcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cIl0sIFtcIlxcblxcdGZsZXg6IDAgMCA0OHB4O1xcblxcdG1pbi13aWR0aDogNDhweDtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXCJdKSkpO1xuZnVuY3Rpb24gVGFibGVDZWxsQ2hlY2tib3goX2EpIHtcbiAgICB2YXIgbmFtZSA9IF9hLm5hbWUsIGtleUZpZWxkID0gX2Eua2V5RmllbGQsIHJvdyA9IF9hLnJvdywgcm93Q291bnQgPSBfYS5yb3dDb3VudCwgc2VsZWN0ZWQgPSBfYS5zZWxlY3RlZCwgc2VsZWN0YWJsZVJvd3NDb21wb25lbnQgPSBfYS5zZWxlY3RhYmxlUm93c0NvbXBvbmVudCwgc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcyA9IF9hLnNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIHNlbGVjdGFibGVSb3dzU2luZ2xlID0gX2Euc2VsZWN0YWJsZVJvd3NTaW5nbGUsIHNlbGVjdGFibGVSb3dEaXNhYmxlZCA9IF9hLnNlbGVjdGFibGVSb3dEaXNhYmxlZCwgb25TZWxlY3RlZFJvdyA9IF9hLm9uU2VsZWN0ZWRSb3c7XG4gICAgdmFyIGRpc2FibGVkID0gISEoc2VsZWN0YWJsZVJvd0Rpc2FibGVkICYmIHNlbGVjdGFibGVSb3dEaXNhYmxlZChyb3cpKTtcbiAgICB2YXIgaGFuZGxlT25Sb3dTZWxlY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25TZWxlY3RlZFJvdyh7XG4gICAgICAgICAgICB0eXBlOiAnU0VMRUNUX1NJTkdMRV9ST1cnLFxuICAgICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgICBpc1NlbGVjdGVkOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIGtleUZpZWxkOiBrZXlGaWVsZCxcbiAgICAgICAgICAgIHJvd0NvdW50OiByb3dDb3VudCxcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdDogc2VsZWN0YWJsZVJvd3NTaW5nbGUsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlQ2VsbENoZWNrYm94U3R5bGUsIHsgb25DbGljazogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0sIGNsYXNzTmFtZTogXCJyZHRfVGFibGVDZWxsXCIsIG5vUGFkZGluZzogdHJ1ZSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94XzEuZGVmYXVsdCwgeyBuYW1lOiBuYW1lLCBjb21wb25lbnQ6IHNlbGVjdGFibGVSb3dzQ29tcG9uZW50LCBjb21wb25lbnRPcHRpb25zOiBzZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzLCBjaGVja2VkOiBzZWxlY3RlZCwgXCJhcmlhLWNoZWNrZWRcIjogc2VsZWN0ZWQsIG9uQ2xpY2s6IGhhbmRsZU9uUm93U2VsZWN0ZWQsIGRpc2FibGVkOiBkaXNhYmxlZCB9KSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gVGFibGVDZWxsQ2hlY2tib3g7XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIENlbGxfMSA9IHJlcXVpcmUoXCIuL0NlbGxcIik7XG52YXIgRXhwYW5kZXJCdXR0b25fMSA9IHJlcXVpcmUoXCIuL0V4cGFuZGVyQnV0dG9uXCIpO1xudmFyIENlbGxFeHBhbmRlclN0eWxlID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdCkoQ2VsbF8xLkNlbGxCYXNlKSh0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRmb250LXdlaWdodDogNDAwO1xcblxcdG1pbi13aWR0aDogNDhweDtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFx0bWluLXdpZHRoOiA0OHB4O1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmV4cGFuZGVyQ2VsbC5zdHlsZTtcbn0pO1xuZnVuY3Rpb24gQ2VsbEV4cGFuZGVyKF9hKSB7XG4gICAgdmFyIHJvdyA9IF9hLnJvdywgX2IgPSBfYS5leHBhbmRlZCwgZXhwYW5kZWQgPSBfYiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYiwgZXhwYW5kYWJsZUljb24gPSBfYS5leHBhbmRhYmxlSWNvbiwgaWQgPSBfYS5pZCwgb25Ub2dnbGVkID0gX2Eub25Ub2dnbGVkLCBfYyA9IF9hLmRpc2FibGVkLCBkaXNhYmxlZCA9IF9jID09PSB2b2lkIDAgPyBmYWxzZSA6IF9jO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDZWxsRXhwYW5kZXJTdHlsZSwgeyBvbkNsaWNrOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKTsgfSwgbm9QYWRkaW5nOiB0cnVlIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kZXJCdXR0b25fMS5kZWZhdWx0LCB7IGlkOiBpZCwgcm93OiByb3csIGV4cGFuZGVkOiBleHBhbmRlZCwgZXhwYW5kYWJsZUljb246IGV4cGFuZGFibGVJY29uLCBkaXNhYmxlZDogZGlzYWJsZWQsIG9uVG9nZ2xlZDogb25Ub2dnbGVkIH0pKSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBDZWxsRXhwYW5kZXI7XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIENlbGxfMSA9IHJlcXVpcmUoXCIuL0NlbGxcIik7XG52YXIgTmF0aXZlU29ydEljb25fMSA9IHJlcXVpcmUoXCIuL2ljb25zL05hdGl2ZVNvcnRJY29uXCIpO1xudmFyIHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xudmFyIENvbHVtblN0eWxlZCA9ICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQpKENlbGxfMS5DZWxsRXh0ZW5kZWQpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGJ1dHRvbiA9IF9hLmJ1dHRvbjtcbiAgICByZXR1cm4gYnV0dG9uICYmICd0ZXh0LWFsaWduOiBjZW50ZXInO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWUsIGlzRHJhZ2dpbmcgPSBfYS5pc0RyYWdnaW5nO1xuICAgIHJldHVybiBpc0RyYWdnaW5nICYmIHRoZW1lLmhlYWRDZWxscy5kcmFnZ2luZ1N0eWxlO1xufSk7XG52YXIgc29ydGFibGVDU1MgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzMgfHwgKHRlbXBsYXRlT2JqZWN0XzMgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0c3Bhbi5fX3JkdF9jdXN0b21fc29ydF9pY29uX18ge1xcblxcdFxcdGksXFxuXFx0XFx0c3ZnIHtcXG5cXHRcXHRcXHR0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAwLCAwKSc7XFxuXFx0XFx0XFx0XCIsIFwiO1xcblxcdFxcdFxcdGNvbG9yOiBpbmhlcml0O1xcblxcdFxcdFxcdGZvbnQtc2l6ZTogMThweDtcXG5cXHRcXHRcXHRoZWlnaHQ6IDE4cHg7XFxuXFx0XFx0XFx0d2lkdGg6IDE4cHg7XFxuXFx0XFx0XFx0YmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcblxcdFxcdFxcdHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XFxuXFx0XFx0XFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogOTVtcztcXG5cXHRcXHRcXHR0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XFxuXFx0XFx0fVxcblxcblxcdFxcdCYuYXNjIGksXFxuXFx0XFx0Ji5hc2Mgc3ZnIHtcXG5cXHRcXHRcXHR0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcblxcdHNwYW4uX19yZHRfY3VzdG9tX3NvcnRfaWNvbl9fIHtcXG5cXHRcXHRpLFxcblxcdFxcdHN2ZyB7XFxuXFx0XFx0XFx0dHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMCwgMCknO1xcblxcdFxcdFxcdFwiLCBcIjtcXG5cXHRcXHRcXHRjb2xvcjogaW5oZXJpdDtcXG5cXHRcXHRcXHRmb250LXNpemU6IDE4cHg7XFxuXFx0XFx0XFx0aGVpZ2h0OiAxOHB4O1xcblxcdFxcdFxcdHdpZHRoOiAxOHB4O1xcblxcdFxcdFxcdGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcXG5cXHRcXHRcXHR0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xcblxcdFxcdFxcdHRyYW5zaXRpb24tZHVyYXRpb246IDk1bXM7XFxuXFx0XFx0XFx0dHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xcblxcdFxcdH1cXG5cXG5cXHRcXHQmLmFzYyBpLFxcblxcdFxcdCYuYXNjIHN2ZyB7XFxuXFx0XFx0XFx0dHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNvcnRBY3RpdmUgPSBfYS5zb3J0QWN0aXZlO1xuICAgIHJldHVybiAoc29ydEFjdGl2ZSA/ICdvcGFjaXR5OiAxJyA6ICdvcGFjaXR5OiAwJyk7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgc29ydEFjdGl2ZSA9IF9hLnNvcnRBY3RpdmU7XG4gICAgcmV0dXJuICFzb3J0QWN0aXZlICYmICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfMiB8fCAodGVtcGxhdGVPYmplY3RfMiA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdFxcdFxcdCY6aG92ZXIsXFxuXFx0XFx0XFx0Jjpmb2N1cyB7XFxuXFx0XFx0XFx0XFx0b3BhY2l0eTogMC43O1xcblxcblxcdFxcdFxcdFxcdHNwYW4sXFxuXFx0XFx0XFx0XFx0c3Bhbi5fX3JkdF9jdXN0b21fc29ydF9pY29uX18gKiB7XFxuXFx0XFx0XFx0XFx0XFx0b3BhY2l0eTogMC43O1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9XFxuXFx0XFx0XCJdLCBbXCJcXG5cXHRcXHRcXHQmOmhvdmVyLFxcblxcdFxcdFxcdCY6Zm9jdXMge1xcblxcdFxcdFxcdFxcdG9wYWNpdHk6IDAuNztcXG5cXG5cXHRcXHRcXHRcXHRzcGFuLFxcblxcdFxcdFxcdFxcdHNwYW4uX19yZHRfY3VzdG9tX3NvcnRfaWNvbl9fICoge1xcblxcdFxcdFxcdFxcdFxcdG9wYWNpdHk6IDAuNztcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fVxcblxcdFxcdFwiXSkpKTtcbn0pO1xudmFyIENvbHVtblNvcnRhYmxlID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF80IHx8ICh0ZW1wbGF0ZU9iamVjdF80ID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IGluaGVyaXQ7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdG91dGxpbmU6IG5vbmU7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0b3ZlcmZsb3c6IGhpZGRlbjtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGp1c3RpZnktY29udGVudDogaW5oZXJpdDtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0b3V0bGluZTogbm9uZTtcXG5cXHR1c2VyLXNlbGVjdDogbm9uZTtcXG5cXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGRpc2FibGVkID0gX2EuZGlzYWJsZWQ7XG4gICAgcmV0dXJuICFkaXNhYmxlZCAmJiBzb3J0YWJsZUNTUztcbn0pO1xudmFyIENvbHVtblRleHQgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzUgfHwgKHRlbXBsYXRlT2JqZWN0XzUgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuXCJdLCBbXCJcXG5cXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuXCJdKSkpO1xuZnVuY3Rpb24gVGFibGVDb2woX2EpIHtcbiAgICB2YXIgY29sdW1uID0gX2EuY29sdW1uLCBkaXNhYmxlZCA9IF9hLmRpc2FibGVkLCBkcmFnZ2luZ0NvbHVtbklkID0gX2EuZHJhZ2dpbmdDb2x1bW5JZCwgX2IgPSBfYS5zZWxlY3RlZENvbHVtbiwgc2VsZWN0ZWRDb2x1bW4gPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYiwgc29ydERpcmVjdGlvbiA9IF9hLnNvcnREaXJlY3Rpb24sIHNvcnRJY29uID0gX2Euc29ydEljb24sIHNvcnRTZXJ2ZXIgPSBfYS5zb3J0U2VydmVyLCBwYWdpbmF0aW9uID0gX2EucGFnaW5hdGlvbiwgcGFnaW5hdGlvblNlcnZlciA9IF9hLnBhZ2luYXRpb25TZXJ2ZXIsIHBlcnNpc3RTZWxlY3RlZE9uU29ydCA9IF9hLnBlcnNpc3RTZWxlY3RlZE9uU29ydCwgc2VsZWN0YWJsZVJvd3NWaXNpYmxlT25seSA9IF9hLnNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHksIG9uU29ydCA9IF9hLm9uU29ydCwgb25EcmFnU3RhcnQgPSBfYS5vbkRyYWdTdGFydCwgb25EcmFnT3ZlciA9IF9hLm9uRHJhZ092ZXIsIG9uRHJhZ0VuZCA9IF9hLm9uRHJhZ0VuZCwgb25EcmFnRW50ZXIgPSBfYS5vbkRyYWdFbnRlciwgb25EcmFnTGVhdmUgPSBfYS5vbkRyYWdMZWF2ZTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbHVtbi5zZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJXYXJuaW5nOiBcIi5jb25jYXQoY29sdW1uLnNlbGVjdG9yLCBcIiBpcyBhIHN0cmluZyBiYXNlZCBjb2x1bW4gc2VsZWN0b3Igd2hpY2ggaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBvZiB2NyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHY4LiBJbnN0ZWFkLCB1c2UgYSBzZWxlY3RvciBmdW5jdGlvbiBlLmcuIHJvdyA9PiByb3dbZmllbGRdLi4uXCIpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgW10pO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc2hvd1Rvb2x0aXAgPSBfY1swXSwgc2V0U2hvd1Rvb2x0aXAgPSBfY1sxXTtcbiAgICB2YXIgY29sdW1uUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChjb2x1bW5SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgc2V0U2hvd1Rvb2x0aXAoY29sdW1uUmVmLmN1cnJlbnQuc2Nyb2xsV2lkdGggPiBjb2x1bW5SZWYuY3VycmVudC5jbGllbnRXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9LCBbc2hvd1Rvb2x0aXBdKTtcbiAgICBpZiAoY29sdW1uLm9taXQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBoYW5kbGVTb3J0Q2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWNvbHVtbi5zb3J0YWJsZSAmJiAhY29sdW1uLnNlbGVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IHNvcnREaXJlY3Rpb247XG4gICAgICAgIGlmICgoMCwgdXRpbF8xLmVxdWFsaXplSWQpKHNlbGVjdGVkQ29sdW1uLmlkLCBjb2x1bW4uaWQpKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSBzb3J0RGlyZWN0aW9uID09PSB0eXBlc18xLlNvcnRPcmRlci5BU0MgPyB0eXBlc18xLlNvcnRPcmRlci5ERVNDIDogdHlwZXNfMS5Tb3J0T3JkZXIuQVNDO1xuICAgICAgICB9XG4gICAgICAgIG9uU29ydCh7XG4gICAgICAgICAgICB0eXBlOiAnU09SVF9DSEFOR0UnLFxuICAgICAgICAgICAgc29ydERpcmVjdGlvbjogZGlyZWN0aW9uLFxuICAgICAgICAgICAgc2VsZWN0ZWRDb2x1bW46IGNvbHVtbixcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRPblNvcnQ6IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb25TZXJ2ZXIgJiYgIXBlcnNpc3RTZWxlY3RlZE9uU29ydCkgfHwgc29ydFNlcnZlciB8fCBzZWxlY3RhYmxlUm93c1Zpc2libGVPbmx5LFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVLZXlQcmVzcyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICBoYW5kbGVTb3J0Q2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciByZW5kZXJOYXRpdmVTb3J0SWNvbiA9IGZ1bmN0aW9uIChzb3J0QWN0aXZlKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChOYXRpdmVTb3J0SWNvbl8xLmRlZmF1bHQsIHsgc29ydEFjdGl2ZTogc29ydEFjdGl2ZSwgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB9KSk7IH07XG4gICAgdmFyIHJlbmRlckN1c3RvbVNvcnRJY29uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBbc29ydERpcmVjdGlvbiwgJ19fcmR0X2N1c3RvbV9zb3J0X2ljb25fXyddLmpvaW4oJyAnKSB9LCBzb3J0SWNvbikpOyB9O1xuICAgIHZhciBzb3J0QWN0aXZlID0gISEoY29sdW1uLnNvcnRhYmxlICYmICgwLCB1dGlsXzEuZXF1YWxpemVJZCkoc2VsZWN0ZWRDb2x1bW4uaWQsIGNvbHVtbi5pZCkpO1xuICAgIHZhciBkaXNhYmxlU29ydCA9ICFjb2x1bW4uc29ydGFibGUgfHwgZGlzYWJsZWQ7XG4gICAgdmFyIG5hdGl2ZVNvcnRJY29uTGVmdCA9IGNvbHVtbi5zb3J0YWJsZSAmJiAhc29ydEljb24gJiYgIWNvbHVtbi5yaWdodDtcbiAgICB2YXIgbmF0aXZlU29ydEljb25SaWdodCA9IGNvbHVtbi5zb3J0YWJsZSAmJiAhc29ydEljb24gJiYgY29sdW1uLnJpZ2h0O1xuICAgIHZhciBjdXN0b21Tb3J0SWNvbkxlZnQgPSBjb2x1bW4uc29ydGFibGUgJiYgc29ydEljb24gJiYgIWNvbHVtbi5yaWdodDtcbiAgICB2YXIgY3VzdG9tU29ydEljb25SaWdodCA9IGNvbHVtbi5zb3J0YWJsZSAmJiBzb3J0SWNvbiAmJiBjb2x1bW4ucmlnaHQ7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbHVtblN0eWxlZCwgeyBcImRhdGEtY29sdW1uLWlkXCI6IGNvbHVtbi5pZCwgY2xhc3NOYW1lOiBcInJkdF9UYWJsZUNvbFwiLCBoZWFkQ2VsbDogdHJ1ZSwgYWxsb3dPdmVyZmxvdzogY29sdW1uLmFsbG93T3ZlcmZsb3csIGJ1dHRvbjogY29sdW1uLmJ1dHRvbiwgY29tcGFjdDogY29sdW1uLmNvbXBhY3QsIGdyb3c6IGNvbHVtbi5ncm93LCBoaWRlOiBjb2x1bW4uaGlkZSwgbWF4V2lkdGg6IGNvbHVtbi5tYXhXaWR0aCwgbWluV2lkdGg6IGNvbHVtbi5taW5XaWR0aCwgcmlnaHQ6IGNvbHVtbi5yaWdodCwgY2VudGVyOiBjb2x1bW4uY2VudGVyLCB3aWR0aDogY29sdW1uLndpZHRoLCBkcmFnZ2FibGU6IGNvbHVtbi5yZW9yZGVyLCBpc0RyYWdnaW5nOiAoMCwgdXRpbF8xLmVxdWFsaXplSWQpKGNvbHVtbi5pZCwgZHJhZ2dpbmdDb2x1bW5JZCksIG9uRHJhZ1N0YXJ0OiBvbkRyYWdTdGFydCwgb25EcmFnT3Zlcjogb25EcmFnT3Zlciwgb25EcmFnRW5kOiBvbkRyYWdFbmQsIG9uRHJhZ0VudGVyOiBvbkRyYWdFbnRlciwgb25EcmFnTGVhdmU6IG9uRHJhZ0xlYXZlIH0sIGNvbHVtbi5uYW1lICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbHVtblNvcnRhYmxlLCB7IFwiZGF0YS1jb2x1bW4taWRcIjogY29sdW1uLmlkLCBcImRhdGEtc29ydC1pZFwiOiBjb2x1bW4uaWQsIHJvbGU6IFwiY29sdW1uaGVhZGVyXCIsIHRhYkluZGV4OiAwLCBjbGFzc05hbWU6IFwicmR0X1RhYmxlQ29sX1NvcnRhYmxlXCIsIG9uQ2xpY2s6ICFkaXNhYmxlU29ydCA/IGhhbmRsZVNvcnRDaGFuZ2UgOiB1bmRlZmluZWQsIG9uS2V5UHJlc3M6ICFkaXNhYmxlU29ydCA/IGhhbmRsZUtleVByZXNzIDogdW5kZWZpbmVkLCBzb3J0QWN0aXZlOiAhZGlzYWJsZVNvcnQgJiYgc29ydEFjdGl2ZSwgZGlzYWJsZWQ6IGRpc2FibGVTb3J0IH0sXG4gICAgICAgICFkaXNhYmxlU29ydCAmJiBjdXN0b21Tb3J0SWNvblJpZ2h0ICYmIHJlbmRlckN1c3RvbVNvcnRJY29uKCksXG4gICAgICAgICFkaXNhYmxlU29ydCAmJiBuYXRpdmVTb3J0SWNvblJpZ2h0ICYmIHJlbmRlck5hdGl2ZVNvcnRJY29uKHNvcnRBY3RpdmUpLFxuICAgICAgICB0eXBlb2YgY29sdW1uLm5hbWUgPT09ICdzdHJpbmcnID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29sdW1uVGV4dCwgeyB0aXRsZTogc2hvd1Rvb2x0aXAgPyBjb2x1bW4ubmFtZSA6IHVuZGVmaW5lZCwgcmVmOiBjb2x1bW5SZWYsIFwiZGF0YS1jb2x1bW4taWRcIjogY29sdW1uLmlkIH0sIGNvbHVtbi5uYW1lKSkgOiAoY29sdW1uLm5hbWUpLFxuICAgICAgICAhZGlzYWJsZVNvcnQgJiYgY3VzdG9tU29ydEljb25MZWZ0ICYmIHJlbmRlckN1c3RvbVNvcnRJY29uKCksXG4gICAgICAgICFkaXNhYmxlU29ydCAmJiBuYXRpdmVTb3J0SWNvbkxlZnQgJiYgcmVuZGVyTmF0aXZlU29ydEljb24oc29ydEFjdGl2ZSkpKSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gUmVhY3QubWVtbyhUYWJsZUNvbCk7XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMiwgdGVtcGxhdGVPYmplY3RfMywgdGVtcGxhdGVPYmplY3RfNCwgdGVtcGxhdGVPYmplY3RfNTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIENlbGxfMSA9IHJlcXVpcmUoXCIuL0NlbGxcIik7XG52YXIgQ2hlY2tib3hfMSA9IHJlcXVpcmUoXCIuL0NoZWNrYm94XCIpO1xudmFyIENvbHVtblN0eWxlID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdCkoQ2VsbF8xLkNlbGxCYXNlKSh0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZmxleDogMCAwIDQ4cHg7XFxuXFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHR1c2VyLXNlbGVjdDogbm9uZTtcXG5cXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdGZvbnQtc2l6ZTogdW5zZXQ7XFxuXCJdLCBbXCJcXG5cXHRmbGV4OiAwIDAgNDhweDtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0Zm9udC1zaXplOiB1bnNldDtcXG5cIl0pKSk7XG5mdW5jdGlvbiBDb2x1bW5DaGVja2JveChfYSkge1xuICAgIHZhciBfYiA9IF9hLmhlYWRDZWxsLCBoZWFkQ2VsbCA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2IsIHJvd0RhdGEgPSBfYS5yb3dEYXRhLCBrZXlGaWVsZCA9IF9hLmtleUZpZWxkLCBhbGxTZWxlY3RlZCA9IF9hLmFsbFNlbGVjdGVkLCBtZXJnZVNlbGVjdGlvbnMgPSBfYS5tZXJnZVNlbGVjdGlvbnMsIHNlbGVjdGVkUm93cyA9IF9hLnNlbGVjdGVkUm93cywgc2VsZWN0YWJsZVJvd3NDb21wb25lbnQgPSBfYS5zZWxlY3RhYmxlUm93c0NvbXBvbmVudCwgc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcyA9IF9hLnNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIHNlbGVjdGFibGVSb3dEaXNhYmxlZCA9IF9hLnNlbGVjdGFibGVSb3dEaXNhYmxlZCwgb25TZWxlY3RBbGxSb3dzID0gX2Eub25TZWxlY3RBbGxSb3dzO1xuICAgIHZhciBpbmRldGVybWluYXRlID0gc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgIWFsbFNlbGVjdGVkO1xuICAgIHZhciByb3dzID0gc2VsZWN0YWJsZVJvd0Rpc2FibGVkID8gcm93RGF0YS5maWx0ZXIoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gIXNlbGVjdGFibGVSb3dEaXNhYmxlZChyb3cpOyB9KSA6IHJvd0RhdGE7XG4gICAgdmFyIGlzRGlzYWJsZWQgPSByb3dzLmxlbmd0aCA9PT0gMDtcbiAgICAvLyBUaGUgcm93IGNvdW50IHNob3VsZCBzdWJ0cmFjdCByb3dzIHRoYXQgYXJlIGRpc2FibGVkXG4gICAgdmFyIHJvd0NvdW50ID0gTWF0aC5taW4ocm93RGF0YS5sZW5ndGgsIHJvd3MubGVuZ3RoKTtcbiAgICB2YXIgaGFuZGxlU2VsZWN0QWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBvblNlbGVjdEFsbFJvd3Moe1xuICAgICAgICAgICAgdHlwZTogJ1NFTEVDVF9BTExfUk9XUycsXG4gICAgICAgICAgICByb3dzOiByb3dzLFxuICAgICAgICAgICAgcm93Q291bnQ6IHJvd0NvdW50LFxuICAgICAgICAgICAgbWVyZ2VTZWxlY3Rpb25zOiBtZXJnZVNlbGVjdGlvbnMsXG4gICAgICAgICAgICBrZXlGaWVsZDoga2V5RmllbGQsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbHVtblN0eWxlLCB7IGNsYXNzTmFtZTogXCJyZHRfVGFibGVDb2xcIiwgaGVhZENlbGw6IGhlYWRDZWxsLCBub1BhZGRpbmc6IHRydWUgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveF8xLmRlZmF1bHQsIHsgbmFtZTogXCJzZWxlY3QtYWxsLXJvd3NcIiwgY29tcG9uZW50OiBzZWxlY3RhYmxlUm93c0NvbXBvbmVudCwgY29tcG9uZW50T3B0aW9uczogc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcywgb25DbGljazogaGFuZGxlU2VsZWN0QWxsLCBjaGVja2VkOiBhbGxTZWxlY3RlZCwgaW5kZXRlcm1pbmF0ZTogaW5kZXRlcm1pbmF0ZSwgZGlzYWJsZWQ6IGlzRGlzYWJsZWQgfSkpKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IENvbHVtbkNoZWNrYm94O1xudmFyIHRlbXBsYXRlT2JqZWN0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBDZWxsXzEgPSByZXF1aXJlKFwiLi9DZWxsXCIpO1xudmFyIENvbHVtbkV4cGFuZGVyID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdCkoQ2VsbF8xLkNlbGxCYXNlKSh0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmV4cGFuZGVyQ2VsbC5zdHlsZTtcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gQ29sdW1uRXhwYW5kZXI7XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIGZpeGVkQ1NTID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuY3NzKSh0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0cG9zaXRpb246IHN0aWNreTtcXG5cXHRwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7IC8qIFNhZmFyaSAqL1xcblxcdHRvcDogMDtcXG5cXHR6LWluZGV4OiAxO1xcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHN0aWNreTtcXG5cXHRwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7IC8qIFNhZmFyaSAqL1xcblxcdHRvcDogMDtcXG5cXHR6LWluZGV4OiAxO1xcblwiXSkpKTtcbnZhciBIZWFkID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8yIHx8ICh0ZW1wbGF0ZU9iamVjdF8yID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgZml4ZWRIZWFkZXIgPSBfYS5maXhlZEhlYWRlcjtcbiAgICByZXR1cm4gZml4ZWRIZWFkZXIgJiYgZml4ZWRDU1M7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuaGVhZC5zdHlsZTtcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gSGVhZDtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xLCB0ZW1wbGF0ZU9iamVjdF8yO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgSGVhZFJvdyA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmhlYWRSb3cuc3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgZGVuc2UgPSBfYS5kZW5zZSwgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gZGVuc2UgJiYgdGhlbWUuaGVhZFJvdy5kZW5zZVN0eWxlO1xufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBIZWFkUm93O1xudmFyIHRlbXBsYXRlT2JqZWN0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBDb250ZXh0TWVudV8xID0gcmVxdWlyZShcIi4vQ29udGV4dE1lbnVcIik7XG52YXIgSGVhZGVyU3R5bGUgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleDogMSAxIGF1dG87XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0ZmxleC13cmFwOiB3cmFwO1xcblxcdFwiLCBcIlxcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0b3ZlcmZsb3c6IGhpZGRlbjtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXg6IDEgMSBhdXRvO1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGZsZXgtd3JhcDogd3JhcDtcXG5cXHRcIiwgXCJcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmhlYWRlci5zdHlsZTtcbn0pO1xudmFyIFRpdGxlID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8yIHx8ICh0ZW1wbGF0ZU9iamVjdF8yID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZmxleDogMSAwIGF1dG87XFxuXFx0Y29sb3I6IFwiLCBcIjtcXG5cXHRmb250LXNpemU6IFwiLCBcIjtcXG5cXHRmb250LXdlaWdodDogNDAwO1xcblwiXSwgW1wiXFxuXFx0ZmxleDogMSAwIGF1dG87XFxuXFx0Y29sb3I6IFwiLCBcIjtcXG5cXHRmb250LXNpemU6IFwiLCBcIjtcXG5cXHRmb250LXdlaWdodDogNDAwO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuaGVhZGVyLmZvbnRDb2xvcjtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS5oZWFkZXIuZm9udFNpemU7XG59KTtcbnZhciBBY3Rpb25zID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8zIHx8ICh0ZW1wbGF0ZU9iamVjdF8zID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZmxleDogMSAwIGF1dG87XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuXFxuXFx0PiAqIHtcXG5cXHRcXHRtYXJnaW4tbGVmdDogNXB4O1xcblxcdH1cXG5cIl0sIFtcIlxcblxcdGZsZXg6IDEgMCBhdXRvO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcblxcblxcdD4gKiB7XFxuXFx0XFx0bWFyZ2luLWxlZnQ6IDVweDtcXG5cXHR9XFxuXCJdKSkpO1xudmFyIEhlYWRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aXRsZSA9IF9hLnRpdGxlLCBfYiA9IF9hLmFjdGlvbnMsIGFjdGlvbnMgPSBfYiA9PT0gdm9pZCAwID8gbnVsbCA6IF9iLCBjb250ZXh0TWVzc2FnZSA9IF9hLmNvbnRleHRNZXNzYWdlLCBjb250ZXh0QWN0aW9ucyA9IF9hLmNvbnRleHRBY3Rpb25zLCBjb250ZXh0Q29tcG9uZW50ID0gX2EuY29udGV4dENvbXBvbmVudCwgc2VsZWN0ZWRDb3VudCA9IF9hLnNlbGVjdGVkQ291bnQsIGRpcmVjdGlvbiA9IF9hLmRpcmVjdGlvbiwgX2MgPSBfYS5zaG93TWVudSwgc2hvd01lbnUgPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChIZWFkZXJTdHlsZSwgeyBjbGFzc05hbWU6IFwicmR0X1RhYmxlSGVhZGVyXCIsIHJvbGU6IFwiaGVhZGluZ1wiLCBcImFyaWEtbGV2ZWxcIjogMSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRpdGxlLCBudWxsLCB0aXRsZSksXG4gICAgICAgIGFjdGlvbnMgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChBY3Rpb25zLCBudWxsLCBhY3Rpb25zKSxcbiAgICAgICAgc2hvd01lbnUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dE1lbnVfMS5kZWZhdWx0LCB7IGNvbnRleHRNZXNzYWdlOiBjb250ZXh0TWVzc2FnZSwgY29udGV4dEFjdGlvbnM6IGNvbnRleHRBY3Rpb25zLCBjb250ZXh0Q29tcG9uZW50OiBjb250ZXh0Q29tcG9uZW50LCBkaXJlY3Rpb246IGRpcmVjdGlvbiwgc2VsZWN0ZWRDb3VudDogc2VsZWN0ZWRDb3VudCB9KSkpKTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBIZWFkZXI7XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMiwgdGVtcGxhdGVPYmplY3RfMztcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIFRhYmxlQ2VsbF8xID0gcmVxdWlyZShcIi4vVGFibGVDZWxsXCIpO1xudmFyIFRhYmxlQ2VsbENoZWNrYm94XzEgPSByZXF1aXJlKFwiLi9UYWJsZUNlbGxDaGVja2JveFwiKTtcbnZhciBUYWJsZUNlbGxFeHBhbmRlcl8xID0gcmVxdWlyZShcIi4vVGFibGVDZWxsRXhwYW5kZXJcIik7XG52YXIgRXhwYW5kZXJSb3dfMSA9IHJlcXVpcmUoXCIuL0V4cGFuZGVyUm93XCIpO1xudmFyIHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG52YXIgaGlnaGxpZ2h0Q1NTID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuY3NzKSh0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0Jjpob3ZlciB7XFxuXFx0XFx0XCIsIFwiO1xcblxcdH1cXG5cIl0sIFtcIlxcblxcdCY6aG92ZXIge1xcblxcdFxcdFwiLCBcIjtcXG5cXHR9XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBoaWdobGlnaHRPbkhvdmVyID0gX2EuaGlnaGxpZ2h0T25Ib3ZlciwgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gaGlnaGxpZ2h0T25Ib3ZlciAmJiB0aGVtZS5yb3dzLmhpZ2hsaWdodE9uSG92ZXJTdHlsZTtcbn0pO1xudmFyIHBvaW50ZXJDU1MgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHQmOmhvdmVyIHtcXG5cXHRcXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0fVxcblwiXSwgW1wiXFxuXFx0Jjpob3ZlciB7XFxuXFx0XFx0Y3Vyc29yOiBwb2ludGVyO1xcblxcdH1cXG5cIl0pKSk7XG52YXIgVGFibGVSb3dTdHlsZSA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYuYXR0cnMoZnVuY3Rpb24gKHByb3BzKSB7IHJldHVybiAoe1xuICAgIHN0eWxlOiBwcm9wcy5zdHlsZSxcbn0pOyB9KSh0ZW1wbGF0ZU9iamVjdF8zIHx8ICh0ZW1wbGF0ZU9iamVjdF8zID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogc3RyZXRjaDtcXG5cXHRhbGlnbi1jb250ZW50OiBzdHJldGNoO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBzdHJldGNoO1xcblxcdGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2g7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLnJvd3Muc3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgZGVuc2UgPSBfYS5kZW5zZSwgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gZGVuc2UgJiYgdGhlbWUucm93cy5kZW5zZVN0eWxlO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHN0cmlwZWQgPSBfYS5zdHJpcGVkLCB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiBzdHJpcGVkICYmIHRoZW1lLnJvd3Muc3RyaXBlZFN0eWxlO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGhpZ2hsaWdodE9uSG92ZXIgPSBfYS5oaWdobGlnaHRPbkhvdmVyO1xuICAgIHJldHVybiBoaWdobGlnaHRPbkhvdmVyICYmIGhpZ2hsaWdodENTUztcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBwb2ludGVyT25Ib3ZlciA9IF9hLnBvaW50ZXJPbkhvdmVyO1xuICAgIHJldHVybiBwb2ludGVyT25Ib3ZlciAmJiBwb2ludGVyQ1NTO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNlbGVjdGVkID0gX2Euc2VsZWN0ZWQsIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHNlbGVjdGVkICYmIHRoZW1lLnJvd3Muc2VsZWN0ZWRIaWdobGlnaHRTdHlsZTtcbn0pO1xuZnVuY3Rpb24gUm93KF9hKSB7XG4gICAgdmFyIF9iID0gX2EuY29sdW1ucywgY29sdW1ucyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iLCBfYyA9IF9hLmNvbmRpdGlvbmFsUm93U3R5bGVzLCBjb25kaXRpb25hbFJvd1N0eWxlcyA9IF9jID09PSB2b2lkIDAgPyBbXSA6IF9jLCBfZCA9IF9hLmRlZmF1bHRFeHBhbmRlZCwgZGVmYXVsdEV4cGFuZGVkID0gX2QgPT09IHZvaWQgMCA/IGZhbHNlIDogX2QsIF9lID0gX2EuZGVmYXVsdEV4cGFuZGVyRGlzYWJsZWQsIGRlZmF1bHRFeHBhbmRlckRpc2FibGVkID0gX2UgPT09IHZvaWQgMCA/IGZhbHNlIDogX2UsIF9mID0gX2EuZGVuc2UsIGRlbnNlID0gX2YgPT09IHZvaWQgMCA/IGZhbHNlIDogX2YsIGV4cGFuZGFibGVJY29uID0gX2EuZXhwYW5kYWJsZUljb24sIF9nID0gX2EuZXhwYW5kYWJsZVJvd3MsIGV4cGFuZGFibGVSb3dzID0gX2cgPT09IHZvaWQgMCA/IGZhbHNlIDogX2csIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50ID0gX2EuZXhwYW5kYWJsZVJvd3NDb21wb25lbnQsIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMgPSBfYS5leHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzLCBleHBhbmRhYmxlUm93c0hpZGVFeHBhbmRlciA9IF9hLmV4cGFuZGFibGVSb3dzSGlkZUV4cGFuZGVyLCBfaCA9IF9hLmV4cGFuZE9uUm93Q2xpY2tlZCwgZXhwYW5kT25Sb3dDbGlja2VkID0gX2ggPT09IHZvaWQgMCA/IGZhbHNlIDogX2gsIF9qID0gX2EuZXhwYW5kT25Sb3dEb3VibGVDbGlja2VkLCBleHBhbmRPblJvd0RvdWJsZUNsaWNrZWQgPSBfaiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfaiwgX2sgPSBfYS5oaWdobGlnaHRPbkhvdmVyLCBoaWdobGlnaHRPbkhvdmVyID0gX2sgPT09IHZvaWQgMCA/IGZhbHNlIDogX2ssIGlkID0gX2EuaWQsIGV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXMgPSBfYS5leHBhbmRhYmxlSW5oZXJpdENvbmRpdGlvbmFsU3R5bGVzLCBrZXlGaWVsZCA9IF9hLmtleUZpZWxkLCBfbCA9IF9hLm9uUm93Q2xpY2tlZCwgb25Sb3dDbGlja2VkID0gX2wgPT09IHZvaWQgMCA/IHV0aWxfMS5ub29wIDogX2wsIF9tID0gX2Eub25Sb3dEb3VibGVDbGlja2VkLCBvblJvd0RvdWJsZUNsaWNrZWQgPSBfbSA9PT0gdm9pZCAwID8gdXRpbF8xLm5vb3AgOiBfbSwgX28gPSBfYS5vblJvd01vdXNlRW50ZXIsIG9uUm93TW91c2VFbnRlciA9IF9vID09PSB2b2lkIDAgPyB1dGlsXzEubm9vcCA6IF9vLCBfcCA9IF9hLm9uUm93TW91c2VMZWF2ZSwgb25Sb3dNb3VzZUxlYXZlID0gX3AgPT09IHZvaWQgMCA/IHV0aWxfMS5ub29wIDogX3AsIF9xID0gX2Eub25Sb3dFeHBhbmRUb2dnbGVkLCBvblJvd0V4cGFuZFRvZ2dsZWQgPSBfcSA9PT0gdm9pZCAwID8gdXRpbF8xLm5vb3AgOiBfcSwgX3IgPSBfYS5vblNlbGVjdGVkUm93LCBvblNlbGVjdGVkUm93ID0gX3IgPT09IHZvaWQgMCA/IHV0aWxfMS5ub29wIDogX3IsIF9zID0gX2EucG9pbnRlck9uSG92ZXIsIHBvaW50ZXJPbkhvdmVyID0gX3MgPT09IHZvaWQgMCA/IGZhbHNlIDogX3MsIHJvdyA9IF9hLnJvdywgcm93Q291bnQgPSBfYS5yb3dDb3VudCwgcm93SW5kZXggPSBfYS5yb3dJbmRleCwgX3QgPSBfYS5zZWxlY3RhYmxlUm93RGlzYWJsZWQsIHNlbGVjdGFibGVSb3dEaXNhYmxlZCA9IF90ID09PSB2b2lkIDAgPyBudWxsIDogX3QsIF91ID0gX2Euc2VsZWN0YWJsZVJvd3MsIHNlbGVjdGFibGVSb3dzID0gX3UgPT09IHZvaWQgMCA/IGZhbHNlIDogX3UsIHNlbGVjdGFibGVSb3dzQ29tcG9uZW50ID0gX2Euc2VsZWN0YWJsZVJvd3NDb21wb25lbnQsIHNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHMgPSBfYS5zZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzLCBfdiA9IF9hLnNlbGVjdGFibGVSb3dzSGlnaGxpZ2h0LCBzZWxlY3RhYmxlUm93c0hpZ2hsaWdodCA9IF92ID09PSB2b2lkIDAgPyBmYWxzZSA6IF92LCBfdyA9IF9hLnNlbGVjdGFibGVSb3dzU2luZ2xlLCBzZWxlY3RhYmxlUm93c1NpbmdsZSA9IF93ID09PSB2b2lkIDAgPyBmYWxzZSA6IF93LCBzZWxlY3RlZCA9IF9hLnNlbGVjdGVkLCBfeCA9IF9hLnN0cmlwZWQsIHN0cmlwZWQgPSBfeCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfeCwgZHJhZ2dpbmdDb2x1bW5JZCA9IF9hLmRyYWdnaW5nQ29sdW1uSWQsIG9uRHJhZ1N0YXJ0ID0gX2Eub25EcmFnU3RhcnQsIG9uRHJhZ092ZXIgPSBfYS5vbkRyYWdPdmVyLCBvbkRyYWdFbmQgPSBfYS5vbkRyYWdFbmQsIG9uRHJhZ0VudGVyID0gX2Eub25EcmFnRW50ZXIsIG9uRHJhZ0xlYXZlID0gX2Eub25EcmFnTGVhdmU7XG4gICAgdmFyIF95ID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdEV4cGFuZGVkKSwgZXhwYW5kZWQgPSBfeVswXSwgc2V0RXhwYW5kZWQgPSBfeVsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRFeHBhbmRlZChkZWZhdWx0RXhwYW5kZWQpO1xuICAgIH0sIFtkZWZhdWx0RXhwYW5kZWRdKTtcbiAgICB2YXIgaGFuZGxlRXhwYW5kZWQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEV4cGFuZGVkKCFleHBhbmRlZCk7XG4gICAgICAgIG9uUm93RXhwYW5kVG9nZ2xlZCghZXhwYW5kZWQsIHJvdyk7XG4gICAgfSwgW2V4cGFuZGVkLCBvblJvd0V4cGFuZFRvZ2dsZWQsIHJvd10pO1xuICAgIHZhciBzaG93UG9pbnRlciA9IHBvaW50ZXJPbkhvdmVyIHx8IChleHBhbmRhYmxlUm93cyAmJiAoZXhwYW5kT25Sb3dDbGlja2VkIHx8IGV4cGFuZE9uUm93RG91YmxlQ2xpY2tlZCkpO1xuICAgIHZhciBoYW5kbGVSb3dDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIC8vIHVzZSBldmVudCBkZWxlZ2F0aW9uIGFsbG93IGV2ZW50cyB0byBwcm9wYWdhdGUgb25seSB3aGVuIHRoZSBlbGVtZW50IHdpdGggZGF0YS10YWcgU1RPUF9QUk9QX1RBRyBpcyBwcmVzZW50XG4gICAgICAgIGlmIChlLnRhcmdldCAmJiBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFnJykgPT09IGNvbnN0YW50c18xLlNUT1BfUFJPUF9UQUcpIHtcbiAgICAgICAgICAgIG9uUm93Q2xpY2tlZChyb3csIGUpO1xuICAgICAgICAgICAgaWYgKCFkZWZhdWx0RXhwYW5kZXJEaXNhYmxlZCAmJiBleHBhbmRhYmxlUm93cyAmJiBleHBhbmRPblJvd0NsaWNrZWQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVFeHBhbmRlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW2RlZmF1bHRFeHBhbmRlckRpc2FibGVkLCBleHBhbmRPblJvd0NsaWNrZWQsIGV4cGFuZGFibGVSb3dzLCBoYW5kbGVFeHBhbmRlZCwgb25Sb3dDbGlja2VkLCByb3ddKTtcbiAgICB2YXIgaGFuZGxlUm93RG91YmxlQ2xpY2sgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS50YXJnZXQgJiYgZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXRhZycpID09PSBjb25zdGFudHNfMS5TVE9QX1BST1BfVEFHKSB7XG4gICAgICAgICAgICBvblJvd0RvdWJsZUNsaWNrZWQocm93LCBlKTtcbiAgICAgICAgICAgIGlmICghZGVmYXVsdEV4cGFuZGVyRGlzYWJsZWQgJiYgZXhwYW5kYWJsZVJvd3MgJiYgZXhwYW5kT25Sb3dEb3VibGVDbGlja2VkKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlRXhwYW5kZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtkZWZhdWx0RXhwYW5kZXJEaXNhYmxlZCwgZXhwYW5kT25Sb3dEb3VibGVDbGlja2VkLCBleHBhbmRhYmxlUm93cywgaGFuZGxlRXhwYW5kZWQsIG9uUm93RG91YmxlQ2xpY2tlZCwgcm93XSk7XG4gICAgdmFyIGhhbmRsZVJvd01vdXNlRW50ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkge1xuICAgICAgICBvblJvd01vdXNlRW50ZXIocm93LCBlKTtcbiAgICB9LCBbb25Sb3dNb3VzZUVudGVyLCByb3ddKTtcbiAgICB2YXIgaGFuZGxlUm93TW91c2VMZWF2ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIG9uUm93TW91c2VMZWF2ZShyb3csIGUpO1xuICAgIH0sIFtvblJvd01vdXNlTGVhdmUsIHJvd10pO1xuICAgIHZhciByb3dLZXlGaWVsZCA9ICgwLCB1dGlsXzEucHJvcCkocm93LCBrZXlGaWVsZCk7XG4gICAgdmFyIF96ID0gKDAsIHV0aWxfMS5nZXRDb25kaXRpb25hbFN0eWxlKShyb3csIGNvbmRpdGlvbmFsUm93U3R5bGVzLCBbJ3JkdF9UYWJsZVJvdyddKSwgc3R5bGUgPSBfei5zdHlsZSwgY2xhc3NOYW1lcyA9IF96LmNsYXNzTmFtZXM7XG4gICAgdmFyIGhpZ2hsaWdodFNlbGVjdGVkID0gc2VsZWN0YWJsZVJvd3NIaWdobGlnaHQgJiYgc2VsZWN0ZWQ7XG4gICAgdmFyIGluaGVyaXRTdHlsZXMgPSBleHBhbmRhYmxlSW5oZXJpdENvbmRpdGlvbmFsU3R5bGVzID8gc3R5bGUgOiB7fTtcbiAgICB2YXIgaXNTdHJpcGVkID0gc3RyaXBlZCAmJiAoMCwgdXRpbF8xLmlzT2RkKShyb3dJbmRleCk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlUm93U3R5bGUsIHsgaWQ6IFwicm93LVwiLmNvbmNhdChpZCksIHJvbGU6IFwicm93XCIsIHN0cmlwZWQ6IGlzU3RyaXBlZCwgaGlnaGxpZ2h0T25Ib3ZlcjogaGlnaGxpZ2h0T25Ib3ZlciwgcG9pbnRlck9uSG92ZXI6ICFkZWZhdWx0RXhwYW5kZXJEaXNhYmxlZCAmJiBzaG93UG9pbnRlciwgZGVuc2U6IGRlbnNlLCBvbkNsaWNrOiBoYW5kbGVSb3dDbGljaywgb25Eb3VibGVDbGljazogaGFuZGxlUm93RG91YmxlQ2xpY2ssIG9uTW91c2VFbnRlcjogaGFuZGxlUm93TW91c2VFbnRlciwgb25Nb3VzZUxlYXZlOiBoYW5kbGVSb3dNb3VzZUxlYXZlLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMsIHNlbGVjdGVkOiBoaWdobGlnaHRTZWxlY3RlZCwgc3R5bGU6IHN0eWxlIH0sXG4gICAgICAgICAgICBzZWxlY3RhYmxlUm93cyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZUNlbGxDaGVja2JveF8xLmRlZmF1bHQsIHsgbmFtZTogXCJzZWxlY3Qtcm93LVwiLmNvbmNhdChyb3dLZXlGaWVsZCksIGtleUZpZWxkOiBrZXlGaWVsZCwgcm93OiByb3csIHJvd0NvdW50OiByb3dDb3VudCwgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudDogc2VsZWN0YWJsZVJvd3NDb21wb25lbnQsIHNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHM6IHNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIHNlbGVjdGFibGVSb3dEaXNhYmxlZDogc2VsZWN0YWJsZVJvd0Rpc2FibGVkLCBzZWxlY3RhYmxlUm93c1NpbmdsZTogc2VsZWN0YWJsZVJvd3NTaW5nbGUsIG9uU2VsZWN0ZWRSb3c6IG9uU2VsZWN0ZWRSb3cgfSkpLFxuICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3MgJiYgIWV4cGFuZGFibGVSb3dzSGlkZUV4cGFuZGVyICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlQ2VsbEV4cGFuZGVyXzEuZGVmYXVsdCwgeyBpZDogcm93S2V5RmllbGQsIGV4cGFuZGFibGVJY29uOiBleHBhbmRhYmxlSWNvbiwgZXhwYW5kZWQ6IGV4cGFuZGVkLCByb3c6IHJvdywgb25Ub2dnbGVkOiBoYW5kbGVFeHBhbmRlZCwgZGlzYWJsZWQ6IGRlZmF1bHRFeHBhbmRlckRpc2FibGVkIH0pKSxcbiAgICAgICAgICAgIGNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLm9taXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZUNlbGxfMS5kZWZhdWx0LCB7IGlkOiBcImNlbGwtXCIuY29uY2F0KGNvbHVtbi5pZCwgXCItXCIpLmNvbmNhdChyb3dLZXlGaWVsZCksIGtleTogXCJjZWxsLVwiLmNvbmNhdChjb2x1bW4uaWQsIFwiLVwiKS5jb25jYXQocm93S2V5RmllbGQpLCBcbiAgICAgICAgICAgICAgICAgICAgLy8gYXBwbHkgYSB0YWcgdGhhdCBSb3cgd2lsbCB1c2UgdG8gc3RvcCBldmVudCBwcm9wYWdhdGlvbiB3aGVuIFRhYmxlQ2VsbCBpcyBjbGlja2VkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUYWc6IGNvbHVtbi5pZ25vcmVSb3dDbGljayB8fCBjb2x1bW4uYnV0dG9uID8gbnVsbCA6IGNvbnN0YW50c18xLlNUT1BfUFJPUF9UQUcsIGNvbHVtbjogY29sdW1uLCByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4LCBpc0RyYWdnaW5nOiAoMCwgdXRpbF8xLmVxdWFsaXplSWQpKGRyYWdnaW5nQ29sdW1uSWQsIGNvbHVtbi5pZCksIG9uRHJhZ1N0YXJ0OiBvbkRyYWdTdGFydCwgb25EcmFnT3Zlcjogb25EcmFnT3Zlciwgb25EcmFnRW5kOiBvbkRyYWdFbmQsIG9uRHJhZ0VudGVyOiBvbkRyYWdFbnRlciwgb25EcmFnTGVhdmU6IG9uRHJhZ0xlYXZlIH0pKTtcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgZXhwYW5kYWJsZVJvd3MgJiYgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kZXJSb3dfMS5kZWZhdWx0LCB7IGtleTogXCJleHBhbmRlci1cIi5jb25jYXQocm93S2V5RmllbGQpLCBkYXRhOiByb3csIGV4dGVuZGVkUm93U3R5bGU6IGluaGVyaXRTdHlsZXMsIGV4dGVuZGVkQ2xhc3NOYW1lczogY2xhc3NOYW1lcywgRXhwYW5kZXJDb21wb25lbnQ6IGV4cGFuZGFibGVSb3dzQ29tcG9uZW50LCBleHBhbmRlckNvbXBvbmVudFByb3BzOiBleHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzIH0pKSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gUm93O1xudmFyIHRlbXBsYXRlT2JqZWN0XzEsIHRlbXBsYXRlT2JqZWN0XzIsIHRlbXBsYXRlT2JqZWN0XzM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgYWxpZ25NYXAgPSB7XG4gICAgbGVmdDogJ2ZsZXgtc3RhcnQnLFxuICAgIHJpZ2h0OiAnZmxleC1lbmQnLFxuICAgIGNlbnRlcjogJ2NlbnRlcicsXG59O1xudmFyIFN1YmhlYWRlcldyYXBwZXIgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuaGVhZGVyKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4OiAxIDEgYXV0bztcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0cGFkZGluZzogNHB4IDE2cHggNHB4IDI0cHg7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0anVzdGlmeS1jb250ZW50OiBcIiwgXCI7XFxuXFx0ZmxleC13cmFwOiBcIiwgXCI7XFxuXFx0XCIsIFwiXFxuXCJdLCBbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4OiAxIDEgYXV0bztcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0cGFkZGluZzogNHB4IDE2cHggNHB4IDI0cHg7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0anVzdGlmeS1jb250ZW50OiBcIiwgXCI7XFxuXFx0ZmxleC13cmFwOiBcIiwgXCI7XFxuXFx0XCIsIFwiXFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBhbGlnbiA9IF9hLmFsaWduO1xuICAgIHJldHVybiBhbGlnbk1hcFthbGlnbl07XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgd3JhcENvbnRlbnQgPSBfYS53cmFwQ29udGVudDtcbiAgICByZXR1cm4gKHdyYXBDb250ZW50ID8gJ3dyYXAnIDogJ25vd3JhcCcpO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLnN1YkhlYWRlci5zdHlsZTtcbn0pO1xudmFyIFN1YmhlYWRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBfYiA9IF9hLmFsaWduLCBhbGlnbiA9IF9iID09PSB2b2lkIDAgPyAncmlnaHQnIDogX2IsIF9jID0gX2Eud3JhcENvbnRlbnQsIHdyYXBDb250ZW50ID0gX2MgPT09IHZvaWQgMCA/IHRydWUgOiBfYywgcmVzdCA9IF9fcmVzdChfYSwgW1wiYWxpZ25cIiwgXCJ3cmFwQ29udGVudFwiXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFN1YmhlYWRlcldyYXBwZXIsIF9fYXNzaWduKHsgYWxpZ246IGFsaWduLCB3cmFwQ29udGVudDogd3JhcENvbnRlbnQgfSwgcmVzdCkpKTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBTdWJoZWFkZXI7XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIFdyYXBwZXIgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLnRhYmxlV3JhcHBlci5zdHlsZTtcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gV3JhcHBlcjtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk1lZGlhID0gZXhwb3J0cy5BbGlnbm1lbnQgPSBleHBvcnRzLkRpcmVjdGlvbiA9IGV4cG9ydHMuU1RPUF9QUk9QX1RBRyA9IHZvaWQgMDtcbmV4cG9ydHMuU1RPUF9QUk9QX1RBRyA9ICdhbGxvd1Jvd0V2ZW50cyc7XG52YXIgRGlyZWN0aW9uO1xuKGZ1bmN0aW9uIChEaXJlY3Rpb24pIHtcbiAgICBEaXJlY3Rpb25bXCJMVFJcIl0gPSBcImx0clwiO1xuICAgIERpcmVjdGlvbltcIlJUTFwiXSA9IFwicnRsXCI7XG4gICAgRGlyZWN0aW9uW1wiQVVUT1wiXSA9IFwiYXV0b1wiO1xufSkoRGlyZWN0aW9uID0gZXhwb3J0cy5EaXJlY3Rpb24gfHwgKGV4cG9ydHMuRGlyZWN0aW9uID0ge30pKTtcbnZhciBBbGlnbm1lbnQ7XG4oZnVuY3Rpb24gKEFsaWdubWVudCkge1xuICAgIEFsaWdubWVudFtcIkxFRlRcIl0gPSBcImxlZnRcIjtcbiAgICBBbGlnbm1lbnRbXCJSSUdIVFwiXSA9IFwicmlnaHRcIjtcbiAgICBBbGlnbm1lbnRbXCJDRU5URVJcIl0gPSBcImNlbnRlclwiO1xufSkoQWxpZ25tZW50ID0gZXhwb3J0cy5BbGlnbm1lbnQgfHwgKGV4cG9ydHMuQWxpZ25tZW50ID0ge30pKTtcbnZhciBNZWRpYTtcbihmdW5jdGlvbiAoTWVkaWEpIHtcbiAgICBNZWRpYVtcIlNNXCJdID0gXCJzbVwiO1xuICAgIE1lZGlhW1wiTURcIl0gPSBcIm1kXCI7XG4gICAgTWVkaWFbXCJMR1wiXSA9IFwibGdcIjtcbn0pKE1lZGlhID0gZXhwb3J0cy5NZWRpYSB8fCAoZXhwb3J0cy5NZWRpYSA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdFByb3BzID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIEZpcnN0UGFnZV8xID0gcmVxdWlyZShcIi4vaWNvbnMvRmlyc3RQYWdlXCIpO1xudmFyIExhc3RQYWdlXzEgPSByZXF1aXJlKFwiLi9pY29ucy9MYXN0UGFnZVwiKTtcbnZhciBMZWZ0XzEgPSByZXF1aXJlKFwiLi9pY29ucy9MZWZ0XCIpO1xudmFyIFJpZ2h0XzEgPSByZXF1aXJlKFwiLi9pY29ucy9SaWdodFwiKTtcbnZhciBFeHBhbmRlckNvbGxhcHNlZEljb25fMSA9IHJlcXVpcmUoXCIuL2ljb25zL0V4cGFuZGVyQ29sbGFwc2VkSWNvblwiKTtcbnZhciBFeHBhbmRlckV4cGFuZGVkSWNvbl8xID0gcmVxdWlyZShcIi4vaWNvbnMvRXhwYW5kZXJFeHBhbmRlZEljb25cIik7XG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuL2NvbnN0YW50c1wiKTtcbmV4cG9ydHMuZGVmYXVsdFByb3BzID0ge1xuICAgIGNvbHVtbnM6IFtdLFxuICAgIGRhdGE6IFtdLFxuICAgIHRpdGxlOiAnJyxcbiAgICBrZXlGaWVsZDogJ2lkJyxcbiAgICBzZWxlY3RhYmxlUm93czogZmFsc2UsXG4gICAgc2VsZWN0YWJsZVJvd3NIaWdobGlnaHQ6IGZhbHNlLFxuICAgIHNlbGVjdGFibGVSb3dzTm9TZWxlY3RBbGw6IGZhbHNlLFxuICAgIHNlbGVjdGFibGVSb3dTZWxlY3RlZDogbnVsbCxcbiAgICBzZWxlY3RhYmxlUm93RGlzYWJsZWQ6IG51bGwsXG4gICAgc2VsZWN0YWJsZVJvd3NDb21wb25lbnQ6ICdpbnB1dCcsXG4gICAgc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wczoge30sXG4gICAgc2VsZWN0YWJsZVJvd3NWaXNpYmxlT25seTogZmFsc2UsXG4gICAgc2VsZWN0YWJsZVJvd3NTaW5nbGU6IGZhbHNlLFxuICAgIGNsZWFyU2VsZWN0ZWRSb3dzOiBmYWxzZSxcbiAgICBleHBhbmRhYmxlUm93czogZmFsc2UsXG4gICAgZXhwYW5kYWJsZVJvd0Rpc2FibGVkOiBudWxsLFxuICAgIGV4cGFuZGFibGVSb3dFeHBhbmRlZDogbnVsbCxcbiAgICBleHBhbmRPblJvd0NsaWNrZWQ6IGZhbHNlLFxuICAgIGV4cGFuZGFibGVSb3dzSGlkZUV4cGFuZGVyOiBmYWxzZSxcbiAgICBleHBhbmRPblJvd0RvdWJsZUNsaWNrZWQ6IGZhbHNlLFxuICAgIGV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXM6IGZhbHNlLFxuICAgIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50OiBmdW5jdGlvbiBEZWZhdWx0RXhwYW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLFxuICAgICAgICAgICAgXCJUbyBhZGQgYW4gZXhwYW5kZXIgcGFzcyBpbiBhIGNvbXBvbmVudCBpbnN0YW5jZSB2aWEgXCIsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3Ryb25nXCIsIG51bGwsIFwiZXhwYW5kYWJsZVJvd3NDb21wb25lbnRcIiksXG4gICAgICAgICAgICBcIi4gWW91IGNhbiB0aGVuIGFjY2VzcyBwcm9wcy5kYXRhIGZyb20gdGhpcyBjb21wb25lbnQuXCIpKTtcbiAgICB9LFxuICAgIGV4cGFuZGFibGVJY29uOiB7XG4gICAgICAgIGNvbGxhcHNlZDogUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRlckNvbGxhcHNlZEljb25fMS5kZWZhdWx0LCBudWxsKSxcbiAgICAgICAgZXhwYW5kZWQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kZXJFeHBhbmRlZEljb25fMS5kZWZhdWx0LCBudWxsKSxcbiAgICB9LFxuICAgIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHM6IHt9LFxuICAgIHByb2dyZXNzUGVuZGluZzogZmFsc2UsXG4gICAgcHJvZ3Jlc3NDb21wb25lbnQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZTogeyBmb250U2l6ZTogJzI0cHgnLCBmb250V2VpZ2h0OiA3MDAsIHBhZGRpbmc6ICcyNHB4JyB9IH0sIFwiTG9hZGluZy4uLlwiKSxcbiAgICBwZXJzaXN0VGFibGVIZWFkOiBmYWxzZSxcbiAgICBzb3J0SWNvbjogbnVsbCxcbiAgICBzb3J0RnVuY3Rpb246IG51bGwsXG4gICAgc29ydFNlcnZlcjogZmFsc2UsXG4gICAgc3RyaXBlZDogZmFsc2UsXG4gICAgaGlnaGxpZ2h0T25Ib3ZlcjogZmFsc2UsXG4gICAgcG9pbnRlck9uSG92ZXI6IGZhbHNlLFxuICAgIG5vQ29udGV4dE1lbnU6IGZhbHNlLFxuICAgIGNvbnRleHRNZXNzYWdlOiB7IHNpbmd1bGFyOiAnaXRlbScsIHBsdXJhbDogJ2l0ZW1zJywgbWVzc2FnZTogJ3NlbGVjdGVkJyB9LFxuICAgIGFjdGlvbnM6IG51bGwsXG4gICAgY29udGV4dEFjdGlvbnM6IG51bGwsXG4gICAgY29udGV4dENvbXBvbmVudDogbnVsbCxcbiAgICBkZWZhdWx0U29ydEZpZWxkSWQ6IG51bGwsXG4gICAgZGVmYXVsdFNvcnRBc2M6IHRydWUsXG4gICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICBub0RhdGFDb21wb25lbnQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZTogeyBwYWRkaW5nOiAnMjRweCcgfSB9LCBcIlRoZXJlIGFyZSBubyByZWNvcmRzIHRvIGRpc3BsYXlcIiksXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIG5vVGFibGVIZWFkOiBmYWxzZSxcbiAgICBub0hlYWRlcjogZmFsc2UsXG4gICAgc3ViSGVhZGVyOiBmYWxzZSxcbiAgICBzdWJIZWFkZXJBbGlnbjogY29uc3RhbnRzXzEuQWxpZ25tZW50LlJJR0hULFxuICAgIHN1YkhlYWRlcldyYXA6IHRydWUsXG4gICAgc3ViSGVhZGVyQ29tcG9uZW50OiBudWxsLFxuICAgIGZpeGVkSGVhZGVyOiBmYWxzZSxcbiAgICBmaXhlZEhlYWRlclNjcm9sbEhlaWdodDogJzEwMHZoJyxcbiAgICBwYWdpbmF0aW9uOiBmYWxzZSxcbiAgICBwYWdpbmF0aW9uU2VydmVyOiBmYWxzZSxcbiAgICBwYWdpbmF0aW9uU2VydmVyT3B0aW9uczoge1xuICAgICAgICBwZXJzaXN0U2VsZWN0ZWRPblNvcnQ6IGZhbHNlLFxuICAgICAgICBwZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2U6IGZhbHNlLFxuICAgIH0sXG4gICAgcGFnaW5hdGlvbkRlZmF1bHRQYWdlOiAxLFxuICAgIHBhZ2luYXRpb25SZXNldERlZmF1bHRQYWdlOiBmYWxzZSxcbiAgICBwYWdpbmF0aW9uVG90YWxSb3dzOiAwLFxuICAgIHBhZ2luYXRpb25QZXJQYWdlOiAxMCxcbiAgICBwYWdpbmF0aW9uUm93c1BlclBhZ2VPcHRpb25zOiBbMTAsIDE1LCAyMCwgMjUsIDMwXSxcbiAgICBwYWdpbmF0aW9uQ29tcG9uZW50OiBudWxsLFxuICAgIHBhZ2luYXRpb25Db21wb25lbnRPcHRpb25zOiB7fSxcbiAgICBwYWdpbmF0aW9uSWNvbkZpcnN0UGFnZTogUmVhY3QuY3JlYXRlRWxlbWVudChGaXJzdFBhZ2VfMS5kZWZhdWx0LCBudWxsKSxcbiAgICBwYWdpbmF0aW9uSWNvbkxhc3RQYWdlOiBSZWFjdC5jcmVhdGVFbGVtZW50KExhc3RQYWdlXzEuZGVmYXVsdCwgbnVsbCksXG4gICAgcGFnaW5hdGlvbkljb25OZXh0OiBSZWFjdC5jcmVhdGVFbGVtZW50KFJpZ2h0XzEuZGVmYXVsdCwgbnVsbCksXG4gICAgcGFnaW5hdGlvbkljb25QcmV2aW91czogUmVhY3QuY3JlYXRlRWxlbWVudChMZWZ0XzEuZGVmYXVsdCwgbnVsbCksXG4gICAgZGVuc2U6IGZhbHNlLFxuICAgIGNvbmRpdGlvbmFsUm93U3R5bGVzOiBbXSxcbiAgICB0aGVtZTogJ2RlZmF1bHQnLFxuICAgIGN1c3RvbVN0eWxlczoge30sXG4gICAgZGlyZWN0aW9uOiBjb25zdGFudHNfMS5EaXJlY3Rpb24uQVVUTyxcbiAgICBvbkNoYW5nZVBhZ2U6IHV0aWxfMS5ub29wLFxuICAgIG9uQ2hhbmdlUm93c1BlclBhZ2U6IHV0aWxfMS5ub29wLFxuICAgIG9uUm93Q2xpY2tlZDogdXRpbF8xLm5vb3AsXG4gICAgb25Sb3dEb3VibGVDbGlja2VkOiB1dGlsXzEubm9vcCxcbiAgICBvblJvd01vdXNlRW50ZXI6IHV0aWxfMS5ub29wLFxuICAgIG9uUm93TW91c2VMZWF2ZTogdXRpbF8xLm5vb3AsXG4gICAgb25Sb3dFeHBhbmRUb2dnbGVkOiB1dGlsXzEubm9vcCxcbiAgICBvblNlbGVjdGVkUm93c0NoYW5nZTogdXRpbF8xLm5vb3AsXG4gICAgb25Tb3J0OiB1dGlsXzEubm9vcCxcbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlOiB1dGlsXzEubm9vcCxcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciB1dGlsXzEgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcbnZhciB1c2VEaWRVcGRhdGVFZmZlY3RfMSA9IHJlcXVpcmUoXCIuLi9ob29rcy91c2VEaWRVcGRhdGVFZmZlY3RcIik7XG5mdW5jdGlvbiB1c2VDb2x1bW5zKGNvbHVtbnMsIG9uQ29sdW1uT3JkZXJDaGFuZ2UsIGRlZmF1bHRTb3J0RmllbGRJZCwgZGVmYXVsdFNvcnRBc2MpIHtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiAoMCwgdXRpbF8xLmRlY29yYXRlQ29sdW1ucykoY29sdW1ucyk7IH0pLCB0YWJsZUNvbHVtbnMgPSBfYVswXSwgc2V0VGFibGVDb2x1bW5zID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoJycpLCBkcmFnZ2luZ0NvbHVtbklkID0gX2JbMF0sIHNldERyYWdnaW5nQ29sdW1uID0gX2JbMV07XG4gICAgdmFyIHNvdXJjZUNvbHVtbklkID0gUmVhY3QudXNlUmVmKCcnKTtcbiAgICAoMCwgdXNlRGlkVXBkYXRlRWZmZWN0XzEuZGVmYXVsdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRUYWJsZUNvbHVtbnMoKDAsIHV0aWxfMS5kZWNvcmF0ZUNvbHVtbnMpKGNvbHVtbnMpKTtcbiAgICB9LCBbY29sdW1uc10pO1xuICAgIHZhciBoYW5kbGVEcmFnU3RhcnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBlLnRhcmdldC5hdHRyaWJ1dGVzO1xuICAgICAgICB2YXIgaWQgPSAoX2EgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnZGF0YS1jb2x1bW4taWQnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnZhbHVlO1xuICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIHNvdXJjZUNvbHVtbklkLmN1cnJlbnQgPSAoKF9jID0gKF9iID0gdGFibGVDb2x1bW5zWygwLCB1dGlsXzEuZmluZENvbHVtbkluZGV4QnlJZCkodGFibGVDb2x1bW5zLCBpZCldKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaWQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b1N0cmluZygpKSB8fCAnJztcbiAgICAgICAgICAgIHNldERyYWdnaW5nQ29sdW1uKHNvdXJjZUNvbHVtbklkLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW3RhYmxlQ29sdW1uc10pO1xuICAgIHZhciBoYW5kbGVEcmFnRW50ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gZS50YXJnZXQuYXR0cmlidXRlcztcbiAgICAgICAgdmFyIGlkID0gKF9hID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oJ2RhdGEtY29sdW1uLWlkJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS52YWx1ZTtcbiAgICAgICAgaWYgKGlkICYmIHNvdXJjZUNvbHVtbklkLmN1cnJlbnQgJiYgaWQgIT09IHNvdXJjZUNvbHVtbklkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZENvbEluZGV4ID0gKDAsIHV0aWxfMS5maW5kQ29sdW1uSW5kZXhCeUlkKSh0YWJsZUNvbHVtbnMsIHNvdXJjZUNvbHVtbklkLmN1cnJlbnQpO1xuICAgICAgICAgICAgdmFyIHRhcmdldENvbEluZGV4ID0gKDAsIHV0aWxfMS5maW5kQ29sdW1uSW5kZXhCeUlkKSh0YWJsZUNvbHVtbnMsIGlkKTtcbiAgICAgICAgICAgIHZhciByZW9yZGVyZWRDb2xzID0gX19zcHJlYWRBcnJheShbXSwgdGFibGVDb2x1bW5zLCB0cnVlKTtcbiAgICAgICAgICAgIHJlb3JkZXJlZENvbHNbc2VsZWN0ZWRDb2xJbmRleF0gPSB0YWJsZUNvbHVtbnNbdGFyZ2V0Q29sSW5kZXhdO1xuICAgICAgICAgICAgcmVvcmRlcmVkQ29sc1t0YXJnZXRDb2xJbmRleF0gPSB0YWJsZUNvbHVtbnNbc2VsZWN0ZWRDb2xJbmRleF07XG4gICAgICAgICAgICBzZXRUYWJsZUNvbHVtbnMocmVvcmRlcmVkQ29scyk7XG4gICAgICAgICAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlKHJlb3JkZXJlZENvbHMpO1xuICAgICAgICB9XG4gICAgfSwgW29uQ29sdW1uT3JkZXJDaGFuZ2UsIHRhYmxlQ29sdW1uc10pO1xuICAgIHZhciBoYW5kbGVEcmFnT3ZlciA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIGhhbmRsZURyYWdMZWF2ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIGhhbmRsZURyYWdFbmQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHNvdXJjZUNvbHVtbklkLmN1cnJlbnQgPSAnJztcbiAgICAgICAgc2V0RHJhZ2dpbmdDb2x1bW4oJycpO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgZGVmYXVsdFNvcnREaXJlY3Rpb24gPSAoMCwgdXRpbF8xLmdldFNvcnREaXJlY3Rpb24pKGRlZmF1bHRTb3J0QXNjKTtcbiAgICB2YXIgZGVmYXVsdFNvcnRDb2x1bW4gPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRhYmxlQ29sdW1uc1soMCwgdXRpbF8xLmZpbmRDb2x1bW5JbmRleEJ5SWQpKHRhYmxlQ29sdW1ucywgZGVmYXVsdFNvcnRGaWVsZElkID09PSBudWxsIHx8IGRlZmF1bHRTb3J0RmllbGRJZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmYXVsdFNvcnRGaWVsZElkLnRvU3RyaW5nKCkpXSB8fCB7fTsgfSwgW2RlZmF1bHRTb3J0RmllbGRJZCwgdGFibGVDb2x1bW5zXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGFibGVDb2x1bW5zOiB0YWJsZUNvbHVtbnMsXG4gICAgICAgIGRyYWdnaW5nQ29sdW1uSWQ6IGRyYWdnaW5nQ29sdW1uSWQsXG4gICAgICAgIGhhbmRsZURyYWdTdGFydDogaGFuZGxlRHJhZ1N0YXJ0LFxuICAgICAgICBoYW5kbGVEcmFnRW50ZXI6IGhhbmRsZURyYWdFbnRlcixcbiAgICAgICAgaGFuZGxlRHJhZ092ZXI6IGhhbmRsZURyYWdPdmVyLFxuICAgICAgICBoYW5kbGVEcmFnTGVhdmU6IGhhbmRsZURyYWdMZWF2ZSxcbiAgICAgICAgaGFuZGxlRHJhZ0VuZDogaGFuZGxlRHJhZ0VuZCxcbiAgICAgICAgZGVmYXVsdFNvcnREaXJlY3Rpb246IGRlZmF1bHRTb3J0RGlyZWN0aW9uLFxuICAgICAgICBkZWZhdWx0U29ydENvbHVtbjogZGVmYXVsdFNvcnRDb2x1bW4sXG4gICAgfTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHVzZUNvbHVtbnM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciB1c2VGaXJzdFVwZGF0ZSA9IGZ1bmN0aW9uIChmbiwgaW5wdXRzKSB7XG4gICAgdmFyIGZpcnN0VXBkYXRlID0gUmVhY3QudXNlUmVmKHRydWUpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChmaXJzdFVwZGF0ZS5jdXJyZW50KSB7XG4gICAgICAgICAgICBmaXJzdFVwZGF0ZS5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm4oKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIGlucHV0cyk7XG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gdXNlRmlyc3RVcGRhdGU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHNcIik7XG5mdW5jdGlvbiB1c2VSVEwoZGlyZWN0aW9uKSB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gdm9pZCAwKSB7IGRpcmVjdGlvbiA9IGNvbnN0YW50c18xLkRpcmVjdGlvbi5BVVRPOyB9XG4gICAgdmFyIGlzQ2xpZW50ID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCc7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc1JUTCA9IF9hWzBdLCBzZXRJc1JUTCA9IF9hWzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghaXNDbGllbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgIHZhciBjYW5Vc2UgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh3aW5kb3cgJiYgd2luZG93LmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgY2FuVXNlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnN0IGNhblVzZSA9ICEhKCB3aW5kb3c/LmRvY3VtZW50Py5jcmVhdGVFbGVtZW50ICk7XG4gICAgICAgICAgICB2YXIgYm9keVJUTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdCT0RZJylbMF07XG4gICAgICAgICAgICB2YXIgaHRtbFRSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdIVE1MJylbMF07XG4gICAgICAgICAgICB2YXIgaGFzUlRMID0gYm9keVJUTC5kaXIgPT09ICdydGwnIHx8IGh0bWxUUkwuZGlyID09PSAncnRsJztcbiAgICAgICAgICAgIHNldElzUlRMKGNhblVzZSAmJiBoYXNSVEwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldElzUlRMKGRpcmVjdGlvbiA9PT0gJ3J0bCcpO1xuICAgIH0sIFtkaXJlY3Rpb24sIGlzQ2xpZW50XSk7XG4gICAgcmV0dXJuIGlzUlRMO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gdXNlUlRMO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBDcmVkaXQ6IGh0dHBzOi8vdXNlaG9va3MuY29tL3VzZVdpbmRvd1NpemUvXG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgdXNlV2luZG93U2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaXNDbGllbnQgPSB0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JztcbiAgICBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IGlzQ2xpZW50ID8gd2luZG93LmlubmVyV2lkdGggOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBoZWlnaHQ6IGlzQ2xpZW50ID8gd2luZG93LmlubmVySGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShnZXRTaXplKSwgd2luZG93U2l6ZSA9IF9hWzBdLCBzZXRXaW5kb3dTaXplID0gX2FbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFpc0NsaWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7IH07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlUmVzaXplKCkge1xuICAgICAgICAgICAgc2V0V2luZG93U2l6ZShnZXRTaXplKCkpO1xuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7IH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIHdpbmRvd1NpemU7XG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gdXNlV2luZG93U2l6ZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIERyb3Bkb3duSWNvbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgd2lkdGg6IFwiMjRcIiwgaGVpZ2h0OiBcIjI0XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIgfSxcbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTcgMTBsNSA1IDUtNXpcIiB9KSxcbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwelwiLCBmaWxsOiBcIm5vbmVcIiB9KSkpOyB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gRHJvcGRvd25JY29uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgRXhwYW5kZXJDb2xsYXBzZWRJY29uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBmaWxsOiBcImN1cnJlbnRDb2xvclwiLCBoZWlnaHQ6IFwiMjRcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiMjRcIiwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB9LFxuICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNOC41OSAxNi4zNGw0LjU4LTQuNTktNC41OC00LjU5TDEwIDUuNzVsNiA2LTYgNnpcIiB9KSxcbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAtLjI1aDI0djI0SDB6XCIsIGZpbGw6IFwibm9uZVwiIH0pKSk7IH07XG5leHBvcnRzLmRlZmF1bHQgPSBFeHBhbmRlckNvbGxhcHNlZEljb247XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBFeHBhbmRlckV4cGFuZGVkSWNvbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgZmlsbDogXCJjdXJyZW50Q29sb3JcIiwgaGVpZ2h0OiBcIjI0XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIjI0XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgfSxcbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTcuNDEgNy44NEwxMiAxMi40Mmw0LjU5LTQuNThMMTggOS4yNWwtNiA2LTYtNnpcIiB9KSxcbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAtLjc1aDI0djI0SDB6XCIsIGZpbGw6IFwibm9uZVwiIH0pKSk7IH07XG5leHBvcnRzLmRlZmF1bHQgPSBFeHBhbmRlckV4cGFuZGVkSWNvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIEZpcnN0UGFnZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgd2lkdGg6IFwiMjRcIiwgaGVpZ2h0OiBcIjI0XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsIHJvbGU6IFwicHJlc2VudGF0aW9uXCIgfSxcbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE4LjQxIDE2LjU5TDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2ek02IDZoMnYxMkg2elwiIH0pLFxuICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDogXCJub25lXCIsIGQ6IFwiTTI0IDI0SDBWMGgyNHYyNHpcIiB9KSkpOyB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gRmlyc3RQYWdlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgTGFzdFBhZ2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHdpZHRoOiBcIjI0XCIsIGhlaWdodDogXCIyNFwiLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLCByb2xlOiBcInByZXNlbnRhdGlvblwiIH0sXG4gICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk01LjU5IDcuNDFMMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTZ6TTE2IDZoMnYxMmgtMnpcIiB9KSxcbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6IFwibm9uZVwiLCBkOiBcIk0wIDBoMjR2MjRIMFYwelwiIH0pKSk7IH07XG5leHBvcnRzLmRlZmF1bHQgPSBMYXN0UGFnZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIExlZnQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHdpZHRoOiBcIjI0XCIsIGhlaWdodDogXCIyNFwiLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLCByb2xlOiBcInByZXNlbnRhdGlvblwiIH0sXG4gICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyelwiIH0pLFxuICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDB6XCIsIGZpbGw6IFwibm9uZVwiIH0pKSk7IH07XG5leHBvcnRzLmRlZmF1bHQgPSBMZWZ0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgSWNvbiA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5zcGFuKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwYWRkaW5nOiAycHg7XFxuXFx0Y29sb3I6IGluaGVyaXQ7XFxuXFx0ZmxleC1ncm93OiAwO1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRwYWRkaW5nOiAycHg7XFxuXFx0Y29sb3I6IGluaGVyaXQ7XFxuXFx0ZmxleC1ncm93OiAwO1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzb3J0QWN0aXZlID0gX2Euc29ydEFjdGl2ZTtcbiAgICByZXR1cm4gKHNvcnRBY3RpdmUgPyAnb3BhY2l0eTogMScgOiAnb3BhY2l0eTogMCcpO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNvcnREaXJlY3Rpb24gPSBfYS5zb3J0RGlyZWN0aW9uO1xuICAgIHJldHVybiBzb3J0RGlyZWN0aW9uID09PSAnZGVzYycgJiYgJ3RyYW5zZm9ybTogcm90YXRlKDE4MGRlZyknO1xufSk7XG52YXIgTmF0aXZlU29ydEljb24gPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgc29ydEFjdGl2ZSA9IF9hLnNvcnRBY3RpdmUsIHNvcnREaXJlY3Rpb24gPSBfYS5zb3J0RGlyZWN0aW9uO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uLCB7IHNvcnRBY3RpdmU6IHNvcnRBY3RpdmUsIHNvcnREaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gfSwgXCJcXHUyNUIyXCIpKTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBOYXRpdmVTb3J0SWNvbjtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgUmlnaHQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHdpZHRoOiBcIjI0XCIsIGhlaWdodDogXCIyNFwiLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLCByb2xlOiBcInByZXNlbnRhdGlvblwiIH0sXG4gICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnpcIiB9KSxcbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwelwiLCBmaWxsOiBcIm5vbmVcIiB9KSkpOyB9O1xuZXhwb3J0cy5kZWZhdWx0ID0gUmlnaHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm1lZGlhID0gZXhwb3J0cy5MQVJHRSA9IGV4cG9ydHMuTUVESVVNID0gZXhwb3J0cy5TTUFMTCA9IHZvaWQgMDtcbi8vIEB0cy1pZ25vcmVcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xuZXhwb3J0cy5TTUFMTCA9IDU5OTtcbmV4cG9ydHMuTUVESVVNID0gOTU5O1xuZXhwb3J0cy5MQVJHRSA9IDEyODA7XG5leHBvcnRzLm1lZGlhID0ge1xuICAgIHNtOiBmdW5jdGlvbiAobGl0ZXJhbHMpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdFxcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiLCBcInB4KSB7XFxuXFx0XFx0XFx0XCIsIFwiXFxuXFx0XFx0fVxcblxcdFwiXSwgW1wiXFxuXFx0XFx0QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogXCIsIFwicHgpIHtcXG5cXHRcXHRcXHRcIiwgXCJcXG5cXHRcXHR9XFxuXFx0XCJdKSksIGV4cG9ydHMuU01BTEwsIHN0eWxlZF9jb21wb25lbnRzXzEuY3NzLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbbGl0ZXJhbHNdLCBhcmdzLCBmYWxzZSkpKTtcbiAgICB9LFxuICAgIG1kOiBmdW5jdGlvbiAobGl0ZXJhbHMpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfMiB8fCAodGVtcGxhdGVPYmplY3RfMiA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdFxcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiLCBcInB4KSB7XFxuXFx0XFx0XFx0XCIsIFwiXFxuXFx0XFx0fVxcblxcdFwiXSwgW1wiXFxuXFx0XFx0QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogXCIsIFwicHgpIHtcXG5cXHRcXHRcXHRcIiwgXCJcXG5cXHRcXHR9XFxuXFx0XCJdKSksIGV4cG9ydHMuTUVESVVNLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcy5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2xpdGVyYWxzXSwgYXJncywgZmFsc2UpKSk7XG4gICAgfSxcbiAgICBsZzogZnVuY3Rpb24gKGxpdGVyYWxzKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzMgfHwgKHRlbXBsYXRlT2JqZWN0XzMgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRcXHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBcIiwgXCJweCkge1xcblxcdFxcdFxcdFwiLCBcIlxcblxcdFxcdH1cXG5cXHRcIl0sIFtcIlxcblxcdFxcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiLCBcInB4KSB7XFxuXFx0XFx0XFx0XCIsIFwiXFxuXFx0XFx0fVxcblxcdFwiXSkpLCBleHBvcnRzLkxBUkdFLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcy5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2xpdGVyYWxzXSwgYXJncywgZmFsc2UpKSk7XG4gICAgfSxcbiAgICBjdXN0b206IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGxpdGVyYWxzKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfNCB8fCAodGVtcGxhdGVPYmplY3RfNCA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdFxcdFxcdFxcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiLCBcInB4KSB7XFxuXFx0XFx0XFx0XFx0XFx0XCIsIFwiXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFwiXSwgW1wiXFxuXFx0XFx0XFx0XFx0QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogXCIsIFwicHgpIHtcXG5cXHRcXHRcXHRcXHRcXHRcIiwgXCJcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XCJdKSksIHZhbHVlLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcy5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2xpdGVyYWxzXSwgYXJncywgZmFsc2UpKSk7XG4gICAgICAgIH07XG4gICAgfSxcbn07XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMiwgdGVtcGxhdGVPYmplY3RfMywgdGVtcGxhdGVPYmplY3RfNDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVTdHlsZXMgPSBleHBvcnRzLmRlZmF1bHRTdHlsZXMgPSB2b2lkIDA7XG52YXIgZGVlcG1lcmdlXzEgPSByZXF1aXJlKFwiZGVlcG1lcmdlXCIpO1xudmFyIHRoZW1lc18xID0gcmVxdWlyZShcIi4vdGhlbWVzXCIpO1xudmFyIGRlZmF1bHRTdHlsZXMgPSBmdW5jdGlvbiAodGhlbWUpIHsgcmV0dXJuICh7XG4gICAgdGFibGU6IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS50ZXh0LnByaW1hcnksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHRhYmxlV3JhcHBlcjoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZGlzcGxheTogJ3RhYmxlJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHJlc3BvbnNpdmVXcmFwcGVyOiB7XG4gICAgICAgIHN0eWxlOiB7fSxcbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZm9udFNpemU6ICcyMnB4JyxcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS50ZXh0LnByaW1hcnksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzU2cHgnLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICcxNnB4JyxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogJzhweCcsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzdWJIZWFkZXI6IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZC5kZWZhdWx0LFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNTJweCcsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBoZWFkOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogdGhlbWUudGV4dC5wcmltYXJ5LFxuICAgICAgICAgICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGhlYWRSb3c6IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZC5kZWZhdWx0LFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNTJweCcsXG4gICAgICAgICAgICBib3JkZXJCb3R0b21XaWR0aDogJzFweCcsXG4gICAgICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogdGhlbWUuZGl2aWRlci5kZWZhdWx0LFxuICAgICAgICAgICAgYm9yZGVyQm90dG9tU3R5bGU6ICdzb2xpZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRlbnNlU3R5bGU6IHtcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzMycHgnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgaGVhZENlbGxzOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogJzE2cHgnLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiAnMTZweCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRyYWdnaW5nU3R5bGU6IHtcbiAgICAgICAgICAgIGN1cnNvcjogJ21vdmUnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgY29udGV4dE1lbnU6IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuY29udGV4dC5iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgZm9udFNpemU6ICcxOHB4JyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5jb250ZXh0LnRleHQsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogJzE2cHgnLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiAnOHB4JyxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKScsXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246ICcxMjVtcycsXG4gICAgICAgICAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246ICdjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScsXG4gICAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJyxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZlU3R5bGU6IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIDAsIDApJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGNlbGxzOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogJzE2cHgnLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiAnMTZweCcsXG4gICAgICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgfSxcbiAgICAgICAgZHJhZ2dpbmdTdHlsZToge30sXG4gICAgfSxcbiAgICByb3dzOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBmb250U2l6ZTogJzEzcHgnLFxuICAgICAgICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgICAgICAgY29sb3I6IHRoZW1lLnRleHQucHJpbWFyeSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZC5kZWZhdWx0LFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDhweCcsXG4gICAgICAgICAgICAnJjpub3QoOmxhc3Qtb2YtdHlwZSknOiB7XG4gICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tU3R5bGU6ICdzb2xpZCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tV2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbUNvbG9yOiB0aGVtZS5kaXZpZGVyLmRlZmF1bHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkZW5zZVN0eWxlOiB7XG4gICAgICAgICAgICBtaW5IZWlnaHQ6ICczMnB4JyxcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0ZWRIaWdobGlnaHRTdHlsZToge1xuICAgICAgICAgICAgLy8gdXNlIG50aC1vZi10eXBlKG4pIHRvIG92ZXJyaWRlIG90aGVyIG50aCBzZWxlY3RvcnNcbiAgICAgICAgICAgICcmOm50aC1vZi10eXBlKG4pJzoge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5zZWxlY3RlZC50ZXh0LFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuc2VsZWN0ZWQuZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogdGhlbWUuYmFja2dyb3VuZC5kZWZhdWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgaGlnaGxpZ2h0T25Ib3ZlclN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogdGhlbWUuaGlnaGxpZ2h0T25Ib3Zlci50ZXh0LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5oaWdobGlnaHRPbkhvdmVyLmRlZmF1bHQsXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246ICcwLjE1cycsXG4gICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6ICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgICAgICAgIGJvcmRlckJvdHRvbUNvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICAgICAgICAgICBvdXRsaW5lU3R5bGU6ICdzb2xpZCcsXG4gICAgICAgICAgICBvdXRsaW5lV2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgb3V0bGluZUNvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICAgICAgIH0sXG4gICAgICAgIHN0cmlwZWRTdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLnN0cmlwZWQudGV4dCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuc3RyaXBlZC5kZWZhdWx0LFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZXhwYW5kZXJSb3c6IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS50ZXh0LnByaW1hcnksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGV4cGFuZGVyQ2VsbDoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZmxleDogJzAgMCA0OHB4JyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGV4cGFuZGVyQnV0dG9uOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogdGhlbWUuYnV0dG9uLmRlZmF1bHQsXG4gICAgICAgICAgICBmaWxsOiB0aGVtZS5idXR0b24uZGVmYXVsdCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzJweCcsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAnMC4yNXMnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgJyY6aG92ZXI6ZW5hYmxlZCc6IHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnJjpkaXNhYmxlZCc6IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWUuYnV0dG9uLmRpc2FibGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpJzoge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYnV0dG9uLmhvdmVyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcmOmZvY3VzJzoge1xuICAgICAgICAgICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJ1dHRvbi5mb2N1cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdmc6IHtcbiAgICAgICAgICAgICAgICBtYXJnaW46ICdhdXRvJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogdGhlbWUudGV4dC5zZWNvbmRhcnksXG4gICAgICAgICAgICBmb250U2l6ZTogJzEzcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNTZweCcsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgICAgIGJvcmRlclRvcFN0eWxlOiAnc29saWQnLFxuICAgICAgICAgICAgYm9yZGVyVG9wV2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgYm9yZGVyVG9wQ29sb3I6IHRoZW1lLmRpdmlkZXIuZGVmYXVsdCxcbiAgICAgICAgfSxcbiAgICAgICAgcGFnZUJ1dHRvbnNTdHlsZToge1xuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICAgICAgICAgIGhlaWdodDogJzQwcHgnLFxuICAgICAgICAgICAgd2lkdGg6ICc0MHB4JyxcbiAgICAgICAgICAgIHBhZGRpbmc6ICc4cHgnLFxuICAgICAgICAgICAgbWFyZ2luOiAncHgnLFxuICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAnMC40cycsXG4gICAgICAgICAgICBjb2xvcjogdGhlbWUuYnV0dG9uLmRlZmF1bHQsXG4gICAgICAgICAgICBmaWxsOiB0aGVtZS5idXR0b24uZGVmYXVsdCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICcmOmRpc2FibGVkJzoge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogJ3Vuc2V0JyxcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWUuYnV0dG9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgIGZpbGw6IHRoZW1lLmJ1dHRvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnJjpob3Zlcjpub3QoOmRpc2FibGVkKSc6IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJ1dHRvbi5ob3ZlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5idXR0b24uZm9jdXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgbm9EYXRhOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS50ZXh0LnByaW1hcnksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHByb2dyZXNzOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS50ZXh0LnByaW1hcnksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgfSxcbiAgICB9LFxufSk7IH07XG5leHBvcnRzLmRlZmF1bHRTdHlsZXMgPSBkZWZhdWx0U3R5bGVzO1xudmFyIGNyZWF0ZVN0eWxlcyA9IGZ1bmN0aW9uIChjdXN0b21TdHlsZXMsIHRoZW1lTmFtZSwgaW5oZXJpdCkge1xuICAgIGlmIChjdXN0b21TdHlsZXMgPT09IHZvaWQgMCkgeyBjdXN0b21TdHlsZXMgPSB7fTsgfVxuICAgIGlmICh0aGVtZU5hbWUgPT09IHZvaWQgMCkgeyB0aGVtZU5hbWUgPSAnZGVmYXVsdCc7IH1cbiAgICBpZiAoaW5oZXJpdCA9PT0gdm9pZCAwKSB7IGluaGVyaXQgPSAnZGVmYXVsdCc7IH1cbiAgICB2YXIgdGhlbWVUeXBlID0gdGhlbWVzXzEuZGVmYXVsdFRoZW1lc1t0aGVtZU5hbWVdID8gdGhlbWVOYW1lIDogaW5oZXJpdDtcbiAgICByZXR1cm4gKDAsIGRlZXBtZXJnZV8xLmRlZmF1bHQpKCgwLCBleHBvcnRzLmRlZmF1bHRTdHlsZXMpKHRoZW1lc18xLmRlZmF1bHRUaGVtZXNbdGhlbWVUeXBlXSksIGN1c3RvbVN0eWxlcyk7XG59O1xuZXhwb3J0cy5jcmVhdGVTdHlsZXMgPSBjcmVhdGVTdHlsZXM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnRhYmxlUmVkdWNlciA9IHZvaWQgMDtcbnZhciB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuZnVuY3Rpb24gdGFibGVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIHtcbiAgICB2YXIgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UgPSAhc3RhdGUudG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2U7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgICBjYXNlICdTRUxFQ1RfQUxMX1JPV1MnOiB7XG4gICAgICAgICAgICB2YXIga2V5RmllbGRfMSA9IGFjdGlvbi5rZXlGaWVsZCwgcm93c18xID0gYWN0aW9uLnJvd3MsIHJvd0NvdW50ID0gYWN0aW9uLnJvd0NvdW50LCBtZXJnZVNlbGVjdGlvbnMgPSBhY3Rpb24ubWVyZ2VTZWxlY3Rpb25zO1xuICAgICAgICAgICAgdmFyIGFsbENoZWNrZWQgPSAhc3RhdGUuYWxsU2VsZWN0ZWQ7XG4gICAgICAgICAgICB2YXIgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2VfMSA9ICFzdGF0ZS50b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTtcbiAgICAgICAgICAgIGlmIChtZXJnZVNlbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9ucyA9IGFsbENoZWNrZWRcbiAgICAgICAgICAgICAgICAgICAgPyBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIHN0YXRlLnNlbGVjdGVkUm93cywgdHJ1ZSksIHJvd3NfMS5maWx0ZXIoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gISgwLCB1dGlsXzEuaXNSb3dTZWxlY3RlZCkocm93LCBzdGF0ZS5zZWxlY3RlZFJvd3MsIGtleUZpZWxkXzEpOyB9KSwgdHJ1ZSkgOiBzdGF0ZS5zZWxlY3RlZFJvd3MuZmlsdGVyKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuICEoMCwgdXRpbF8xLmlzUm93U2VsZWN0ZWQpKHJvdywgcm93c18xLCBrZXlGaWVsZF8xKTsgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgYWxsU2VsZWN0ZWQ6IGFsbENoZWNrZWQsIHNlbGVjdGVkQ291bnQ6IHNlbGVjdGlvbnMubGVuZ3RoLCBzZWxlY3RlZFJvd3M6IHNlbGVjdGlvbnMsIHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlOiB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZV8xIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgYWxsU2VsZWN0ZWQ6IGFsbENoZWNrZWQsIHNlbGVjdGVkQ291bnQ6IGFsbENoZWNrZWQgPyByb3dDb3VudCA6IDAsIHNlbGVjdGVkUm93czogYWxsQ2hlY2tlZCA/IHJvd3NfMSA6IFtdLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2VfMSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdTRUxFQ1RfU0lOR0xFX1JPVyc6IHtcbiAgICAgICAgICAgIHZhciBrZXlGaWVsZCA9IGFjdGlvbi5rZXlGaWVsZCwgcm93ID0gYWN0aW9uLnJvdywgaXNTZWxlY3RlZCA9IGFjdGlvbi5pc1NlbGVjdGVkLCByb3dDb3VudCA9IGFjdGlvbi5yb3dDb3VudCwgc2luZ2xlU2VsZWN0ID0gYWN0aW9uLnNpbmdsZVNlbGVjdDtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBzaW5nbGUgc2VsZWN0IG1vZGVcbiAgICAgICAgICAgIGlmIChzaW5nbGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgeyBzZWxlY3RlZENvdW50OiAwLCBhbGxTZWxlY3RlZDogZmFsc2UsIHNlbGVjdGVkUm93czogW10sIHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlOiB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgc2VsZWN0ZWRDb3VudDogMSwgYWxsU2VsZWN0ZWQ6IGZhbHNlLCBzZWxlY3RlZFJvd3M6IFtyb3ddLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBoYW5kbGUgbXVsdGkgc2VsZWN0IG1vZGVcbiAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgc2VsZWN0ZWRDb3VudDogc3RhdGUuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgPyBzdGF0ZS5zZWxlY3RlZFJvd3MubGVuZ3RoIC0gMSA6IDAsIGFsbFNlbGVjdGVkOiBmYWxzZSwgc2VsZWN0ZWRSb3dzOiAoMCwgdXRpbF8xLnJlbW92ZUl0ZW0pKHN0YXRlLnNlbGVjdGVkUm93cywgcm93LCBrZXlGaWVsZCksIHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlOiB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IHNlbGVjdGVkQ291bnQ6IHN0YXRlLnNlbGVjdGVkUm93cy5sZW5ndGggKyAxLCBhbGxTZWxlY3RlZDogc3RhdGUuc2VsZWN0ZWRSb3dzLmxlbmd0aCArIDEgPT09IHJvd0NvdW50LCBzZWxlY3RlZFJvd3M6ICgwLCB1dGlsXzEuaW5zZXJ0SXRlbSkoc3RhdGUuc2VsZWN0ZWRSb3dzLCByb3cpLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnU0VMRUNUX01VTFRJUExFX1JPV1MnOiB7XG4gICAgICAgICAgICB2YXIga2V5RmllbGRfMiA9IGFjdGlvbi5rZXlGaWVsZCwgc2VsZWN0ZWRSb3dzID0gYWN0aW9uLnNlbGVjdGVkUm93cywgdG90YWxSb3dzID0gYWN0aW9uLnRvdGFsUm93cywgbWVyZ2VTZWxlY3Rpb25zID0gYWN0aW9uLm1lcmdlU2VsZWN0aW9ucztcbiAgICAgICAgICAgIGlmIChtZXJnZVNlbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9ucyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgc3RhdGUuc2VsZWN0ZWRSb3dzLCB0cnVlKSwgc2VsZWN0ZWRSb3dzLmZpbHRlcihmdW5jdGlvbiAocm93KSB7IHJldHVybiAhKDAsIHV0aWxfMS5pc1Jvd1NlbGVjdGVkKShyb3csIHN0YXRlLnNlbGVjdGVkUm93cywga2V5RmllbGRfMik7IH0pLCB0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgeyBzZWxlY3RlZENvdW50OiBzZWxlY3Rpb25zLmxlbmd0aCwgYWxsU2VsZWN0ZWQ6IGZhbHNlLCBzZWxlY3RlZFJvd3M6IHNlbGVjdGlvbnMsIHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlOiB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkUm93cy5sZW5ndGgsIGFsbFNlbGVjdGVkOiBzZWxlY3RlZFJvd3MubGVuZ3RoID09PSB0b3RhbFJvd3MsIHNlbGVjdGVkUm93czogc2VsZWN0ZWRSb3dzLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnQ0xFQVJfU0VMRUNURURfUk9XUyc6IHtcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZFJvd3NGbGFnID0gYWN0aW9uLnNlbGVjdGVkUm93c0ZsYWc7XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgeyBhbGxTZWxlY3RlZDogZmFsc2UsIHNlbGVjdGVkQ291bnQ6IDAsIHNlbGVjdGVkUm93czogW10sIHNlbGVjdGVkUm93c0ZsYWc6IHNlbGVjdGVkUm93c0ZsYWcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnU09SVF9DSEFOR0UnOiB7XG4gICAgICAgICAgICB2YXIgc29ydERpcmVjdGlvbiA9IGFjdGlvbi5zb3J0RGlyZWN0aW9uLCBzZWxlY3RlZENvbHVtbiA9IGFjdGlvbi5zZWxlY3RlZENvbHVtbiwgY2xlYXJTZWxlY3RlZE9uU29ydCA9IGFjdGlvbi5jbGVhclNlbGVjdGVkT25Tb3J0O1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgc2VsZWN0ZWRDb2x1bW46IHNlbGVjdGVkQ29sdW1uLCBzb3J0RGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uLCBjdXJyZW50UGFnZTogMSB9KSwgKGNsZWFyU2VsZWN0ZWRPblNvcnQgJiYge1xuICAgICAgICAgICAgICAgIGFsbFNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50OiAwLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93czogW10sXG4gICAgICAgICAgICAgICAgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2U6IHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0NIQU5HRV9QQUdFJzoge1xuICAgICAgICAgICAgdmFyIHBhZ2UgPSBhY3Rpb24ucGFnZSwgcGFnaW5hdGlvblNlcnZlciA9IGFjdGlvbi5wYWdpbmF0aW9uU2VydmVyLCB2aXNpYmxlT25seSA9IGFjdGlvbi52aXNpYmxlT25seSwgcGVyc2lzdFNlbGVjdGVkT25QYWdlQ2hhbmdlID0gYWN0aW9uLnBlcnNpc3RTZWxlY3RlZE9uUGFnZUNoYW5nZTtcbiAgICAgICAgICAgIHZhciBtZXJnZVNlbGVjdGlvbnMgPSBwYWdpbmF0aW9uU2VydmVyICYmIHBlcnNpc3RTZWxlY3RlZE9uUGFnZUNoYW5nZTtcbiAgICAgICAgICAgIHZhciBjbGVhclNlbGVjdGVkT25QYWdlID0gKHBhZ2luYXRpb25TZXJ2ZXIgJiYgIXBlcnNpc3RTZWxlY3RlZE9uUGFnZUNoYW5nZSkgfHwgdmlzaWJsZU9ubHk7XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgeyBjdXJyZW50UGFnZTogcGFnZSB9KSwgKG1lcmdlU2VsZWN0aW9ucyAmJiB7XG4gICAgICAgICAgICAgICAgYWxsU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSkpLCAoY2xlYXJTZWxlY3RlZE9uUGFnZSAmJiB7XG4gICAgICAgICAgICAgICAgYWxsU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQ6IDAsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dzOiBbXSxcbiAgICAgICAgICAgICAgICB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnQ0hBTkdFX1JPV1NfUEVSX1BBR0UnOiB7XG4gICAgICAgICAgICB2YXIgcm93c1BlclBhZ2UgPSBhY3Rpb24ucm93c1BlclBhZ2UsIHBhZ2UgPSBhY3Rpb24ucGFnZTtcbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IGN1cnJlbnRQYWdlOiBwYWdlLCByb3dzUGVyUGFnZTogcm93c1BlclBhZ2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLnRhYmxlUmVkdWNlciA9IHRhYmxlUmVkdWNlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVUaGVtZSA9IGV4cG9ydHMuZGVmYXVsdFRoZW1lcyA9IHZvaWQgMDtcbnZhciBkZWVwbWVyZ2VfMSA9IHJlcXVpcmUoXCJkZWVwbWVyZ2VcIik7XG52YXIgZGVmYXVsdFRoZW1lID0ge1xuICAgIHRleHQ6IHtcbiAgICAgICAgcHJpbWFyeTogJ3JnYmEoMCwgMCwgMCwgMC44NyknLFxuICAgICAgICBzZWNvbmRhcnk6ICdyZ2JhKDAsIDAsIDAsIDAuNTQpJyxcbiAgICAgICAgZGlzYWJsZWQ6ICdyZ2JhKDAsIDAsIDAsIDAuMzgpJyxcbiAgICB9LFxuICAgIGJhY2tncm91bmQ6IHtcbiAgICAgICAgZGVmYXVsdDogJyNGRkZGRkYnLFxuICAgIH0sXG4gICAgY29udGV4dDoge1xuICAgICAgICBiYWNrZ3JvdW5kOiAnI2UzZjJmZCcsXG4gICAgICAgIHRleHQ6ICdyZ2JhKDAsIDAsIDAsIDAuODcpJyxcbiAgICB9LFxuICAgIGRpdmlkZXI6IHtcbiAgICAgICAgZGVmYXVsdDogJ3JnYmEoMCwwLDAsLjEyKScsXG4gICAgfSxcbiAgICBidXR0b246IHtcbiAgICAgICAgZGVmYXVsdDogJ3JnYmEoMCwwLDAsLjU0KScsXG4gICAgICAgIGZvY3VzOiAncmdiYSgwLDAsMCwuMTIpJyxcbiAgICAgICAgaG92ZXI6ICdyZ2JhKDAsMCwwLC4xMiknLFxuICAgICAgICBkaXNhYmxlZDogJ3JnYmEoMCwgMCwgMCwgLjE4KScsXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgICBkZWZhdWx0OiAnI2UzZjJmZCcsXG4gICAgICAgIHRleHQ6ICdyZ2JhKDAsIDAsIDAsIDAuODcpJyxcbiAgICB9LFxuICAgIGhpZ2hsaWdodE9uSG92ZXI6IHtcbiAgICAgICAgZGVmYXVsdDogJyNFRUVFRUUnLFxuICAgICAgICB0ZXh0OiAncmdiYSgwLCAwLCAwLCAwLjg3KScsXG4gICAgfSxcbiAgICBzdHJpcGVkOiB7XG4gICAgICAgIGRlZmF1bHQ6ICcjRkFGQUZBJyxcbiAgICAgICAgdGV4dDogJ3JnYmEoMCwgMCwgMCwgMC44NyknLFxuICAgIH0sXG59O1xuZXhwb3J0cy5kZWZhdWx0VGhlbWVzID0ge1xuICAgIGRlZmF1bHQ6IGRlZmF1bHRUaGVtZSxcbiAgICBsaWdodDogZGVmYXVsdFRoZW1lLFxuICAgIGRhcms6IHtcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgcHJpbWFyeTogJyNGRkZGRkYnLFxuICAgICAgICAgICAgc2Vjb25kYXJ5OiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpJyxcbiAgICAgICAgICAgIGRpc2FibGVkOiAncmdiYSgwLDAsMCwuMTIpJyxcbiAgICAgICAgfSxcbiAgICAgICAgYmFja2dyb3VuZDoge1xuICAgICAgICAgICAgZGVmYXVsdDogJyM0MjQyNDInLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI0U5MUU2MycsXG4gICAgICAgICAgICB0ZXh0OiAnI0ZGRkZGRicsXG4gICAgICAgIH0sXG4gICAgICAgIGRpdmlkZXI6IHtcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdyZ2JhKDgxLCA4MSwgODEsIDEpJyxcbiAgICAgICAgfSxcbiAgICAgICAgYnV0dG9uOiB7XG4gICAgICAgICAgICBkZWZhdWx0OiAnI0ZGRkZGRicsXG4gICAgICAgICAgICBmb2N1czogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgLjU0KScsXG4gICAgICAgICAgICBob3ZlcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgLjEyKScsXG4gICAgICAgICAgICBkaXNhYmxlZDogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgLjE4KScsXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGVkOiB7XG4gICAgICAgICAgICBkZWZhdWx0OiAncmdiYSgwLCAwLCAwLCAuNyknLFxuICAgICAgICAgICAgdGV4dDogJyNGRkZGRkYnLFxuICAgICAgICB9LFxuICAgICAgICBoaWdobGlnaHRPbkhvdmVyOiB7XG4gICAgICAgICAgICBkZWZhdWx0OiAncmdiYSgwLCAwLCAwLCAuNyknLFxuICAgICAgICAgICAgdGV4dDogJyNGRkZGRkYnLFxuICAgICAgICB9LFxuICAgICAgICBzdHJpcGVkOiB7XG4gICAgICAgICAgICBkZWZhdWx0OiAncmdiYSgwLCAwLCAwLCAuODcpJyxcbiAgICAgICAgICAgIHRleHQ6ICcjRkZGRkZGJyxcbiAgICAgICAgfSxcbiAgICB9LFxufTtcbmZ1bmN0aW9uIGNyZWF0ZVRoZW1lKG5hbWUsIGN1c3RvbVRoZW1lLCBpbmhlcml0KSB7XG4gICAgaWYgKG5hbWUgPT09IHZvaWQgMCkgeyBuYW1lID0gJ2RlZmF1bHQnOyB9XG4gICAgaWYgKGluaGVyaXQgPT09IHZvaWQgMCkgeyBpbmhlcml0ID0gJ2RlZmF1bHQnOyB9XG4gICAgaWYgKCFleHBvcnRzLmRlZmF1bHRUaGVtZXNbbmFtZV0pIHtcbiAgICAgICAgZXhwb3J0cy5kZWZhdWx0VGhlbWVzW25hbWVdID0gKDAsIGRlZXBtZXJnZV8xLmRlZmF1bHQpKGV4cG9ydHMuZGVmYXVsdFRoZW1lc1tpbmhlcml0XSwgY3VzdG9tVGhlbWUgfHwge30pO1xuICAgIH1cbiAgICAvLyBhbGxvdyB0d2Vha2luZyBkZWZhdWx0IG9yIGxpZ2h0IHRoZW1lcyBpZiB0aGUgdGhlbWUgcGFzc2VkIGluIG1hdGNoZXNcbiAgICBleHBvcnRzLmRlZmF1bHRUaGVtZXNbbmFtZV0gPSAoMCwgZGVlcG1lcmdlXzEuZGVmYXVsdCkoZXhwb3J0cy5kZWZhdWx0VGhlbWVzW25hbWVdLCBjdXN0b21UaGVtZSB8fCB7fSk7XG4gICAgcmV0dXJuIGV4cG9ydHMuZGVmYXVsdFRoZW1lc1tuYW1lXTtcbn1cbmV4cG9ydHMuY3JlYXRlVGhlbWUgPSBjcmVhdGVUaGVtZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Tb3J0T3JkZXIgPSB2b2lkIDA7XG52YXIgU29ydE9yZGVyO1xuKGZ1bmN0aW9uIChTb3J0T3JkZXIpIHtcbiAgICBTb3J0T3JkZXJbXCJBU0NcIl0gPSBcImFzY1wiO1xuICAgIFNvcnRPcmRlcltcIkRFU0NcIl0gPSBcImRlc2NcIjtcbn0pKFNvcnRPcmRlciA9IGV4cG9ydHMuU29ydE9yZGVyIHx8IChleHBvcnRzLlNvcnRPcmRlciA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmVxdWFsaXplSWQgPSBleHBvcnRzLmZpbmRDb2x1bW5JbmRleEJ5SWQgPSBleHBvcnRzLmlzT2RkID0gZXhwb3J0cy5pc1Jvd1NlbGVjdGVkID0gZXhwb3J0cy5nZXRDb25kaXRpb25hbFN0eWxlID0gZXhwb3J0cy5ub29wID0gZXhwb3J0cy5yZWNhbGN1bGF0ZVBhZ2UgPSBleHBvcnRzLmdldE51bWJlck9mUGFnZXMgPSBleHBvcnRzLmhhbmRsZUZ1bmN0aW9uUHJvcHMgPSBleHBvcnRzLmdldFNvcnREaXJlY3Rpb24gPSBleHBvcnRzLmRlY29yYXRlQ29sdW1ucyA9IGV4cG9ydHMucmVtb3ZlSXRlbSA9IGV4cG9ydHMuaW5zZXJ0SXRlbSA9IGV4cG9ydHMuZ2V0UHJvcGVydHkgPSBleHBvcnRzLnBhcnNlU2VsZWN0b3IgPSBleHBvcnRzLnNvcnQgPSBleHBvcnRzLmlzRW1wdHkgPSBleHBvcnRzLnByb3AgPSB2b2lkIDA7XG52YXIgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xuZnVuY3Rpb24gcHJvcChvYmosIGtleSkge1xuICAgIHJldHVybiBvYmpba2V5XTtcbn1cbmV4cG9ydHMucHJvcCA9IHByb3A7XG5mdW5jdGlvbiBpc0VtcHR5KGZpZWxkKSB7XG4gICAgaWYgKGZpZWxkID09PSB2b2lkIDApIHsgZmllbGQgPSAnJzsgfVxuICAgIGlmICh0eXBlb2YgZmllbGQgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICFmaWVsZCB8fCBmaWVsZC5sZW5ndGggPT09IDA7XG59XG5leHBvcnRzLmlzRW1wdHkgPSBpc0VtcHR5O1xuZnVuY3Rpb24gc29ydChyb3dzLCBcbi8vIFRPRE86IHJlbW92ZSBzdHJpbmcgaW4gVjhcbnNlbGVjdG9yLCBkaXJlY3Rpb24sIHNvcnRGbikge1xuICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgfVxuICAgIGlmIChzb3J0Rm4gJiYgdHlwZW9mIHNvcnRGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyB3ZSBtdXN0IGNyZWF0ZSBhIG5ldyByb3dzIHJlZmVyZW5jZVxuICAgICAgICByZXR1cm4gc29ydEZuKHJvd3Muc2xpY2UoMCksIHNlbGVjdG9yLCBkaXJlY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gcm93cy5zbGljZSgwKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHZhciBhVmFsdWU7XG4gICAgICAgIHZhciBiVmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VsZWN0b3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBhVmFsdWUgPSBwYXJzZVNlbGVjdG9yKGEsIHNlbGVjdG9yKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGJWYWx1ZSA9IHBhcnNlU2VsZWN0b3IoYiwgc2VsZWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYVZhbHVlID0gc2VsZWN0b3IoYSk7XG4gICAgICAgICAgICBiVmFsdWUgPSBzZWxlY3RvcihiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnYXNjJykge1xuICAgICAgICAgICAgaWYgKGFWYWx1ZSA8IGJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhVmFsdWUgPiBiVmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgIGlmIChhVmFsdWUgPiBiVmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYVZhbHVlIDwgYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG59XG5leHBvcnRzLnNvcnQgPSBzb3J0O1xuLy8gVE9ETzogc3RyaW5nIGJhc2VkIHNlbGVjdG9ycyB3aWxsIGJlIHJlbW92ZWQgaW4gdjhcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBwYXJzZVNlbGVjdG9yKHJvdywgc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gc2VsZWN0b3Iuc3BsaXQoJy4nKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGFydCkge1xuICAgICAgICAvLyBPKG4yKSB3aGVuIHF1ZXJ5aW5nIGZvciBhbiBhcnJheSAoZS5nLiBpdGVtc1swXS5uYW1lKVxuICAgICAgICAvLyBMaWtlbHksIHRoZSBvYmplY3QgZGVwdGggd2lsbCBiZSByZWFzb25hYmxlIGVub3VnaCB0aGF0IHBlcmZvcm1hbmNlIGlzIG5vdCBhIGNvbmNlcm5cbiAgICAgICAgdmFyIGFyciA9IHBhcnQubWF0Y2goL1teXFxdXFxcXFsuXSsvZyk7XG4gICAgICAgIGlmIChhcnIgJiYgYXJyLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjY1thcnJbaV1dW2FycltpICsgMV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2NbcGFydF07XG4gICAgfSwgcm93KTtcbn1cbmV4cG9ydHMucGFyc2VTZWxlY3RvciA9IHBhcnNlU2VsZWN0b3I7XG5mdW5jdGlvbiBnZXRQcm9wZXJ0eShyb3csIFxuLy8gVE9ETzogcmVtb3ZlIHN0cmluZyB0eXBlIGluIFY4XG5zZWxlY3RvciwgLy8gdW5rbm93biBhbGxvd3MgdXMgdG8gdGhyb3cgYW4gZXJyb3IgZm9yIEpTIGNvZGVcbmZvcm1hdCwgcm93SW5kZXgpIHtcbiAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBUT0RPOiByZW1vdmUgIHN0cmluZyBjaGVjayBpbiBWOFxuICAgIGlmICh0eXBlb2Ygc2VsZWN0b3IgIT09ICdzdHJpbmcnICYmIHR5cGVvZiBzZWxlY3RvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NlbGVjdG9yIG11c3QgYmUgYSAuIGRlbGltaXRlZCBzdHJpbmcgZWcgKG15LnByb3BlcnR5KSBvciBmdW5jdGlvbiAoZS5nLiByb3cgPT4gcm93LmZpZWxkJyk7XG4gICAgfVxuICAgIC8vIGZvcm1hdCB3aWxsIG92ZXJyaWRlIGhvdyB0aGUgc2VsZWN0b3IgaXMgZGlzcGxheWVkIGJ1dCB0aGUgb3JpZ2luYWwgZGF0YXNldCBpcyB1c2VkIGZvciBzb3J0aW5nXG4gICAgaWYgKGZvcm1hdCAmJiB0eXBlb2YgZm9ybWF0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQocm93LCByb3dJbmRleCk7XG4gICAgfVxuICAgIGlmIChzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yKHJvdywgcm93SW5kZXgpO1xuICAgIH1cbiAgICAvLyBUT0RPOiBSZW1vdmUgaW4gVjhcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHBhcnNlU2VsZWN0b3Iocm93LCBzZWxlY3Rvcik7XG59XG5leHBvcnRzLmdldFByb3BlcnR5ID0gZ2V0UHJvcGVydHk7XG5mdW5jdGlvbiBpbnNlcnRJdGVtKGFycmF5LCBpdGVtLCBpbmRleCkge1xuICAgIGlmIChhcnJheSA9PT0gdm9pZCAwKSB7IGFycmF5ID0gW107IH1cbiAgICBpZiAoaW5kZXggPT09IHZvaWQgMCkgeyBpbmRleCA9IDA7IH1cbiAgICByZXR1cm4gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIGFycmF5LnNsaWNlKDAsIGluZGV4KSwgdHJ1ZSksIFtpdGVtXSwgZmFsc2UpLCBhcnJheS5zbGljZShpbmRleCksIHRydWUpO1xufVxuZXhwb3J0cy5pbnNlcnRJdGVtID0gaW5zZXJ0SXRlbTtcbmZ1bmN0aW9uIHJlbW92ZUl0ZW0oYXJyYXksIGl0ZW0sIGtleUZpZWxkKSB7XG4gICAgaWYgKGFycmF5ID09PSB2b2lkIDApIHsgYXJyYXkgPSBbXTsgfVxuICAgIGlmIChrZXlGaWVsZCA9PT0gdm9pZCAwKSB7IGtleUZpZWxkID0gJ2lkJzsgfVxuICAgIHZhciBuZXdBcnJheSA9IGFycmF5LnNsaWNlKCk7XG4gICAgdmFyIG91dGVyRmllbGQgPSBwcm9wKGl0ZW0sIGtleUZpZWxkKTtcbiAgICBpZiAob3V0ZXJGaWVsZCkge1xuICAgICAgICBuZXdBcnJheS5zcGxpY2UobmV3QXJyYXkuZmluZEluZGV4KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICB2YXIgaW5uZXJGaWVsZCA9IHByb3AoYSwga2V5RmllbGQpO1xuICAgICAgICAgICAgcmV0dXJuIGlubmVyRmllbGQgPT09IG91dGVyRmllbGQ7XG4gICAgICAgIH0pLCAxKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG5ld0FycmF5LnNwbGljZShuZXdBcnJheS5maW5kSW5kZXgoZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGEgPT09IGl0ZW07IH0pLCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0FycmF5O1xufVxuZXhwb3J0cy5yZW1vdmVJdGVtID0gcmVtb3ZlSXRlbTtcbi8vIE1ha2Ugc3VyZSBjb2x1bW5zIGhhdmUgdW5pcXVlIGlkJ3NcbmZ1bmN0aW9uIGRlY29yYXRlQ29sdW1ucyhjb2x1bW5zKSB7XG4gICAgcmV0dXJuIGNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4sIGluZGV4KSB7XG4gICAgICAgIHZhciBkZWNvcmF0ZWRDb2x1bW4gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29sdW1uKSwgeyBzb3J0YWJsZTogY29sdW1uLnNvcnRhYmxlIHx8ICEhY29sdW1uLnNvcnRGdW5jdGlvbiB8fCB1bmRlZmluZWQgfSk7XG4gICAgICAgIGlmICghY29sdW1uLmlkKSB7XG4gICAgICAgICAgICBkZWNvcmF0ZWRDb2x1bW4uaWQgPSBpbmRleCArIDE7XG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdGVkQ29sdW1uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNvcmF0ZWRDb2x1bW47XG4gICAgfSk7XG59XG5leHBvcnRzLmRlY29yYXRlQ29sdW1ucyA9IGRlY29yYXRlQ29sdW1ucztcbmZ1bmN0aW9uIGdldFNvcnREaXJlY3Rpb24oYXNjRGlyZWN0aW9uKSB7XG4gICAgaWYgKGFzY0RpcmVjdGlvbiA9PT0gdm9pZCAwKSB7IGFzY0RpcmVjdGlvbiA9IGZhbHNlOyB9XG4gICAgcmV0dXJuIGFzY0RpcmVjdGlvbiA/IHR5cGVzXzEuU29ydE9yZGVyLkFTQyA6IHR5cGVzXzEuU29ydE9yZGVyLkRFU0M7XG59XG5leHBvcnRzLmdldFNvcnREaXJlY3Rpb24gPSBnZXRTb3J0RGlyZWN0aW9uO1xuZnVuY3Rpb24gaGFuZGxlRnVuY3Rpb25Qcm9wcyhvYmplY3QpIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHZhciBuZXdPYmplY3Q7XG4gICAgT2JqZWN0LmtleXMob2JqZWN0KVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChvKSB7IHJldHVybiBvYmplY3Rbb107IH0pXG4gICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgb2xkT2JqZWN0ID0gb2JqZWN0O1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBuZXdPYmplY3QgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2xkT2JqZWN0KSwgKF9hID0ge30sIF9hW09iamVjdC5rZXlzKG9iamVjdClbaW5kZXhdXSA9IHZhbHVlLmFwcGx5KHZvaWQgMCwgYXJncyksIF9hKSk7XG4gICAgICAgICAgICAvLyBkZWxldGUgb2xkT2JqZWN0W3ZhbHVlXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXdPYmplY3QgfHwgb2JqZWN0O1xufVxuZXhwb3J0cy5oYW5kbGVGdW5jdGlvblByb3BzID0gaGFuZGxlRnVuY3Rpb25Qcm9wcztcbmZ1bmN0aW9uIGdldE51bWJlck9mUGFnZXMocm93Q291bnQsIHJvd3NQZXJQYWdlKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbChyb3dDb3VudCAvIHJvd3NQZXJQYWdlKTtcbn1cbmV4cG9ydHMuZ2V0TnVtYmVyT2ZQYWdlcyA9IGdldE51bWJlck9mUGFnZXM7XG5mdW5jdGlvbiByZWNhbGN1bGF0ZVBhZ2UocHJldlBhZ2UsIG5leHRQYWdlKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKHByZXZQYWdlLCBuZXh0UGFnZSk7XG59XG5leHBvcnRzLnJlY2FsY3VsYXRlUGFnZSA9IHJlY2FsY3VsYXRlUGFnZTtcbnZhciBub29wID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbmV4cG9ydHMubm9vcCA9IG5vb3A7XG5mdW5jdGlvbiBnZXRDb25kaXRpb25hbFN0eWxlKHJvdywgY29uZGl0aW9uYWxSb3dTdHlsZXMsIGJhc2VDbGFzc05hbWVzKSB7XG4gICAgaWYgKGNvbmRpdGlvbmFsUm93U3R5bGVzID09PSB2b2lkIDApIHsgY29uZGl0aW9uYWxSb3dTdHlsZXMgPSBbXTsgfVxuICAgIGlmIChiYXNlQ2xhc3NOYW1lcyA9PT0gdm9pZCAwKSB7IGJhc2VDbGFzc05hbWVzID0gW107IH1cbiAgICB2YXIgcm93U3R5bGUgPSB7fTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IF9fc3ByZWFkQXJyYXkoW10sIGJhc2VDbGFzc05hbWVzLCB0cnVlKTtcbiAgICBpZiAoY29uZGl0aW9uYWxSb3dTdHlsZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbmRpdGlvbmFsUm93U3R5bGVzLmZvckVhY2goZnVuY3Rpb24gKGNycykge1xuICAgICAgICAgICAgaWYgKCFjcnMud2hlbiB8fCB0eXBlb2YgY3JzLndoZW4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wid2hlblwiIG11c3QgYmUgZGVmaW5lZCBpbiB0aGUgY29uZGl0aW9uYWwgc3R5bGUgb2JqZWN0IGFuZCBtdXN0IGJlIGZ1bmN0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBldmFsdWF0ZSB0aGUgZmllbGQgYW5kIGlmIHRydWUgcmV0dXJuIGEgdGhlIHN0eWxlIHRvIGJlIGFwcGxpZWRcbiAgICAgICAgICAgIGlmIChjcnMud2hlbihyb3cpKSB7XG4gICAgICAgICAgICAgICAgcm93U3R5bGUgPSBjcnMuc3R5bGUgfHwge307XG4gICAgICAgICAgICAgICAgaWYgKGNycy5jbGFzc05hbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIGNsYXNzTmFtZXMsIHRydWUpLCBjcnMuY2xhc3NOYW1lcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3JzLnN0eWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd1N0eWxlID0gY3JzLnN0eWxlKHJvdykgfHwge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHsgc3R5bGU6IHJvd1N0eWxlLCBjbGFzc05hbWVzOiBjbGFzc05hbWVzLmpvaW4oJyAnKSB9O1xufVxuZXhwb3J0cy5nZXRDb25kaXRpb25hbFN0eWxlID0gZ2V0Q29uZGl0aW9uYWxTdHlsZTtcbmZ1bmN0aW9uIGlzUm93U2VsZWN0ZWQocm93LCBzZWxlY3RlZFJvd3MsIGtleUZpZWxkKSB7XG4gICAgaWYgKHNlbGVjdGVkUm93cyA9PT0gdm9pZCAwKSB7IHNlbGVjdGVkUm93cyA9IFtdOyB9XG4gICAgaWYgKGtleUZpZWxkID09PSB2b2lkIDApIHsga2V5RmllbGQgPSAnaWQnOyB9XG4gICAgLy8gY2FzdCByb3cgYXMgVGFibGVSb3cgYmVjYXVzZSB0aGUgcHJvcGVydHkgaXMgdW5rbm93biBpbiBhZHZhbmNlIHRoZXJlZm9yZSwgdHlwZXNjcmlwdCB3aWxsIHRocm93IGFuIGVycm9yXG4gICAgdmFyIG91dGVyRmllbGQgPSBwcm9wKHJvdywga2V5RmllbGQpO1xuICAgIGlmIChvdXRlckZpZWxkKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFJvd3Muc29tZShmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgdmFyIGlubmVyRmllbGQgPSBwcm9wKHIsIGtleUZpZWxkKTtcbiAgICAgICAgICAgIHJldHVybiBpbm5lckZpZWxkID09PSBvdXRlckZpZWxkO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkUm93cy5zb21lKGZ1bmN0aW9uIChyKSB7IHJldHVybiByID09PSByb3c7IH0pO1xufVxuZXhwb3J0cy5pc1Jvd1NlbGVjdGVkID0gaXNSb3dTZWxlY3RlZDtcbmZ1bmN0aW9uIGlzT2RkKG51bSkge1xuICAgIHJldHVybiBudW0gJSAyID09PSAwO1xufVxuZXhwb3J0cy5pc09kZCA9IGlzT2RkO1xuZnVuY3Rpb24gZmluZENvbHVtbkluZGV4QnlJZChjb2x1bW5zLCBpZCkge1xuICAgIGlmICghaWQpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICByZXR1cm4gY29sdW1ucy5maW5kSW5kZXgoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgcmV0dXJuIGVxdWFsaXplSWQoYy5pZCwgaWQpO1xuICAgIH0pO1xufVxuZXhwb3J0cy5maW5kQ29sdW1uSW5kZXhCeUlkID0gZmluZENvbHVtbkluZGV4QnlJZDtcbmZ1bmN0aW9uIGVxdWFsaXplSWQoYSwgYikge1xuICAgIHJldHVybiBhID09IGI7XG59XG5leHBvcnRzLmVxdWFsaXplSWQgPSBlcXVhbGl6ZUlkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQmFkZ2UgPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgQmFkZ2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJhZGdlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEJhZGdlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIEJhZGdlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6ICdiYWRnZSAnICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIEJhZGdlO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuQmFkZ2UgPSBCYWRnZTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJ1dHRvbiA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBCdXR0b24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJ1dHRvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBCdXR0b24oKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgICAgICBkdXJhdGlvbjogOTUwXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLy8gY29uc3RydWN0b3IocHJvcHM6IEJ1dHRvblByb3BzKSB7XG4gICAgLy8gICAgIHN1cGVyKHByb3BzKTtcbiAgICAvLyB9XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGlzYXRpb24gb2YgdGhlIHdhdmUgZWZmZWN0IGFmdGVyIHRoZSBjb21wb25lbnQgZGlkIG1vdW50XG4gICAgICovXG4gICAgQnV0dG9uLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRoaXMuZWwpIHtcbiAgICAgICAgICAgIC8vbmV3IFdhdmVzKHRoaXMuZWwsIHsgZHVyYXRpb246IDk1MCB9KTtcbiAgICAgICAgICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy50cmlnZ2VyRWZmZWN0LmJpbmQoX3RoaXMpKGUpO1xuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy50cmlnZ2VyRWZmZWN0LmJpbmQoX3RoaXMpKGUpO1xuICAgICAgICAgICAgfSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBCdXR0b24ucHJvdG90eXBlLnRyaWdnZXJFZmZlY3QgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAodGhpcy5lbCkge1xuICAgICAgICAgICAgdGhpcy5zaG93RWZmZWN0KGUpO1xuICAgICAgICAgICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdykge1xuICAgICAgICAgICAgICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5oaWRlRWZmZWN0LmJpbmQoX3RoaXMpKGUpO1xuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuaGlkZUVmZmVjdC5iaW5kKF90aGlzKShlKTtcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVFZmZlY3QuYmluZChfdGhpcykoZSk7XG4gICAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVFZmZlY3QuYmluZChfdGhpcykoZSk7XG4gICAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLmhpZGVFZmZlY3QuYmluZChfdGhpcykoZSk7XG4gICAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEJ1dHRvbi5wcm90b3R5cGUuaXNXaW5kb3cgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogIT09IG51bGwgJiYgb2JqID09PSBvYmoud2luZG93O1xuICAgIH07XG4gICAgQnV0dG9uLnByb3RvdHlwZS5nZXRXaW5kb3cgPSBmdW5jdGlvbiAoZWxlbSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1dpbmRvdyhlbGVtKSA/IGVsZW0gOiBlbGVtLm5vZGVUeXBlID09PSA5ICYmIGVsZW0uZGVmYXVsdFZpZXc7XG4gICAgfTtcbiAgICBCdXR0b24ucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgdmFyIGRvY0VsZW0sIHdpbiwgYm94ID0geyB0b3A6IDAsIGxlZnQ6IDAgfSwgZG9jID0gdGhpcy5lbCAmJiB0aGlzLmVsLm93bmVyRG9jdW1lbnQ7XG4gICAgICAgIGRvY0VsZW0gPSBkb2MgPT09IG51bGwgfHwgZG9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkb2MuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICBpZiAodHlwZW9mICgoX2EgPSB0aGlzLmVsKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSAhPT0gdHlwZW9mIHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYm94ID0gKChfYiA9IHRoaXMuZWwpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkgfHwgeyB0b3A6IDAsIGxlZnQ6IDAgfTtcbiAgICAgICAgfVxuICAgICAgICB3aW4gPSB0aGlzLmdldFdpbmRvdyhkb2MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBib3gudG9wICsgd2luLnBhZ2VZT2Zmc2V0IC0gKChkb2NFbGVtID09PSBudWxsIHx8IGRvY0VsZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRvY0VsZW0uY2xpZW50VG9wKSB8fCAwKSxcbiAgICAgICAgICAgIGxlZnQ6IGJveC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0IC0gKChkb2NFbGVtID09PSBudWxsIHx8IGRvY0VsZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRvY0VsZW0uY2xpZW50TGVmdCkgfHwgMClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIEJ1dHRvbi5wcm90b3R5cGUuc2hvd0VmZmVjdCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmICh0aGlzLmVsICYmIGRvY3VtZW50KSB7XG4gICAgICAgICAgICAvLyBEaXNhYmxlIHJpZ2h0IGNsaWNrXG4gICAgICAgICAgICBpZiAoZS5idXR0b24gPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBDcmVhdGUgcmlwcGxlXG4gICAgICAgICAgICB2YXIgcmlwcGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICByaXBwbGUuY2xhc3NOYW1lID0gJ3dhdmVzLXJpcHBsZSc7XG4gICAgICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKHJpcHBsZSk7XG4gICAgICAgICAgICB0aGlzLnJpcHBsZSA9IHJpcHBsZTtcbiAgICAgICAgICAgIC8vIEdldCBjbGljayBjb29yZGluYXRlIGFuZCBlbGVtZW50IHdpdGRoXG4gICAgICAgICAgICB2YXIgcG9zID0gdGhpcy5vZmZzZXQoKTtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZVkgPSAoZS5wYWdlWSAtIHBvcy50b3ApO1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlWCA9IChlLnBhZ2VYIC0gcG9zLmxlZnQpO1xuICAgICAgICAgICAgdmFyIHNjYWxlID0gJ3NjYWxlKCcgKyAoKHRoaXMuZWwuY2xpZW50V2lkdGggLyAxMDApICogMTApICsgJyknO1xuICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgdG91Y2ggZGV2aWNlc1xuICAgICAgICAgICAgaWYgKCd0b3VjaGVzJyBpbiBlKSB7XG4gICAgICAgICAgICAgICAgcmVsYXRpdmVZID0gKGUudG91Y2hlc1swXS5wYWdlWSAtIHBvcy50b3ApO1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlWCA9IChlLnRvdWNoZXNbMF0ucGFnZVggLSBwb3MubGVmdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBdHRhY2ggZGF0YSB0byBlbGVtZW50XG4gICAgICAgICAgICB0aGlzLnJpcHBsZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaG9sZCcsIERhdGUubm93KCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB0aGlzLnJpcHBsZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NhbGUnLCBzY2FsZSk7XG4gICAgICAgICAgICB0aGlzLnJpcHBsZS5zZXRBdHRyaWJ1dGUoJ2RhdGEteCcsIHJlbGF0aXZlWC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIHRoaXMucmlwcGxlLnNldEF0dHJpYnV0ZSgnZGF0YS15JywgcmVsYXRpdmVZLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgLy8gU2V0IHJpcHBsZSBwb3NpdGlvblxuICAgICAgICAgICAgdmFyIHJpcHBsZVN0eWxlID0ge1xuICAgICAgICAgICAgICAgICd0b3AnOiByZWxhdGl2ZVkgKyAncHgnLFxuICAgICAgICAgICAgICAgICdsZWZ0JzogcmVsYXRpdmVYICsgJ3B4J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vdGhpcy5yaXBwbGUuY2xhc3NOYW1lID0gIHRoaXMucmlwcGxlLmNsYXNzTmFtZSArICcgd2F2ZXMtbm90cmFuc2l0aW9uJztcbiAgICAgICAgICAgIHRoaXMucmlwcGxlLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCB0aGlzLmNvbnZlcnRTdHlsZShyaXBwbGVTdHlsZSkpO1xuICAgICAgICAgICAgdGhpcy5yaXBwbGUuY2xhc3NOYW1lID0gdGhpcy5yaXBwbGUuY2xhc3NOYW1lLnJlcGxhY2UoJ3dhdmVzLW5vdHJhbnNpdGlvbicsICcnKTtcbiAgICAgICAgICAgIC8vIFNjYWxlIHRoZSByaXBwbGVcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyctd2Via2l0LXRyYW5zZm9ybSddID0gc2NhbGU7XG4gICAgICAgICAgICByaXBwbGVTdHlsZVsnLW1vei10cmFuc2Zvcm0nXSA9IHNjYWxlO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJy1tcy10cmFuc2Zvcm0nXSA9IHNjYWxlO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJy1vLXRyYW5zZm9ybSddID0gc2NhbGU7XG4gICAgICAgICAgICByaXBwbGVTdHlsZVsndHJhbnNmb3JtJ10gPSBzY2FsZTtcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWydvcGFjaXR5J10gPSAnMSc7XG4gICAgICAgICAgICByaXBwbGVTdHlsZVsnLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uJ10gPSAyICogdGhpcy5wcm9wcy5kdXJhdGlvbiAvIDMgKyAnbXMnO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJy1tb3otdHJhbnNpdGlvbi1kdXJhdGlvbiddID0gMiAqIHRoaXMucHJvcHMuZHVyYXRpb24gLyAzICsgJ21zJztcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyctby10cmFuc2l0aW9uLWR1cmF0aW9uJ10gPSAyICogdGhpcy5wcm9wcy5kdXJhdGlvbiAvIDMgKyAnbXMnO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJ3RyYW5zaXRpb24tZHVyYXRpb24nXSA9IDIgKiB0aGlzLnByb3BzLmR1cmF0aW9uIC8gMyArICdtcyc7XG4gICAgICAgICAgICByaXBwbGVTdHlsZVsnLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiddID0gJ2N1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCknO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJy1tb3otdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nXSA9ICdjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApJztcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyctby10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiddID0gJ2N1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCknO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJ10gPSAnY3ViaWMtYmV6aWVyKDAuMjUwLCAwLjQ2MCwgMC40NTAsIDAuOTQwKSc7XG4gICAgICAgICAgICB0aGlzLnJpcHBsZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgdGhpcy5jb252ZXJ0U3R5bGUocmlwcGxlU3R5bGUpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQnV0dG9uLnByb3RvdHlwZS5jb252ZXJ0U3R5bGUgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIHZhciBzdHlsZSA9ICcnO1xuICAgICAgICBmb3IgKHZhciBhIGluIG9iaikge1xuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShhKSkge1xuICAgICAgICAgICAgICAgIHN0eWxlICs9IChhICsgJzonICsgb2JqW2FdICsgJzsnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgfTtcbiAgICBCdXR0b24ucHJvdG90eXBlLmhpZGVFZmZlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmVsKSB7XG4gICAgICAgICAgICAvL0VmZmVjdC5oaWRlXG4gICAgICAgICAgICB2YXIgcmlwcGxlXzEgPSB0aGlzLmVsLmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICBpZiAocmlwcGxlXzEgJiYgcmlwcGxlXzEuY2xhc3NMaXN0LmNvbnRhaW5zKFwid2F2ZXMtcmlwcGxlXCIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlbGF0aXZlWF8xID0gcmlwcGxlXzEuZ2V0QXR0cmlidXRlKCdkYXRhLXgnKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVsYXRpdmVZXzEgPSByaXBwbGVfMS5nZXRBdHRyaWJ1dGUoJ2RhdGEteScpO1xuICAgICAgICAgICAgICAgIHZhciBzY2FsZV8xID0gcmlwcGxlXzEuZ2V0QXR0cmlidXRlKCdkYXRhLXNjYWxlJyk7XG4gICAgICAgICAgICAgICAgLy8gR2V0IGRlbGF5IGJlZXR3ZWVuIG1vdXNlZG93biBhbmQgbW91c2UgbGVhdmVcbiAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IERhdGUubm93KCkgLSBOdW1iZXIocmlwcGxlXzEuZ2V0QXR0cmlidXRlKCdkYXRhLWhvbGQnKSk7XG4gICAgICAgICAgICAgICAgdmFyIGRlbGF5ID0gdGhpcy5wcm9wcy5kdXJhdGlvbiAvIDIgLSBkaWZmO1xuICAgICAgICAgICAgICAgIGlmIChkZWxheSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsYXkgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgbWVfMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmFkZSBvdXQgcmlwcGxlIGFmdGVyIGRlbGF5XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnOiByZWxhdGl2ZVlfMSArICdweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCc6IHJlbGF0aXZlWF8xICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JzogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRHVyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICctd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb24nOiBtZV8xLnByb3BzLmR1cmF0aW9uIC8gMyArICdtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uJzogbWVfMS5wcm9wcy5kdXJhdGlvbiAvIDMgKyAnbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJy1vLXRyYW5zaXRpb24tZHVyYXRpb24nOiBtZV8xLnByb3BzLmR1cmF0aW9uIC8gMyArICdtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IG1lXzEucHJvcHMuZHVyYXRpb24gLyAzICsgJ21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICctd2Via2l0LXRyYW5zZm9ybSc6IHNjYWxlXzEsXG4gICAgICAgICAgICAgICAgICAgICAgICAnLW1vei10cmFuc2Zvcm0nOiBzY2FsZV8xLFxuICAgICAgICAgICAgICAgICAgICAgICAgJy1tcy10cmFuc2Zvcm0nOiBzY2FsZV8xLFxuICAgICAgICAgICAgICAgICAgICAgICAgJy1vLXRyYW5zZm9ybSc6IHNjYWxlXzEsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtJzogc2NhbGVfMSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmlwcGxlXzEgPT09IG51bGwgfHwgcmlwcGxlXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJpcHBsZV8xLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBtZV8xLmNvbnZlcnRTdHlsZShzdHlsZSkpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlwcGxlXzEgJiYgKChfYSA9IG1lXzEuZWwpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZW1vdmVDaGlsZChyaXBwbGVfMSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIG1lXzEucHJvcHMuZHVyYXRpb24pO1xuICAgICAgICAgICAgICAgIH0sIGRlbGF5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgQnV0dG9uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSBcImJ0biB3YXZlcy1lZmZlY3QgXCI7XG4gICAgICAgIC8vIGlmICh0aGlzLnByb3BzLm1vZGVsID09IFwiY2lyY2xlXCIpIHtcbiAgICAgICAgLy8gICBjbGFzc05hbWUgKz0gXCJidG4tZmxvYXRpbmcgXCI7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHRoaXMucHJvcHMuc2l6ZSA9PSBcImxhcmdlXCIpIHtcbiAgICAgICAgLy8gICBjbGFzc05hbWUgKz0gXCJidG4tbGFyZ2UgXCI7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHRoaXMucHJvcHMuc2l6ZSA9PSBcInNtYWxsXCIpIHtcbiAgICAgICAgLy8gICBjbGFzc05hbWUgKz0gXCJidG4tc21hbGwgXCI7XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBfX2Fzc2lnbih7IGhyZWY6IFwiI3NlY3Rpb25cIiB9LCB0aGlzLnByb3BzLCB7IHJlZjogZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuZWwgPSBlbDtcbiAgICAgICAgICAgIH0sIGNsYXNzTmFtZTogY2xhc3NOYW1lICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBCdXR0b247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5CdXR0b24gPSBCdXR0b247XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5DYXJkQWN0aW9uID0gZXhwb3J0cy5DYXJkVGl0bGUgPSBleHBvcnRzLkNhcmRJbWFnZSA9IGV4cG9ydHMuQ2FyZENvbnRlbnQgPSBleHBvcnRzLkNhcmQgPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgQ2FyZCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2FyZCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYXJkKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhcmQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiBcImNhcmQgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSB9KSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ2FyZDtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkNhcmQgPSBDYXJkO1xudmFyIENhcmRDb250ZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYXJkQ29udGVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYXJkQ29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDYXJkQ29udGVudC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiBcImNhcmQtY29udGVudCBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lIH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ2FyZENvbnRlbnQ7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5DYXJkQ29udGVudCA9IENhcmRDb250ZW50O1xudmFyIENhcmRJbWFnZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2FyZEltYWdlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENhcmRJbWFnZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDYXJkSW1hZ2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNsYXNzTmFtZTogXCJjYXJkLWltYWdlIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgc3JjOiB0aGlzLnByb3BzLnNyYyB9KSxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuaW1hZ2VUaXRsZSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJjYXJkLXRpdGxlXCIgfSwgdGhpcy5wcm9wcy5pbWFnZVRpdGxlKSxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW4pKTtcbiAgICB9O1xuICAgIHJldHVybiBDYXJkSW1hZ2U7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5DYXJkSW1hZ2UgPSBDYXJkSW1hZ2U7XG52YXIgQ2FyZFRpdGxlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYXJkVGl0bGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2FyZFRpdGxlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhcmRUaXRsZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNsYXNzTmFtZTogXCJjYXJkLXRpdGxlIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDYXJkVGl0bGU7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5DYXJkVGl0bGUgPSBDYXJkVGl0bGU7XG52YXIgQ2FyZEFjdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2FyZEFjdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYXJkQWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhcmRBY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNsYXNzTmFtZTogXCJjYXJkLWFjdGlvbiAgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSB9KSkpO1xuICAgIH07XG4gICAgcmV0dXJuIENhcmRBY3Rpb247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5DYXJkQWN0aW9uID0gQ2FyZEFjdGlvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNoaXAgPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgQ2hpcCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2hpcCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDaGlwKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENoaXAucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiAnY2hpcCAnICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpOyB9O1xuICAgIHJldHVybiBDaGlwO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuQ2hpcCA9IENoaXA7XG5leHBvcnRzLmRlZmF1bHQgPSBDaGlwO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ29sbGFwc1RyaWdnZXIgPSBleHBvcnRzLkNvbGxhcHNCb2R5ID0gZXhwb3J0cy5Db2xsYXBzaWJsZSA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBJY29uXzEgPSByZXF1aXJlKFwiLi4vaWNvbnMvSWNvblwiKTtcbnZhciBDb2xsYXBzaWJsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29sbGFwc2libGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ29sbGFwc2libGUoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQ29sbGFwc2libGUucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiBcImNvbGxhcHNpYmxlIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDb2xsYXBzaWJsZTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkNvbGxhcHNpYmxlID0gQ29sbGFwc2libGU7XG52YXIgQ29sbGFwc0JvZHkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbGxhcHNCb2R5LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbGxhcHNCb2R5KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZWwgPSBudWxsO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIENvbGxhcHNCb2R5LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyByZWY6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5lbCA9IHJlZjtcbiAgICAgICAgICAgIH0sIGNsYXNzTmFtZTogXCJjb2xsYXBzaWJsZS1ib2R5IFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDb2xsYXBzQm9keTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkNvbGxhcHNCb2R5ID0gQ29sbGFwc0JvZHk7XG52YXIgQ29sbGFwc1RyaWdnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbGxhcHNUcmlnZ2VyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbGxhcHNUcmlnZ2VyKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBpc09wZW46IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLmVsID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vICBuZXcgV2F2ZXModGhpcy5lbCwgeyBkdXJhdGlvbjogMTA1MCB9KTtcbiAgICB9O1xuICAgIENvbGxhcHNUcmlnZ2VyLnByb3RvdHlwZS5zaG93SGlkZUJvZHkgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZShlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kKGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUuY29sbGFwc2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB2YXIgY29sbGFwc2libGUgPSB0aGlzLmZpbmRDb2xsYXBzaWJsZS5iaW5kKHRoaXMpKCk7XG4gICAgICAgIGlmIChjb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgdmFyIGJvZHlFbCA9IGNvbGxhcHNpYmxlLnF1ZXJ5U2VsZWN0b3IoXCIuY29sbGFwc2libGUtYm9keVwiKTtcbiAgICAgICAgICAgIGlmIChib2R5RWwpIHtcbiAgICAgICAgICAgICAgICBib2R5RWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgaXNPcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUuZmluZENvbGxhcHNpYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcGFyZW50RWwgPSB0aGlzLmVsICYmIHRoaXMuZWwucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKHBhcmVudEVsICYmICFwYXJlbnRFbC5jbGFzc0xpc3QuY29udGFpbnMoXCJjb2xsYXBzaWJsZVwiKSkge1xuICAgICAgICAgICAgcGFyZW50RWwgPSBwYXJlbnRFbCAmJiBwYXJlbnRFbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJlbnRFbDtcbiAgICB9O1xuICAgIENvbGxhcHNUcmlnZ2VyLnByb3RvdHlwZS5leHBhbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB2YXIgY29sbGFwc2libGUgPSB0aGlzLmZpbmRDb2xsYXBzaWJsZS5iaW5kKHRoaXMpKCk7XG4gICAgICAgIGlmIChjb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgdmFyIGJvZHlFbCA9IGNvbGxhcHNpYmxlLnF1ZXJ5U2VsZWN0b3IoXCIuY29sbGFwc2libGUtYm9keVwiKTtcbiAgICAgICAgICAgIGlmIChib2R5RWwpIHtcbiAgICAgICAgICAgICAgICBib2R5RWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGlzT3BlbjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUuaXNPcGVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc09wZW47XG4gICAgfTtcbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgaWNvbiA9ICh0aGlzLnN0YXRlLmlzT3BlbiA9PSB0cnVlKSA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbl8xLkljb24sIHsgc3R5bGU6IHsgZmxvYXQ6IFwicmlnaHRcIiB9IH0sIFwiY2hldnJvbl9kb3duXCIpIDpcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbl8xLkljb24sIHsgc3R5bGU6IHsgZmxvYXQ6IFwicmlnaHRcIiB9IH0sIFwiY2hldnJvbl9yaWdodFwiKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IHJlZjogZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIF90aGlzLmVsID0gcmVmO1xuICAgICAgICAgICAgfSwgY2xhc3NOYW1lOiBcImNvbGxhcHNpYmxlLWhlYWRlciBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gX3RoaXMuc2hvd0hpZGVCb2R5LmJpbmQoX3RoaXMpKGUpOyB9IH0pLFxuICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW4pKTtcbiAgICB9O1xuICAgIHJldHVybiBDb2xsYXBzVHJpZ2dlcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkNvbGxhcHNUcmlnZ2VyID0gQ29sbGFwc1RyaWdnZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db2xsZWN0aW9uSXRlbSA9IGV4cG9ydHMuQ29sbGVjdGlvbiA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBDb2xsZWN0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb2xsZWN0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbGxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQ29sbGVjdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5jbGFzc05hbWU7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgcmVmOiBmdW5jdGlvbiAocikgeyByZXR1cm4gX3RoaXMuZWwgPSByOyB9LCBjbGFzc05hbWU6IFwiY29sbGVjdGlvbiBcIiArIChjbGFzc05hbWUgfHwgXCJcIikgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIENvbGxlY3Rpb247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Db2xsZWN0aW9uID0gQ29sbGVjdGlvbjtcbnZhciBDb2xsZWN0aW9uSXRlbSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29sbGVjdGlvbkl0ZW0sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ29sbGVjdGlvbkl0ZW0oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQ29sbGVjdGlvbkl0ZW0ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMucHJvcHMuY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IHJlZjogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIF90aGlzLmVsID0gcjsgfSwgY2xhc3NOYW1lOiBcImNvbGxlY3Rpb24taXRlbSBcIiArIChjbGFzc05hbWUgfHwgXCJcIikgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIENvbGxlY3Rpb25JdGVtO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuQ29sbGVjdGlvbkl0ZW0gPSBDb2xsZWN0aW9uSXRlbTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZpZWxkID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuLy8gQHRzLWlnbm9yZVxudmFyIFYgPSByZXF1aXJlKFwiLi9yZXhcIik7XG52YXIgRmllbGQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEZpZWxkLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEZpZWxkKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGxhYmVsQ2xhc3NOYW1lOiAnJyxcbiAgICAgICAgICAgIGZvY3VzQ291bnQ6IDAsXG4gICAgICAgICAgICBlcnJtc2c6IFwiXCJcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuaWQgPSBfdGhpcy51dWlkdjQoKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBGaWVsZC5wcm90b3R5cGUuZ2V0RGVmYXVsdHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICBpZDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhbGlkYXRlJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVGV4dCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICBpY29uOiAnYWNjb3VudF9jaXJjbGUnXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsICYmIHRoaXMuZWwudmFsdWU7XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUuc2V0VmFsdWUgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgIGlmICh0aGlzLmVsKSB7XG4gICAgICAgICAgICB0aGlzLmVsLnZhbHVlID0gdmFsO1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLmlzVmFsaWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHRydWUpO1xuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLm9uQmx1ciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMubGFiZWwgJiYgKCh0aGlzLnByb3BzLnBsYWNlaG9sZGVyICE9PSAnJykgfHwgKHRoaXMuZWwgJiYgdGhpcy5lbC52YWx1ZSAhPT0gXCJcIikpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubGFiZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYWN0aXZlXCIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIgJiYgdHlwZW9mIHRoaXMucHJvcHMub25CbHVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25CbHVyKGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsaWRhdGUodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBmb2N1c0NvdW50OiB0aGlzLnN0YXRlLmZvY3VzQ291bnQgKyAxIH0pO1xuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLm9uRm9jdXMgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAodGhpcy5sYWJlbCAmJiAhdGhpcy5sYWJlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJhY3RpdmVcIikpIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWwuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25Gb2N1cyAmJiB0eXBlb2YgdGhpcy5wcm9wcy5vbkZvY3VzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25Gb2N1cyhlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gKGJsdXJlKSB7XG4gICAgICAgIGlmIChibHVyZSA9PT0gdm9pZCAwKSB7IGJsdXJlID0gZmFsc2U7IH1cbiAgICAgICAgaWYgKGJsdXJlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9jdXNDb3VudDogdGhpcy5zdGF0ZS5mb2N1c0NvdW50ICsgMSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5mb2N1c0NvdW50ID4gMCB8fCBibHVyZSkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgbWluID0gX2EubWluLCBtYXggPSBfYS5tYXgsIHJlcXVpcmVkID0gX2EucmVxdWlyZWQsIHZ0eXBlID0gX2EudnR5cGUsIHZ0eXBlTXNnID0gX2EudnR5cGVNc2c7XG4gICAgICAgICAgICBpZiAodGhpcy5lbCAmJiB0aGlzLmVsLnZhbHVlICYmIHRoaXMuZWwudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxlbmd0aF8xID0gdGhpcy5lbC52YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiAmJiBtYXggJiYgKGxlbmd0aF8xIDwgbWluIHx8IGxlbmd0aF8xID4gbWF4KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJybXNnOiBtaW4gIT0gbWF4ID8gXCJkb2l0IGF2b2lyIHVuZSBsb25nZXVyIGNvbXByaXNlIGVudHJlIFwiLmNvbmNhdChtaW4sIFwiIGV0IFwiKS5jb25jYXQobWF4LCBcIi5cIikgOiBcImRvaXQgYXZvaXIgdW5lIGxvbmdldXIgZGUgXCIuY29uY2F0KG1pbiwgXCIgY2FyYWN0XFx1MDBFOHJlc1wiKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5hZGQoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFtaW4gJiYgbWF4ICYmIGxlbmd0aF8xID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJtc2c6IFwiZG9pdCBhdm9pciB1bmUgbG9uZ2V1ciBtYXhpbWFsIGRlIFwiLmNvbmNhdChtYXgsIFwiLlwiKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5hZGQoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1pbiAmJiAhbWF4ICYmIGxlbmd0aF8xIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJtc2c6IFwiZG9pdCBhdm9pciB1bmUgbG9uZ2V1ciBtaW5pbWFsIGRlIFwiLmNvbmNhdChtaW4sIFwiLlwiKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5hZGQoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZ0eXBlICYmICFWW3Z0eXBlXS50ZXN0KHRoaXMuZWwudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJtc2c6IHZ0eXBlTXNnIHx8IFwiRG9pdCBcXHUwMEVBdHJlIHVuIFwiLmNvbmNhdCh2dHlwZSwgXCIgdmFsaWRlLlwiKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5hZGQoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJybXNnOiBcIlwiIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QuYWRkKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm1zZzogXCJOZSBwZXUgcGFzIGV0cmUgdmlkZS5cIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJybXNnOiBcIlwiIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ha2VWYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZWwuY2xhc3NMaXN0LmFkZCgndmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEZpZWxkLnByb3RvdHlwZS5tYWtlSW5WYWxpZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZWwpIHtcbiAgICAgICAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LnJlbW92ZSgndmFsaWQnKTtcbiAgICAgICAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LmFkZCgnaW52YWxpZCcpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUubWFrZVZhbGlkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5lbCkge1xuICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QuYWRkKCd2YWxpZCcpO1xuICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCdpbnZhbGlkJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZpZWxkLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWwgJiYgKCh0aGlzLnByb3BzLnBsYWNlaG9sZGVyICE9PSAnJykgfHwgKHRoaXMuZWwgJiYgdGhpcy5lbC52YWx1ZSAhPT0gXCJcIikpKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgbGFiZWxDbGFzc05hbWU6ICdhY3RpdmUnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLm9uS2V5VXAgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZSAmJiBcIkVudGVyXCIgPT09IGUua2V5ICYmIHRoaXMucHJvcHMub25FbnRlcktleSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25FbnRlcktleShlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUudXVpZHY0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiAoWzFlN10gKyAtMWUzICsgLTRlMyArIC04ZTMgKyAtMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICAgIHJldHVybiAoYyBeIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMSkpWzBdICYgMTUgPj4gYyAvIDQpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUuZ2V0RXJyb3JWaWV3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5lcnJtc2cgIT0gbnVsbCAmJiB0aGlzLnN0YXRlLmVycm1zZyAhPT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVscGVyLXRleHRcIiB9LCB0aGlzLnN0YXRlLmVycm1zZyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZpZWxkLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fYXNzaWduKHt9LCB0aGlzLnByb3BzKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkZWxldGUgcHJvcHMudnR5cGVNc2c7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZGVsZXRlIHByb3BzLm9uRW50ZXJLZXk7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImlucHV0LWZpZWxkXCIgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCB7IHJlZjogZnVuY3Rpb24gKHJlZikgeyByZXR1cm4gKF90aGlzLmxhYmVsID0gcmVmKTsgfSwgaHRtbEZvcjogdGhpcy5pZCwgY2xhc3NOYW1lOiB0aGlzLnN0YXRlLmxhYmVsQ2xhc3NOYW1lIH0sIHRoaXMucHJvcHMubGFiZWwgKyAodGhpcy5wcm9wcy5yZXF1aXJlZCA9PT0gdHJ1ZSA/ICcgKicgOiAnJykpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIF9fYXNzaWduKHt9LCBwcm9wcywgeyByZWY6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZWwgPSByZWY7XG4gICAgICAgICAgICAgICAgfSwgdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgJycsIG9uQ2hhbmdlOiB0aGlzLnByb3BzLm9uQ2hhbmdlIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgfSksIG9uRm9jdXM6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBfdGhpcy5vbkZvY3VzLmJpbmQoX3RoaXMpKGUpOyB9LCB0eXBlOiB0aGlzLnByb3BzLnR5cGUgfHwgXCJ0ZXh0XCIsIG9uQmx1cjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF90aGlzLm9uQmx1ci5iaW5kKF90aGlzKShlKTsgfSwgb25LZXlVcDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF90aGlzLm9uS2V5VXAuYmluZChfdGhpcykoZSk7IH0sIGlkOiB0aGlzLmlkLCBjbGFzc05hbWU6IFwidmFsaWRhdGUgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSB9KSksXG4gICAgICAgICAgICB0aGlzLmdldEVycm9yVmlldygpKTtcbiAgICB9O1xuICAgIHJldHVybiBGaWVsZDtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkZpZWxkID0gRmllbGQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UZXh0YXJlYSA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBQcm9wVHlwZXMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTtcbnZhciBhdXRvc2l6ZSA9IHJlcXVpcmUoXCJhdXRvc2l6ZVwiKTtcbnZhciBsaW5lX2hlaWdodF8xID0gcmVxdWlyZShcIi4vbGluZS1oZWlnaHRcIik7XG52YXIgZ2V0TGluZUhlaWdodCA9IGxpbmVfaGVpZ2h0XzEuZGVmYXVsdDtcbnZhciBUZXh0YXJlYSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGV4dGFyZWEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVGV4dGFyZWEoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50ZXh0YXJlYSA9IG51bGw7XG4gICAgICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgbGluZUhlaWdodDogbnVsbFxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5vblJlc2l6ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMub25SZXNpemUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vblJlc2l6ZShlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMub25DaGFuZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIG9uQ2hhbmdlID0gX3RoaXMucHJvcHMub25DaGFuZ2U7XG4gICAgICAgICAgICBfdGhpcy5jdXJyZW50VmFsdWUgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWU7XG4gICAgICAgICAgICBvbkNoYW5nZSAmJiBvbkNoYW5nZShlKTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMudXBkYXRlTGluZUhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChfdGhpcy50ZXh0YXJlYSkge1xuICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogZ2V0TGluZUhlaWdodChfdGhpcy50ZXh0YXJlYSlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBUZXh0YXJlYS5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRleHRhcmVhICYmIGF1dG9zaXplLnVwZGF0ZSh0aGlzLnRleHRhcmVhKTtcbiAgICB9O1xuICAgIFRleHRhcmVhLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgbWF4Um93cyA9IF9hLm1heFJvd3MsIGFzeW5jID0gX2EuYXN5bmM7XG4gICAgICAgIGlmICh0eXBlb2YgbWF4Um93cyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMaW5lSGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtYXhSb3dzID09PSBcIm51bWJlclwiIHx8IGFzeW5jKSB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICB0aGUgZGVmZXIgaXMgbmVlZGVkIHRvOlxuICAgICAgICAgICAgICAgIC0gZm9yY2UgXCJhdXRvc2l6ZVwiIHRvIGFjdGl2YXRlIHRoZSBzY3JvbGxiYXIgd2hlbiB0aGlzLnByb3BzLm1heFJvd3MgaXMgcGFzc2VkXG4gICAgICAgICAgICAgICAgLSBzdXBwb3J0IFN0eWxlZENvbXBvbmVudHMgKHNlZSAjNzEpXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnRleHRhcmVhICYmIGF1dG9zaXplKF90aGlzLnRleHRhcmVhKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLnRleHRhcmVhICYmIGF1dG9zaXplKHRoaXMudGV4dGFyZWEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRhcmVhLmFkZEV2ZW50TGlzdGVuZXIoXCJhdXRvc2l6ZTpyZXNpemVkXCIsIHRoaXMub25SZXNpemUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBUZXh0YXJlYS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRhcmVhLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhdXRvc2l6ZTpyZXNpemVkXCIsIHRoaXMub25SZXNpemUpO1xuICAgICAgICAgICAgYXV0b3NpemUuZGVzdHJveSh0aGlzLnRleHRhcmVhKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgVGV4dGFyZWEucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5wcm9wcywgb25SZXNpemUgPSBfYi5vblJlc2l6ZSwgbWF4Um93cyA9IF9iLm1heFJvd3MsIG9uQ2hhbmdlID0gX2Iub25DaGFuZ2UsIHN0eWxlID0gX2Iuc3R5bGUsIGNoaWxkcmVuID0gX2IuY2hpbGRyZW4sIHByb3BzID0gX19yZXN0KF9iLCBbXCJvblJlc2l6ZVwiLCBcIm1heFJvd3NcIiwgXCJvbkNoYW5nZVwiLCBcInN0eWxlXCIsIFwiY2hpbGRyZW5cIl0pLCBsaW5lSGVpZ2h0ID0gX2Euc3RhdGUubGluZUhlaWdodDtcbiAgICAgICAgdmFyIG1heEhlaWdodCA9IG1heFJvd3MgJiYgbGluZUhlaWdodCA/IGxpbmVIZWlnaHQgKiBtYXhSb3dzIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIiwgX19hc3NpZ24oe30sIHByb3BzLCB7IG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLCBjbGFzc05hbWU6IFwidGV4dGFyZWEgXCIgKyAodGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIiksIHN0eWxlOiBtYXhIZWlnaHQgPyBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGUpLCB7IG1heEhlaWdodDogbWF4SGVpZ2h0IH0pIDogc3R5bGUsIHJlZjogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy50ZXh0YXJlYSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICB9IH0pLCBjaGlsZHJlbikpO1xuICAgIH07XG4gICAgVGV4dGFyZWEuZGVmYXVsdFByb3BzID0ge1xuICAgICAgICByb3dzOiAxLFxuICAgICAgICBhc3luYzogZmFsc2VcbiAgICB9O1xuICAgIFRleHRhcmVhLnByb3BUeXBlcyA9IHtcbiAgICAgICAgcm93czogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgbWF4Um93czogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgb25SZXNpemU6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICBhc3luYzogUHJvcFR5cGVzLmJvb2xcbiAgICB9O1xuICAgIHJldHVybiBUZXh0YXJlYTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLlRleHRhcmVhID0gVGV4dGFyZWE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIExvYWQgaW4gZGVwZW5kZW5jaWVzXG52YXIgY29tcHV0ZWRTdHlsZSA9IHJlcXVpcmUoJ2NvbXB1dGVkLXN0eWxlJyk7XG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgYGxpbmUtaGVpZ2h0YCBvZiBhIGdpdmVuIG5vZGVcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGUgRWxlbWVudCB0byBjYWxjdWxhdGUgbGluZSBoZWlnaHQgb2YuIE11c3QgYmUgaW4gdGhlIERPTS5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGBsaW5lLWhlaWdodGAgb2YgdGhlIGVsZW1lbnQgaW4gcGl4ZWxzXG4gKi9cbmZ1bmN0aW9uIGxpbmVIZWlnaHQobm9kZSkge1xuICAgIC8vIEdyYWIgdGhlIGxpbmUtaGVpZ2h0IHZpYSBzdHlsZVxuICAgIHZhciBsbkhlaWdodFN0ciA9IGNvbXB1dGVkU3R5bGUobm9kZSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgdmFyIGxuSGVpZ2h0ID0gcGFyc2VGbG9hdChsbkhlaWdodFN0cik7XG4gICAgLy8gSWYgdGhlIGxpbmVIZWlnaHQgZGlkIG5vdCBjb250YWluIGEgdW5pdCAoaS5lLiBpdCB3YXMgbnVtZXJpYyksIGNvbnZlcnQgaXQgdG8gZW1zIChlLmcuICcyLjMnID09PSAnMi4zZW0nKVxuICAgIGlmIChsbkhlaWdodFN0ciA9PT0gbG5IZWlnaHQgKyAnJykge1xuICAgICAgICAvLyBTYXZlIHRoZSBvbGQgbGluZUhlaWdodCBzdHlsZSBhbmQgdXBkYXRlIHRoZSBlbSB1bml0IHRvIHRoZSBlbGVtZW50XG4gICAgICAgIHZhciBfbG5IZWlnaHRTdHlsZSA9IG5vZGUuc3R5bGUubGluZUhlaWdodDtcbiAgICAgICAgbm9kZS5zdHlsZS5saW5lSGVpZ2h0ID0gbG5IZWlnaHRTdHIgKyAnZW0nO1xuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGVtIGJhc2VkIGhlaWdodFxuICAgICAgICBsbkhlaWdodFN0ciA9IGNvbXB1dGVkU3R5bGUobm9kZSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgICAgIGxuSGVpZ2h0ID0gcGFyc2VGbG9hdChsbkhlaWdodFN0cik7XG4gICAgICAgIC8vIFJldmVydCB0aGUgbGluZUhlaWdodCBzdHlsZVxuICAgICAgICBpZiAoX2xuSGVpZ2h0U3R5bGUpIHtcbiAgICAgICAgICAgIG5vZGUuc3R5bGUubGluZUhlaWdodCA9IF9sbkhlaWdodFN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9kZWxldGUgbm9kZS5zdHlsZS5saW5lSGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIElmIHRoZSBsaW5lSGVpZ2h0IGlzIGluIGBwdGAsIGNvbnZlcnQgaXQgdG8gcGl4ZWxzICg0cHggZm9yIDNwdClcbiAgICAvLyBERVY6IGBlbWAgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBgcHRgIGluIElFNlxuICAgIC8vIENvbnZlcnNpb24gcmF0aW8gZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGVuZ3RoXG4gICAgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ3B0JykgIT09IC0xKSB7XG4gICAgICAgIGxuSGVpZ2h0ICo9IDQ7XG4gICAgICAgIGxuSGVpZ2h0IC89IDM7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYG1tYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDI1LjRtbSlcbiAgICB9XG4gICAgZWxzZSBpZiAobG5IZWlnaHRTdHIuaW5kZXhPZignbW0nKSAhPT0gLTEpIHtcbiAgICAgICAgbG5IZWlnaHQgKj0gOTY7XG4gICAgICAgIGxuSGVpZ2h0IC89IDI1LjQ7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYGNtYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDIuNTRjbSlcbiAgICB9XG4gICAgZWxzZSBpZiAobG5IZWlnaHRTdHIuaW5kZXhPZignY20nKSAhPT0gLTEpIHtcbiAgICAgICAgbG5IZWlnaHQgKj0gOTY7XG4gICAgICAgIGxuSGVpZ2h0IC89IDIuNTQ7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYGluYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDFpbilcbiAgICB9XG4gICAgZWxzZSBpZiAobG5IZWlnaHRTdHIuaW5kZXhPZignaW4nKSAhPT0gLTEpIHtcbiAgICAgICAgbG5IZWlnaHQgKj0gOTY7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYHBjYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDEycHQgZm9yIDFwYylcbiAgICB9XG4gICAgZWxzZSBpZiAobG5IZWlnaHRTdHIuaW5kZXhPZigncGMnKSAhPT0gLTEpIHtcbiAgICAgICAgbG5IZWlnaHQgKj0gMTY7XG4gICAgfVxuICAgIC8vIENvbnRpbnVlIG91ciBjb21wdXRhdGlvblxuICAgIGxuSGVpZ2h0ID0gTWF0aC5yb3VuZChsbkhlaWdodCk7XG4gICAgLy8gSWYgdGhlIGxpbmUtaGVpZ2h0IGlzIFwibm9ybWFsXCIsIGNhbGN1bGF0ZSBieSBmb250LXNpemVcbiAgICBpZiAobG5IZWlnaHRTdHIgPT09ICdub3JtYWwnKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBub2RlXG4gICAgICAgIHZhciBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWU7XG4gICAgICAgIHZhciBfbm9kZSA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobm9kZU5hbWUpO1xuICAgICAgICBfbm9kZS5pbm5lckhUTUwgPSAnJm5ic3A7JztcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRleHQgYXJlYSwgcmVzZXQgaXQgdG8gb25seSAxIHJvd1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdvbGZzb24vbGluZS1oZWlnaHQvaXNzdWVzLzRcbiAgICAgICAgaWYgKG5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICAgIF9ub2RlLnNldEF0dHJpYnV0ZSgncm93cycsICcxJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IHRoZSBmb250LXNpemUgb2YgdGhlIGVsZW1lbnRcbiAgICAgICAgdmFyIGZvbnRTaXplU3RyID0gY29tcHV0ZWRTdHlsZShub2RlLCAnZm9udC1zaXplJyk7XG4gICAgICAgIF9ub2RlLnN0eWxlLmZvbnRTaXplID0gZm9udFNpemVTdHI7XG4gICAgICAgIC8vIFJlbW92ZSBkZWZhdWx0IHBhZGRpbmcvYm9yZGVyIHdoaWNoIGNhbiBhZmZlY3Qgb2Zmc2V0IGhlaWdodFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdvbGZzb24vbGluZS1oZWlnaHQvaXNzdWVzLzRcbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxFbGVtZW50L29mZnNldEhlaWdodFxuICAgICAgICBfbm9kZS5zdHlsZS5wYWRkaW5nID0gJzBweCc7XG4gICAgICAgIF9ub2RlLnN0eWxlLmJvcmRlciA9ICcwcHgnO1xuICAgICAgICAvLyBBcHBlbmQgaXQgdG8gdGhlIGJvZHlcbiAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICBib2R5LmFwcGVuZENoaWxkKF9ub2RlKTtcbiAgICAgICAgLy8gQXNzdW1lIHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgZWxlbWVudCBpcyB0aGUgaGVpZ2h0XG4gICAgICAgIHZhciBoZWlnaHQgPSBfbm9kZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxuSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAvLyBSZW1vdmUgb3VyIGNoaWxkIGZyb20gdGhlIERPTVxuICAgICAgICBib2R5LnJlbW92ZUNoaWxkKF9ub2RlKTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRoZSBjYWxjdWxhdGVkIGhlaWdodFxuICAgIHJldHVybiBsbkhlaWdodDtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGxpbmVIZWlnaHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIFwibnVtXCI6IC9eWzAtOV0rJC8sXG4gICAgXCJudW1lcmljXCI6IC9eWzAtOV0rJC8sXG4gICAgXCJhbHBoYVwiOiAvXlthLXpBLVpfXSskLyxcbiAgICBcImFscGhhYmV0aWNcIjogL15bYS16QS1aX10rJC8sXG4gICAgXCJhbHBoYW51bVwiOiAvXlthLXpBLVowLTlfXSskLyxcbiAgICBcImFscGhhbnVtZXJpY1wiOiAvXlthLXpBLVowLTlfXSskLyxcbiAgICBcImVtYWlsXCI6IC9eKFwiKT8oPzpbXlxcLlwiXFxzXSkoPzooPzpbXFwuXSk/KD86W1xcd1xcLSEjJCUmJyorLz0/Xl9ge3x9fl0pKSpcXDFAKFxcd1tcXC1cXHddKlxcLil7MSw1fShbQS1aYS16XSl7Miw2fSQvLFxuICAgIFwidXJsXCI6IC8oKCheaHR0cHM/KXwoXmZ0cCkpOlxcL1xcLygoKFtcXC1cXHddK1xcLikrXFx3ezIsM30oXFwvWyVcXC1cXHddKyhcXC5cXHd7Mix9KT8pKigoW1xcd1xcLVxcLlxcP1xcXFxcXC8rQCYjO2B+PSUhXSopKFxcLlxcd3syLH0pPykqKXwobG9jYWxob3N0fExPQ0FMSE9TVCkpXFwvPykvaSxcbiAgICBcImlwQWRkcmVzc1wiOiAvXlxcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfVxcLlxcZHsxLDN9JC8sXG4gICAgXCJwaG9uZVwiOiAvXig/Oig/OlxcK3wwMCkzM3wwKVxccypbMS05XSg/OlxcZHsyfSl7NH0kLyxcbiAgICBcImNvZGVQb3N0XCI6IC9eKCgoPyEoOTZ8OTd8OTh8OTl8MDApKSlbMC05XXs1fSkkfCgyQXwyQnwyYXwyYilbMC05XXszfSR8KDk3MXw5NzJ8OTczfDk3NHw5NzV8OTc2KVswLTldezJ9JC8sXG4gICAgXCJjb2RlUG9zdGFsXCI6IC9eKCgoPyEoOTZ8OTd8OTh8OTl8MDApKSlbMC05XXs1fSkkfCgyQXwyQnwyYXwyYilbMC05XXszfSR8KDk3MXw5NzJ8OTczfDk3NHw5NzV8OTc2KVswLTldezJ9JC8sXG4gICAgXCJ0aW1lXCI6IC9eKFsxLTldfDFbMC05XSk6KFswLTVdWzAtOV0pKFxcc1thfHBdbSkkLyxcbiAgICBcInByaWNlXCI6IC9eXFxkKyhcXC5cXGR7Mn0pPyQvLFxuICAgIFwicHJpeFwiOiAvXlxcZCsoXFwuXFxkezJ9KT8kLyxcbiAgICBcImRhdGVcIjogL14oMD9bMS05XXxbMTJdWzAtOV18M1swMV0pW1xcL1xcLV0oMD9bMS05XXwxWzAxMl0pW1xcL1xcLV1cXGR7NH0kLyxcbiAgICBcInR2YVwiOiAvXig1XFwuNXwxMHwyMCkkLyxcbiAgICBcInBhc3N3b3JkXCI6IC8oPz1eLns4LH0kKSg/PS4qXFxkKSg/PS4qWyFAIyQlXiYqXSspKD8hWy5cXG5dKSg/PS4qW0EtWl0pKD89LipbYS16XSkuKiQvLFxuICAgIFwibW90RGVQYXNzZVwiOiAvKD89Xi57OCx9JCkoPz0uKlxcZCkoPz0uKlshQCMkJV4mKl0rKSg/IVsuXFxuXSkoPz0uKltBLVpdKSg/PS4qW2Etel0pLiokLyxcbiAgICBcIm1hdHJpY3VsZVwiOiAvKF5cXGR7MSw0fVtBLVphLXpdezEsNH1cXGR7MSwyfSQpfCheW0EtWmEtel17MSwyfVxccypcXGR7MSwzfVxccypbQS1aYS16XXsxLDJ9KSQvLFxuICAgIFwidHZhSW50ZXJjb21cIjogL14oRlIpKFswLTldezExfSQpLyxcbiAgICBcImliYW5cIjogL15GUlxcZHsxMn1bQS1aMC05XXsxMX1cXGR7Mn0kLyxcbiAgICBcInRpbWVNYXNrXCI6IC9bXFxkXFxzOmFtcF0vaSxcbiAgICAnbnVtTWFzayc6IC9bMC05XS9pLFxuICAgICdhbHBoYU1hc2snOiAvW2Etel9dL2ksXG4gICAgJ2FscGhhbnVtTWFzayc6IC9bYS16MC05X10vaSxcbiAgICAnZW1haWxNYXNrJzogL1tcXHcuXFwtQCdcIiEjJCUmJyorLz0/Xl9ge3x9fl0vaSxcbiAgICAndXJsTWFzayc6IC9bYS16MC05X10vaSxcbiAgICAnaXBBZGRyZXNzTWFzayc6IC9bXFxkXFwuXS9pLFxuICAgIFwicGhvbmVNYXNrXCI6IC9bMC05XFwrXS9pLFxuICAgIFwiY29kZVBvc3RNYXNrXCI6IC9bMC05QUJhYl0vaSxcbiAgICAncGFzc3dvcmRNYXNrJzogL1tcXHcuXFwtQCdcIiEjJCUmJyorLz0/Xl9ge3x9fl0vaSxcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5JY29uID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIEljb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEljb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSWNvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBJY29uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwicy1pY29uIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIEljb247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5JY29uID0gSWNvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk92ZXJsYXkgPSBleHBvcnRzLkRpdmlkZXIgPSBleHBvcnRzLlBhcmFsbGF4ID0gZXhwb3J0cy5Sb3cgPSBleHBvcnRzLkNvbCA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBDb2wgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDb2woKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5lbCA9IG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQ29sLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyByZWY6IGZ1bmN0aW9uIChyZWYpIHsgcmV0dXJuIF90aGlzLmVsID0gcmVmOyB9LCBjbGFzc05hbWU6IFwiY29sIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDb2w7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Db2wgPSBDb2w7XG52YXIgUm93ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhSb3csIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUm93KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZWwgPSBudWxsO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFJvdy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgcmVmOiBmdW5jdGlvbiAocmVmKSB7IHJldHVybiBfdGhpcy5lbCA9IHJlZjsgfSwgY2xhc3NOYW1lOiBcInJvdyBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lIH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gUm93O1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuUm93ID0gUm93O1xudmFyIFBhcmFsbGF4ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQYXJhbGxheCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQYXJhbGxheCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQYXJhbGxheC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3QgPSBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcy5zdHlsZSk7XG4gICAgICAgIHN0LmJhY2tncm91bmRJbWFnZSA9IFwidXJsKFwiICsgdGhpcy5wcm9wcy5zcmMgKyBcIilcIjtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwicGFyYWxsYXhcIiwgc3R5bGU6IHN0IH0sIHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICAgIH07XG4gICAgcmV0dXJuIFBhcmFsbGF4O1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuUGFyYWxsYXggPSBQYXJhbGxheDtcbnZhciBEaXZpZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEaXZpZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIERpdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgRGl2aWRlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZGl2aWRlclwiIH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBEaXZpZGVyO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuRGl2aWRlciA9IERpdmlkZXI7XG52YXIgT3ZlcmxheSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoT3ZlcmxheSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPdmVybGF5KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5lbCA9IG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT3ZlcmxheS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT3ZlcmxheS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvdygpO1xuICAgIH07XG4gICAgT3ZlcmxheS5wcm90b3R5cGUuaXNWaXNpYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS52aXNpYmxlO1xuICAgIH07XG4gICAgT3ZlcmxheS5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE92ZXJsYXkucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlKCk7XG4gICAgfTtcbiAgICBPdmVybGF5LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnZpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7IHJlZjogZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5lbCA9IHJlZjtcbiAgICAgICAgICAgICAgICB9IH0sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiBcIm1vZGFsLW92ZXJsYXkgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIE92ZXJsYXk7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5PdmVybGF5ID0gT3ZlcmxheTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk1vZGFsSGVhZGVyID0gZXhwb3J0cy5Nb2RhbEZvb3RlciA9IGV4cG9ydHMuTW9kYWxDb250ZW50ID0gZXhwb3J0cy5Nb2RhbCA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBNb2RhbCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTW9kYWwsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTW9kYWwoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGlzT3BlbjogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBNb2RhbC5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBpc09wZW46IHRydWVcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBNb2RhbC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaXNPcGVuOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE1vZGFsLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuKCk7XG4gICAgfTtcbiAgICBNb2RhbC5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvc2UoKTtcbiAgICB9O1xuICAgIE1vZGFsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcIm1vZGFsLW92ZXJsYXlcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiBcIm1vZGFsIFwiICsgKHRoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCIpIH0pKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIE1vZGFsO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuTW9kYWwgPSBNb2RhbDtcbnZhciBNb2RhbENvbnRlbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1vZGFsQ29udGVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNb2RhbENvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgTW9kYWxDb250ZW50LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwibW9kYWwtY29udGVudCBcIiArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSB9KSkpO1xuICAgIH07XG4gICAgcmV0dXJuIE1vZGFsQ29udGVudDtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk1vZGFsQ29udGVudCA9IE1vZGFsQ29udGVudDtcbnZhciBNb2RhbEZvb3RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTW9kYWxGb290ZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTW9kYWxGb290ZXIoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgTW9kYWxGb290ZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNsYXNzTmFtZTogXCJtb2RhbC1mb290ZXIgXCIgKyAodGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIikgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBNb2RhbEZvb3Rlcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk1vZGFsRm9vdGVyID0gTW9kYWxGb290ZXI7XG52YXIgTW9kYWxIZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1vZGFsSGVhZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1vZGFsSGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIE1vZGFsSGVhZGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwibW9kYWwtaGVhZGVyIFwiICsgKHRoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCIpIH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gTW9kYWxIZWFkZXI7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Nb2RhbEhlYWRlciA9IE1vZGFsSGVhZGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTmF2QmFyQnJhbmQgPSBleHBvcnRzLk5hdkJhckl0ZW0gPSBleHBvcnRzLk5hdkJhckdyb3VwID0gZXhwb3J0cy5OYXZCYXIgPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgTmF2QmFyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhOYXZCYXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTmF2QmFyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIE5hdkJhci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcIm5hdlwiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwibmF2LXdyYXBwZXJcIiB9KSkpO1xuICAgIH07XG4gICAgcmV0dXJuIE5hdkJhcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk5hdkJhciA9IE5hdkJhcjtcbnZhciBOYXZCYXJHcm91cCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTmF2QmFyR3JvdXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTmF2QmFyR3JvdXAoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgTmF2QmFyR3JvdXAucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwicmlnaHQgaGlkZS1vbi1tZWQtYW5kLWRvd24gwrdcIiArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSB9KSk7XG4gICAgfTtcbiAgICByZXR1cm4gTmF2QmFyR3JvdXA7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5OYXZCYXJHcm91cCA9IE5hdkJhckdyb3VwO1xudmFyIE5hdkJhckl0ZW0gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE5hdkJhckl0ZW0sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTmF2QmFySXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBOYXZCYXJJdGVtLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMpKTtcbiAgICB9O1xuICAgIHJldHVybiBOYXZCYXJJdGVtO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuTmF2QmFySXRlbSA9IE5hdkJhckl0ZW07XG52YXIgTmF2QmFyQnJhbmQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE5hdkJhckJyYW5kLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE5hdkJhckJyYW5kKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIE5hdkJhckJyYW5kLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBGcmFnbWVudCA9IHRoaXMucHJvcHMuZnJhZ21lbnQ7XG4gICAgICAgIHJldHVybiBGcmFnbWVudCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KEZyYWdtZW50LCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwiYnJhbmQtbG9nb1wiIH0pKSB8fCBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwiYnJhbmQtbG9nb1wiIH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBOYXZCYXJCcmFuZDtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk5hdkJhckJyYW5kID0gTmF2QmFyQnJhbmQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk5hdmlnYXRpb24gPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgTmF2QmFyXzEgPSByZXF1aXJlKFwiLi9OYXZCYXJcIik7XG52YXIgU2lkZU5hdl8xID0gcmVxdWlyZShcIi4vU2lkZU5hdlwiKTtcbnZhciBOYXZpZ2F0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhOYXZpZ2F0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE5hdmlnYXRpb24ocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBOYXZpZ2F0aW9uLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5uYXZiYXIpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnNpZGVuYXYpO1xuICAgIH07XG4gICAgTmF2aWdhdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmF2QmFyXzEuTmF2QmFyLCB7IHJlZjogZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5uYXZiYXIgPSByZWY7XG4gICAgICAgICAgICAgICAgfSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHsgY2xhc3NOYW1lOiBcInNpZGVuYXYtdHJpZ2dlclwiLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNpZGVuYXYgJiYgX3RoaXMuc2lkZW5hdi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgc3R5bGU6IHsgd2lkdGg6IFwiMjBweFwiIH0sIGZpbGw6IFwid2hpdGVcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLCBzdHJva2VXaWR0aDogXCIyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLCBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiLCBkOiBcIk00IDZoMTZNNCAxMmgxNk00IDE4aDE2XCIgfSkpKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE5hdkJhcl8xLk5hdkJhckJyYW5kLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgc3JjOiB0aGlzLnByb3BzLmxvZ28gfHwgXCJodHRwczovL3N0YXRpY3MuZDN2NHBwLmZyL2xvZ28ucG5nXCIsIGNsYXNzTmFtZTogXCJjaXJjbGVcIiwgYWx0OiBcIkJyYW5kXCIgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmF2QmFyXzEuTmF2QmFyR3JvdXAsIG51bGwsIHRoaXMucHJvcHMucm91dGVzICYmIHRoaXMucHJvcHMucm91dGVzLm1hcChmdW5jdGlvbiAocm91dGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmF2QmFyXzEuTmF2QmFySXRlbSwgeyBrZXk6IGkgfSwgcm91dGUuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2lkZU5hdl8xLlNpZGVOYXYsIHsgcmVmOiBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnNpZGVuYXYgPSByZWY7XG4gICAgICAgICAgICAgICAgfSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2lkZU5hdl8xLlNpZGVOYXZVc2VyLCB7IHVzZXJuYW1lOiAnYXlvdWIgaGFzc2FuaScsIGVtYWlsOiAnYXlvdWJAZDN2NHBwLmZyJywgc3JjOiBcImh0dHBzOi8vc3RhdGljcy5kM3Y0cHAuZnIvbG9nby5wbmdcIiwgYmdfc3JjOiBcImh0dHBzOi8vaW1ncy5zZWFyY2guYnJhdmUuY29tL3lYMHZnYW1zWUVic09VOVhseVBHVU04RGRtcXhYcEFLeXpCTTRzM3dvbEEvcnM6Zml0OjEyMDA6MTAzMDoxL2c6Y2UvYUhSMGNITTZMeTkzZDNjdS9ZWFpwWVhOcGJTNWpiMjB2L2QzQXRZMjl1ZEdWdWRDOTEvY0d4dllXUnpMMkYyYVdGei9hVzB0YVcxaFoyVXRiblZoL1oyVnpMbXB3WndcIiB9KSxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJvdXRlcyAmJiB0aGlzLnByb3BzLnJvdXRlcy5tYXAoZnVuY3Rpb24gKHJvdXRlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVOYXZfMS5TaWRlTmF2RWwsIHsgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMuc2lkZW5hdiAmJiBfdGhpcy5zaWRlbmF2LmhpZGUoKTsgfSwga2V5OiBpIH0sIHJvdXRlLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gTmF2aWdhdGlvbjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk5hdmlnYXRpb24gPSBOYXZpZ2F0aW9uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU2lkZU5hdkVsID0gZXhwb3J0cy5TaWRlTmF2VXNlciA9IGV4cG9ydHMuU2lkZU5hdiA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBTaWRlTmF2ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTaWRlTmF2LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNpZGVOYXYoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFNpZGVOYXYucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiB0cnVlIH0pO1xuICAgIH07XG4gICAgU2lkZU5hdi5wcm90b3R5cGUudG9nZ2xlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgb3BlbjogIXRoaXMuc3RhdGUub3BlbiB9KTtcbiAgICB9O1xuICAgIFNpZGVOYXYucHJvdG90eXBlLmhpZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIFNpZGVOYXYucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwic2lkZW5hdiBcIiArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSwgc3R5bGU6IHsgdHJhbnNmb3JtOiB0aGlzLnN0YXRlLm9wZW4gPyBcInRyYW5zbGF0ZVgoMClcIiA6IFwidHJhbnNsYXRlWCgtMTA1JSlcIiB9IH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBTaWRlTmF2O1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuU2lkZU5hdiA9IFNpZGVOYXY7XG52YXIgU2lkZU5hdlVzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFNpZGVOYXZVc2VyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNpZGVOYXZVc2VyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFNpZGVOYXZVc2VyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJ1c2VyLXZpZXdcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiYmFja2dyb3VuZFwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgeyBzcmM6IHRoaXMucHJvcHMuYmdfc3JjIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZVwiLCBzcmM6IHRoaXMucHJvcHMuc3JjIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJibGFjay10ZXh0IG5hbWVcIiB9LCB0aGlzLnByb3BzLnVzZXJuYW1lKSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwiYmxhY2stdGV4dCBlbWFpbFwiIH0sIHRoaXMucHJvcHMuZW1haWwpKSkpO1xuICAgIH07XG4gICAgcmV0dXJuIFNpZGVOYXZVc2VyO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuU2lkZU5hdlVzZXIgPSBTaWRlTmF2VXNlcjtcbnZhciBTaWRlTmF2RWwgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFNpZGVOYXZFbCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTaWRlTmF2RWwoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgU2lkZU5hdkVsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMpKTtcbiAgICB9O1xuICAgIHJldHVybiBTaWRlTmF2RWw7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5TaWRlTmF2RWwgPSBTaWRlTmF2RWw7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QcmVsb2FkZXIgPSBleHBvcnRzLlByb2dyZXNzID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIFByb2dyZXNzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQcm9ncmVzcywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQcm9ncmVzcygpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQcm9ncmVzcy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6ICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSArIFwiIHByb2dyZXNzXCIgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGlzLnByb3BzLnZhbHVlID8gXCJkZXRlcm1pbmF0ZVwiIDogXCJpbmRldGVybWluYXRlXCIsIHN0eWxlOiB7IHdpZHRoOiB0aGlzLnByb3BzLnZhbHVlICsgXCIlXCIgfSB9KSk7XG4gICAgfTtcbiAgICByZXR1cm4gUHJvZ3Jlc3M7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Qcm9ncmVzcyA9IFByb2dyZXNzO1xudmFyIFByZWxvYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUHJlbG9hZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFByZWxvYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQcmVsb2FkZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnByb3BzLnNpemUgPT0gXCJiaWdcIiA/IFwiYmlnXCIgOiB0aGlzLnByb3BzLnNpemUgPT0gXCJzbWFsbFwiID8gXCJzbWFsbFwiIDogXCJcIjtcbiAgICAgICAgdmFyIGNhID0gdGhpcy5wcm9wcy5jb2xvciA/IHRoaXMucHJvcHMuY29sb3Iuc3BsaXQoXCIsXCIpIDogWydibHVlJ107XG4gICAgICAgIGlmIChjYS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInByZWxvYWRlci13cmFwcGVyIFwiICsgcyArIFwiIGFjdGl2ZVwiIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJzcGlubmVyLWxheWVyIHNwaW5uZXItXCIgKyBjYVswXSArIFwiLW9ubHlcIiB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZS1jbGlwcGVyIHJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY2lyY2xlXCIgfSkpLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImdhcC1wYXRjaFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZVwiIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJjaXJjbGUtY2xpcHBlciBsZWZ0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY2lyY2xlXCIgfSkpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJwcmVsb2FkZXItd3JhcHBlciBcIiArIHMgKyBcIiBhY3RpdmVcIiB9LCBjYS5tYXAoZnVuY3Rpb24gKHNjb2xvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInNwaW5uZXItbGF5ZXIgc3Bpbm5lci1cIiArIHNjb2xvciB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZS1jbGlwcGVyIGxlZnRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJjaXJjbGVcIiB9KSksXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZ2FwLXBhdGNoXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY2lyY2xlXCIgfSkpLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZS1jbGlwcGVyIHJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY2lyY2xlXCIgfSkpKTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFByZWxvYWRlcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLlByZWxvYWRlciA9IFByZWxvYWRlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNyZWF0ZVRoZW1lID0gZXhwb3J0cy5kZWZhdWx0VGhlbWVzID0gZXhwb3J0cy5Mb2dpbiA9IGV4cG9ydHMuTW9kYWxIZWFkZXIgPSBleHBvcnRzLk1vZGFsRm9vdGVyID0gZXhwb3J0cy5Nb2RhbENvbnRlbnQgPSBleHBvcnRzLk1vZGFsID0gZXhwb3J0cy5QcmVsb2FkZXIgPSBleHBvcnRzLlByb2dyZXNzID0gZXhwb3J0cy5TaWRlTmF2VXNlciA9IGV4cG9ydHMuU2lkZU5hdkVsID0gZXhwb3J0cy5TaWRlTmF2ID0gZXhwb3J0cy5OYXZpZ2F0aW9uID0gZXhwb3J0cy5OYXZCYXJCcmFuZCA9IGV4cG9ydHMuTmF2QmFySXRlbSA9IGV4cG9ydHMuTmF2QmFyR3JvdXAgPSBleHBvcnRzLk5hdkJhciA9IGV4cG9ydHMuQ2FyZEFjdGlvbiA9IGV4cG9ydHMuQ2FyZFRpdGxlID0gZXhwb3J0cy5DYXJkQ29udGVudCA9IGV4cG9ydHMuQ2FyZCA9IGV4cG9ydHMuQ29sbGFwc0JvZHkgPSBleHBvcnRzLkNvbGxhcHNpYmxlID0gZXhwb3J0cy5Db2xsYXBzVHJpZ2dlciA9IGV4cG9ydHMuUGFyYWxsYXggPSBleHBvcnRzLkRpdmlkZXIgPSBleHBvcnRzLk92ZXJsYXkgPSBleHBvcnRzLkNvbCA9IGV4cG9ydHMuUm93ID0gZXhwb3J0cy5JY29uID0gZXhwb3J0cy5DaGlwID0gZXhwb3J0cy5CYWRnZSA9IGV4cG9ydHMuQnV0dG9uID0gZXhwb3J0cy5Db2xsZWN0aW9uSXRlbSA9IGV4cG9ydHMuQ29sbGVjdGlvbiA9IGV4cG9ydHMuRmllbGQgPSBleHBvcnRzLlRleHRhcmVhID0gdm9pZCAwO1xucmVxdWlyZShcIi4vc2Fzcy9kM3Y0cHAuc2Nzc1wiKTtcbnZhciBUZXh0YXJlYV8xID0gcmVxdWlyZShcIi4vY21wcy9mb3Jtcy9UZXh0YXJlYVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRleHRhcmVhXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBUZXh0YXJlYV8xLlRleHRhcmVhOyB9IH0pO1xudmFyIEZpZWxkXzEgPSByZXF1aXJlKFwiLi9jbXBzL2Zvcm1zL0ZpZWxkXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRmllbGRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEZpZWxkXzEuRmllbGQ7IH0gfSk7XG52YXIgQ29sbGVjdGlvbl8xID0gcmVxdWlyZShcIi4vY21wcy9jb2xsZWN0aW9ucy9Db2xsZWN0aW9uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29sbGVjdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ29sbGVjdGlvbl8xLkNvbGxlY3Rpb247IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb2xsZWN0aW9uSXRlbVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ29sbGVjdGlvbl8xLkNvbGxlY3Rpb25JdGVtOyB9IH0pO1xudmFyIEJ1dHRvbl8xID0gcmVxdWlyZShcIi4vY21wcy9idXR0b24vQnV0dG9uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQnV0dG9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBCdXR0b25fMS5CdXR0b247IH0gfSk7XG52YXIgQmFkZ2VfMSA9IHJlcXVpcmUoXCIuL2NtcHMvYmFkZ2UvQmFkZ2VcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCYWRnZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQmFkZ2VfMS5CYWRnZTsgfSB9KTtcbnZhciBDaGlwXzEgPSByZXF1aXJlKFwiLi9jbXBzL2NoaXAvQ2hpcFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNoaXBcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENoaXBfMS5DaGlwOyB9IH0pO1xudmFyIEljb25fMSA9IHJlcXVpcmUoXCIuL2NtcHMvaWNvbnMvSWNvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkljb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEljb25fMS5JY29uOyB9IH0pO1xudmFyIExheW91dHNfMSA9IHJlcXVpcmUoXCIuL2NtcHMvbGF5b3V0cy9MYXlvdXRzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUm93XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBMYXlvdXRzXzEuUm93OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29sXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBMYXlvdXRzXzEuQ29sOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiT3ZlcmxheVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTGF5b3V0c18xLk92ZXJsYXk7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEaXZpZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBMYXlvdXRzXzEuRGl2aWRlcjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhcmFsbGF4XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBMYXlvdXRzXzEuUGFyYWxsYXg7IH0gfSk7XG52YXIgQ29sbGFwc2libGVfMSA9IHJlcXVpcmUoXCIuL2NtcHMvY29sbGFwc2libGUvQ29sbGFwc2libGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb2xsYXBzVHJpZ2dlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ29sbGFwc2libGVfMS5Db2xsYXBzVHJpZ2dlcjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbGxhcHNpYmxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDb2xsYXBzaWJsZV8xLkNvbGxhcHNpYmxlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29sbGFwc0JvZHlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENvbGxhcHNpYmxlXzEuQ29sbGFwc0JvZHk7IH0gfSk7XG52YXIgQ2FyZF8xID0gcmVxdWlyZShcIi4vY21wcy9jYXJkL0NhcmRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDYXJkXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDYXJkXzEuQ2FyZDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNhcmRDb250ZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDYXJkXzEuQ2FyZENvbnRlbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDYXJkVGl0bGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENhcmRfMS5DYXJkVGl0bGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDYXJkQWN0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDYXJkXzEuQ2FyZEFjdGlvbjsgfSB9KTtcbnZhciBOYXZCYXJfMSA9IHJlcXVpcmUoXCIuL2NtcHMvbmF2aWdhdGlvbi9OYXZCYXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJOYXZCYXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5hdkJhcl8xLk5hdkJhcjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk5hdkJhckdyb3VwXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBOYXZCYXJfMS5OYXZCYXJHcm91cDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk5hdkJhckl0ZW1cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5hdkJhcl8xLk5hdkJhckl0ZW07IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJOYXZCYXJCcmFuZFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTmF2QmFyXzEuTmF2QmFyQnJhbmQ7IH0gfSk7XG52YXIgTmF2aWdhdGlvbl8xID0gcmVxdWlyZShcIi4vY21wcy9uYXZpZ2F0aW9uL05hdmlnYXRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJOYXZpZ2F0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBOYXZpZ2F0aW9uXzEuTmF2aWdhdGlvbjsgfSB9KTtcbnZhciBTaWRlTmF2XzEgPSByZXF1aXJlKFwiLi9jbXBzL25hdmlnYXRpb24vU2lkZU5hdlwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNpZGVOYXZcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFNpZGVOYXZfMS5TaWRlTmF2OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU2lkZU5hdkVsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBTaWRlTmF2XzEuU2lkZU5hdkVsOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU2lkZU5hdlVzZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFNpZGVOYXZfMS5TaWRlTmF2VXNlcjsgfSB9KTtcbnZhciBQcm9ncmVzc18xID0gcmVxdWlyZShcIi4vY21wcy9wcm9ncmVzcy9Qcm9ncmVzc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlByb2dyZXNzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9ncmVzc18xLlByb2dyZXNzOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUHJlbG9hZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9ncmVzc18xLlByZWxvYWRlcjsgfSB9KTtcbnZhciBNb2RhbF8xID0gcmVxdWlyZShcIi4vY21wcy9tb2RhbC9Nb2RhbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk1vZGFsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNb2RhbF8xLk1vZGFsOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTW9kYWxDb250ZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNb2RhbF8xLk1vZGFsQ29udGVudDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk1vZGFsRm9vdGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNb2RhbF8xLk1vZGFsRm9vdGVyOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTW9kYWxIZWFkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1vZGFsXzEuTW9kYWxIZWFkZXI7IH0gfSk7XG4vLy8vLy8vL3V4XG52YXIgdXhfMSA9IHJlcXVpcmUoXCIuL3V4XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTG9naW5cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHV4XzEuTG9naW47IH0gfSk7XG4vLyAvLy9EYXRhVGFibGVcbnZhciBEYXRhVGFibGVfMSA9IHJlcXVpcmUoXCIuL0RhdGFUYWJsZS9EYXRhVGFibGVcIik7XG52YXIgdGhlbWVzXzEgPSByZXF1aXJlKFwiLi9EYXRhVGFibGUvdGhlbWVzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFRoZW1lc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhlbWVzXzEuZGVmYXVsdFRoZW1lczsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNyZWF0ZVRoZW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGVtZXNfMS5jcmVhdGVUaGVtZTsgfSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9EYXRhVGFibGUvY29uc3RhbnRzXCIpLCBleHBvcnRzKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERhdGFUYWJsZV8xLmRlZmF1bHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkxvZ2luID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIEZpZWxkXzEgPSByZXF1aXJlKFwiLi4vLi4vY21wcy9mb3Jtcy9GaWVsZFwiKTtcbi8vXG4vLyBleHBvcnQgZnVuY3Rpb24gTG9naW4gKHtvbkxvZ2luLCBvbkxvZ2luRXJyb3IsIGNsYXNzTmFtZSwgY2hlY2tVcmx9OiBMb2dpblByb3BzKSAge1xuLy8gICAgIGxldCBlbWFpbEY6IHsgaXNWYWxpZDogKCkgPT4gYW55OyB9LCBwYXNzRjogeyBpc1ZhbGlkOiAoKSA9PiBhbnk7IH07XG4vLyAgICAgbGV0IFtlbWFpbE9rLCBzZXRFbWFpbE9rXSA9IHVzZVN0YXRlKGZhbHNlKVxuLy8gICAgIGxldCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZSh7XG4vLyAgICAgICAgIHBhc3N3b3JkOiBcIlwiLFxuLy8gICAgICAgICBlbWFpbDogXCJcIlxuLy8gICAgIH0pO1xuLy8gICAgIGxldCBuZXh0ID0gKCkgPT4ge1xuLy8gICAgICAgICBpZiAoZW1haWxGICYmIGVtYWlsRi5pc1ZhbGlkKCkpIHtcbi8vICAgICAgICAgICAgIGlmIChjaGVja1VybCkge1xuLy8gICAgICAgICAgICAgICAgIGZldGNoKGNoZWNrVXJsLCB7XG4vLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4vLyAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4vLyAgICAgICAgICAgICAgICAgICAgIH0sXG4vLyAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHVzZXIpXG4vLyAgICAgICAgICAgICAgICAgfSkudGhlbihyID0+IHIuanNvbigpKS50aGVuKGpzb24gPT4ge1xuLy8gICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5zdWNjZXNzKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbWFpbE9rKHRydWUpO1xuLy8gICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgb25Mb2dpbkVycm9yICYmIG9uTG9naW5FcnJvcihqc29uKTtcbi8vICAgICAgICAgICAgICAgICAgICAgfVxuLy8gICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbi8vICAgICAgICAgICAgICAgICAgICAgb25Mb2dpbkVycm9yICYmIG9uTG9naW5FcnJvcihlcnJvcik7XG4vLyAgICAgICAgICAgICAgICAgfSlcbi8vICAgICAgICAgICAgIH0gZWxzZSB7XG4vLyAgICAgICAgICAgICAgICAgc2V0RW1haWxPayh0cnVlKTtcbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgfVxuLy8gICAgIH1cbi8vICAgICBsZXQgbG9naW4gPSAoKSA9PiB7XG4vLyAgICAgICAgIGlmIChlbWFpbEYgJiYgZW1haWxGLmlzVmFsaWQoKSAmJiBwYXNzRiAmJiBwYXNzRi5pc1ZhbGlkKCkpIHtcbi8vICAgICAgICAgICAgIG9uTG9naW4gJiYgb25Mb2dpbih1c2VyKVxuLy9cbi8vICAgICAgICAgfVxuLy8gICAgIH1cbi8vICAgICBsZXQgZ2V0UGFzc3dvcmRWaWV3ID0gKCkgPT4ge1xuLy8gICAgICAgICBpZiAoZW1haWxPaykge1xuLy8gICAgICAgICAgICAgcmV0dXJuIDw+PEZpZWxkXG4vLyAgICAgICAgICAgICAgICAgcmVmPXsocjogRmllbGRSZWYgfCBudWxsIHwgYW55KSA9PiB7XG4vLyAgICAgICAgICAgICAgICAgICAgIHBhc3NGID0gcjtcbi8vICAgICAgICAgICAgICAgICB9fVxuLy8gICAgICAgICAgICAgICAgIHZhbHVlPXt1c2VyLnBhc3N3b3JkfVxuLy8gICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuLy8gICAgICAgICAgICAgICAgICAgICBsZXQgdSA9IHsuLi51c2VyfTtcbi8vICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuLy8gICAgICAgICAgICAgICAgICAgICB1LnBhc3N3b3JkID0gZS50YXJnZXQudmFsdWU7XG4vLyAgICAgICAgICAgICAgICAgICAgIHNldFVzZXIodSk7XG4vLyAgICAgICAgICAgICAgICAgfX1cbi8vICAgICAgICAgICAgICAgICBhdXRvRm9jdXM9e3RydWV9XG4vLyAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e3RydWV9XG4vLyAgICAgICAgICAgICAgICAgbGFiZWw9e1wiUGFzc3dvcmRcIn1cbi8vICAgICAgICAgICAgICAgICB0eXBlPXtcInBhc3N3b3JkXCJ9XG4vLyAgICAgICAgICAgICAgICAgdnR5cGU9e1wicGFzc3dvcmRcIn1cbi8vICAgICAgICAgICAgICAgICB2dHlwZU1zZz17J05lZWQgdG8gYmUgYSB2YWxpZCBQYXNzd29yZCd9XG4vLyAgICAgICAgICAgICAgICAgb25FbnRlcktleT17bG9naW59Lz5cbi8vICAgICAgICAgICAgIDwvPjtcbi8vICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICAgIHJldHVybiBudWxsO1xuLy8gICAgICAgICB9XG4vLyAgICAgfVxuLy9cbi8vICAgICBsZXQgZ2V0TG9naW5WaWV3ID0gKCkgPT4ge1xuLy8gICAgICAgICBpZiAoIWVtYWlsT2spIHtcbi8vICAgICAgICAgICAgIHJldHVybiA8PjxGaWVsZFxuLy8gICAgICAgICAgICAgICAgIGF1dG9Gb2N1cz17dHJ1ZX1cbi8vICAgICAgICAgICAgICAgICByZXF1aXJlZD17dHJ1ZX1cbi8vICAgICAgICAgICAgICAgICByZWY9eyhyOiBGaWVsZFJlZiB8IG51bGwgfCBhbnkpID0+IHtcbi8vICAgICAgICAgICAgICAgICAgICAgZW1haWxGID0gcjtcbi8vICAgICAgICAgICAgICAgICB9fVxuLy8gICAgICAgICAgICAgICAgIHZhbHVlPXt1c2VyLmVtYWlsfVxuLy8gICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuLy8gICAgICAgICAgICAgICAgICAgICBsZXQgdSA9IHsuLi51c2VyfTtcbi8vICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuLy8gICAgICAgICAgICAgICAgICAgICB1LmVtYWlsID0gZS50YXJnZXQudmFsdWU7XG4vLyAgICAgICAgICAgICAgICAgICAgIHNldFVzZXIodSk7XG4vLyAgICAgICAgICAgICAgICAgfX1cbi8vICAgICAgICAgICAgICAgICBsYWJlbD17XCJFbWFpbFwifVxuLy8gICAgICAgICAgICAgICAgIHR5cGU9e1wiZW1haWxcIn1cbi8vICAgICAgICAgICAgICAgICB2dHlwZT17XCJlbWFpbFwifVxuLy8gICAgICAgICAgICAgICAgIHZ0eXBlTXNnPXsnTmVlZCB0byBiZSBhIHZhbGlkIGVtYWlsJ31cbi8vICAgICAgICAgICAgICAgICBvbkVudGVyS2V5PXtuZXh0fS8+XG4vLyAgICAgICAgICAgICA8Lz47XG4vLyAgICAgICAgIH0gZWxzZSB7XG4vLyAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbi8vICAgICAgICAgfVxuLy9cbi8vICAgICB9XG4vLyAgICAgcmV0dXJuIDxkaXZcbi8vICAgICAgICAgcmVmPXtlbCA9PiB7XG4vLyAgICAgICAgICAgICBlbCA9IGVsO1xuLy8gICAgICAgICB9fVxuLy8gICAgICAgICBjbGFzc05hbWU9eyhjbGFzc05hbWUgfHwgXCJcIikgKyBcIiBsb2dpblwifVxuLy8gICAgID5cbi8vICAgICAgICAge2dldExvZ2luVmlldygpfVxuLy8gICAgICAgICB7Z2V0UGFzc3dvcmRWaWV3KCl9XG4vLyAgICAgPC9kaXY+XG4vLyB9XG52YXIgTG9naW4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKExvZ2luLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIExvZ2luKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGVtYWlsT2s6IGZhbHNlLFxuICAgICAgICAgICAgZW1haWw6IFwiXCIsXG4gICAgICAgICAgICBwYXNzd29yZDogXCJcIixcbiAgICAgICAgICAgIHBhc3NPSzogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBMb2dpbi5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRoaXMuZW1haWxGICYmIHRoaXMuZW1haWxGLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuY2hlY2tVcmwpIHtcbiAgICAgICAgICAgICAgICBmZXRjaCh0aGlzLnByb3BzLmNoZWNrVXJsLCB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZW1haWw6IHRoaXMuc3RhdGUuZW1haWwsIH0pXG4gICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocikgeyByZXR1cm4gci5qc29uKCk7IH0pLnRoZW4oZnVuY3Rpb24gKGpzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24uc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBlbWFpbE9rOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25Mb2dpbkVycm9yICYmIF90aGlzLnByb3BzLm9uTG9naW5FcnJvcihqc29uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkxvZ2luRXJyb3IgJiYgX3RoaXMucHJvcHMub25Mb2dpbkVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlbWFpbE9rOiB0cnVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBMb2dpbi5wcm90b3R5cGUubG9naW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmVtYWlsT2sgJiYgdGhpcy5wYXNzd29yZEYgJiYgdGhpcy5wYXNzd29yZEYuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTG9naW4gJiYgdGhpcy5wcm9wcy5vbkxvZ2luKHtcbiAgICAgICAgICAgICAgICBlbWFpbDogdGhpcy5zdGF0ZS5lbWFpbCxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogdGhpcy5zdGF0ZS5wYXNzd29yZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIExvZ2luLnByb3RvdHlwZS5nZXRMb2dpblZpZXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5lbWFpbE9rKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpZWxkXzEuRmllbGQsIHsgYXV0b0ZvY3VzOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgcmVmOiBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZW1haWxGID0gcjtcbiAgICAgICAgICAgICAgICAgICAgfSwgdmFsdWU6IHRoaXMuc3RhdGUuZW1haWwsIG9uQ2hhbmdlOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBlbWFpbDogZS50YXJnZXQudmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGxhYmVsOiBcIkVtYWlsXCIsIHR5cGU6IFwiZW1haWxcIiwgdnR5cGU6IFwiZW1haWxcIiwgdnR5cGVNc2c6ICdOZWVkIHRvIGJlIGEgdmFsaWQgZW1haWwnLCBvbkVudGVyS2V5OiB0aGlzLm5leHQuYmluZCh0aGlzKSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTG9naW4ucHJvdG90eXBlLmdldFBhc3N3b3JkVmlldyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuZW1haWxPaykge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWVsZF8xLkZpZWxkLCB7IHJlZjogZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnBhc3N3b3JkRiA9IHI7XG4gICAgICAgICAgICAgICAgICAgIH0sIHZhbHVlOiB0aGlzLnN0YXRlLnBhc3N3b3JkLCBvbkNoYW5nZTogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgcGFzc3dvcmQ6IGUudGFyZ2V0LnZhbHVlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LCBhdXRvRm9jdXM6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCBsYWJlbDogXCJQYXNzd29yZFwiLCB0eXBlOiBcInBhc3N3b3JkXCIsIHZ0eXBlOiBcInBhc3N3b3JkXCIsIHZ0eXBlTXNnOiAnTmVlZCB0byBiZSBhIHZhbGlkIFBhc3N3b3JkJywgb25FbnRlcktleTogdGhpcy5sb2dpbi5iaW5kKHRoaXMpIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBMb2dpbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyByZWY6IGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIF90aGlzLmVsID0gZWw7XG4gICAgICAgICAgICB9LCBjbGFzc05hbWU6ICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSArIFwiIGxvZ2luXCIgfSxcbiAgICAgICAgICAgIHRoaXMuZ2V0TG9naW5WaWV3KCksXG4gICAgICAgICAgICB0aGlzLmdldFBhc3N3b3JkVmlldygpKSk7XG4gICAgfTtcbiAgICByZXR1cm4gTG9naW47XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Mb2dpbiA9IExvZ2luO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkxvZ2luID0gdm9pZCAwO1xudmFyIExvZ2luXzEgPSByZXF1aXJlKFwiLi9hdXRoL0xvZ2luXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTG9naW5cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIExvZ2luXzEuTG9naW47IH0gfSk7XG4iLCJleHBvcnQgdmFyIE1TID0gJy1tcy0nXG5leHBvcnQgdmFyIE1PWiA9ICctbW96LSdcbmV4cG9ydCB2YXIgV0VCS0lUID0gJy13ZWJraXQtJ1xuXG5leHBvcnQgdmFyIENPTU1FTlQgPSAnY29tbSdcbmV4cG9ydCB2YXIgUlVMRVNFVCA9ICdydWxlJ1xuZXhwb3J0IHZhciBERUNMQVJBVElPTiA9ICdkZWNsJ1xuXG5leHBvcnQgdmFyIFBBR0UgPSAnQHBhZ2UnXG5leHBvcnQgdmFyIE1FRElBID0gJ0BtZWRpYSdcbmV4cG9ydCB2YXIgSU1QT1JUID0gJ0BpbXBvcnQnXG5leHBvcnQgdmFyIENIQVJTRVQgPSAnQGNoYXJzZXQnXG5leHBvcnQgdmFyIFZJRVdQT1JUID0gJ0B2aWV3cG9ydCdcbmV4cG9ydCB2YXIgU1VQUE9SVFMgPSAnQHN1cHBvcnRzJ1xuZXhwb3J0IHZhciBET0NVTUVOVCA9ICdAZG9jdW1lbnQnXG5leHBvcnQgdmFyIE5BTUVTUEFDRSA9ICdAbmFtZXNwYWNlJ1xuZXhwb3J0IHZhciBLRVlGUkFNRVMgPSAnQGtleWZyYW1lcydcbmV4cG9ydCB2YXIgRk9OVF9GQUNFID0gJ0Bmb250LWZhY2UnXG5leHBvcnQgdmFyIENPVU5URVJfU1RZTEUgPSAnQGNvdW50ZXItc3R5bGUnXG5leHBvcnQgdmFyIEZPTlRfRkVBVFVSRV9WQUxVRVMgPSAnQGZvbnQtZmVhdHVyZS12YWx1ZXMnXG5leHBvcnQgdmFyIExBWUVSID0gJ0BsYXllcidcbiIsImltcG9ydCB7TVMsIE1PWiwgV0VCS0lULCBSVUxFU0VULCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge21hdGNoLCBjaGFyYXQsIHN1YnN0ciwgc3RybGVuLCBzaXplb2YsIHJlcGxhY2UsIGNvbWJpbmUsIGZpbHRlciwgYXNzaWdufSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge2NvcHksIGxpZnQsIHRva2VuaXplfSBmcm9tICcuL1Rva2VuaXplci5qcydcbmltcG9ydCB7c2VyaWFsaXplfSBmcm9tICcuL1NlcmlhbGl6ZXIuanMnXG5pbXBvcnQge3ByZWZpeH0gZnJvbSAnLi9QcmVmaXhlci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9uW119IGNvbGxlY3Rpb25cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWlkZGxld2FyZSAoY29sbGVjdGlvbikge1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNvbGxlY3Rpb24pXG5cblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdFx0dmFyIG91dHB1dCA9ICcnXG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuXHRcdFx0b3V0cHV0ICs9IGNvbGxlY3Rpb25baV0oZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykgfHwgJydcblxuXHRcdHJldHVybiBvdXRwdXRcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzaGVldCAoY2FsbGJhY2spIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdFx0aWYgKCFlbGVtZW50LnJvb3QpXG5cdFx0XHRpZiAoZWxlbWVudCA9IGVsZW1lbnQucmV0dXJuKVxuXHRcdFx0XHRjYWxsYmFjayhlbGVtZW50KVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhlciAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRpZiAoZWxlbWVudC5sZW5ndGggPiAtMSlcblx0XHRpZiAoIWVsZW1lbnQucmV0dXJuKVxuXHRcdFx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRcdFx0Y2FzZSBERUNMQVJBVElPTjogZWxlbWVudC5yZXR1cm4gPSBwcmVmaXgoZWxlbWVudC52YWx1ZSwgZWxlbWVudC5sZW5ndGgsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRjYXNlIEtFWUZSQU1FUzpcblx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHt2YWx1ZTogcmVwbGFjZShlbGVtZW50LnZhbHVlLCAnQCcsICdAJyArIFdFQktJVCl9KV0sIGNhbGxiYWNrKVxuXHRcdFx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQubGVuZ3RoKVxuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbWJpbmUoY2hpbGRyZW4gPSBlbGVtZW50LnByb3BzLCBmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChtYXRjaCh2YWx1ZSwgY2FsbGJhY2sgPSAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzpyZWFkLW9ubHknOiBjYXNlICc6cmVhZC13cml0ZSc6XG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3ZhbHVlXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0YXNzaWduKGVsZW1lbnQsIHtwcm9wczogZmlsdGVyKGNoaWxkcmVuLCBjYWxsYmFjayl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHQvLyA6cGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6OnBsYWNlaG9sZGVyJzpcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3ZhbHVlXX0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0YXNzaWduKGVsZW1lbnQsIHtwcm9wczogZmlsdGVyKGNoaWxkcmVuLCBjYWxsYmFjayl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHJldHVybiAnJ1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlIChlbGVtZW50KSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0ZWxlbWVudC5wcm9wcyA9IGVsZW1lbnQucHJvcHMubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRyZXR1cm4gY29tYmluZSh0b2tlbml6ZSh2YWx1ZSksIGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIGNoaWxkcmVuKSB7XG5cdFx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIDApKSB7XG5cdFx0XHRcdFx0XHQvLyBcXGZcblx0XHRcdFx0XHRcdGNhc2UgMTI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzdWJzdHIodmFsdWUsIDEsIHN0cmxlbih2YWx1ZSkpXG5cdFx0XHRcdFx0XHQvLyBcXDAgKCArID4gflxuXHRcdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDQwOiBjYXNlIDQzOiBjYXNlIDYyOiBjYXNlIDEyNjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHQvLyA6XG5cdFx0XHRcdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRcdFx0XHRpZiAoY2hpbGRyZW5bKytpbmRleF0gPT09ICdnbG9iYWwnKVxuXHRcdFx0XHRcdFx0XHRcdGNoaWxkcmVuW2luZGV4XSA9ICcnLCBjaGlsZHJlblsrK2luZGV4XSA9ICdcXGYnICsgc3Vic3RyKGNoaWxkcmVuW2luZGV4XSwgaW5kZXggPSAxLCAtMSlcblx0XHRcdFx0XHRcdC8vIFxcc1xuXHRcdFx0XHRcdFx0Y2FzZSAzMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbmRleCkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgMDogZWxlbWVudCA9IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2l6ZW9mKGNoaWxkcmVuKSA+IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBpbmRleCA9IHNpemVvZihjaGlsZHJlbikgLSAxOiBjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDIgPyB2YWx1ZSArIGVsZW1lbnQgKyBlbGVtZW50IDogdmFsdWUgKyBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0fVxufVxuIiwiaW1wb3J0IHtDT01NRU5ULCBSVUxFU0VULCBERUNMQVJBVElPTn0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHthYnMsIGNoYXJhdCwgdHJpbSwgZnJvbSwgc2l6ZW9mLCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCByZXBsYWNlLCBpbmRleG9mfSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge25vZGUsIGNoYXIsIHByZXYsIG5leHQsIHBlZWssIGNhcmV0LCBhbGxvYywgZGVhbGxvYywgZGVsaW1pdCwgd2hpdGVzcGFjZSwgZXNjYXBpbmcsIGlkZW50aWZpZXIsIGNvbW1lbnRlcn0gZnJvbSAnLi9Ub2tlbml6ZXIuanMnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtvYmplY3RbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHBhcnNlKCcnLCBudWxsLCBudWxsLCBudWxsLCBbJyddLCB2YWx1ZSA9IGFsbG9jKHZhbHVlKSwgMCwgWzBdLCB2YWx1ZSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc2V0c1xuICogQHBhcmFtIHtudW1iZXJbXX0gcHNldWRvXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGRlY2xhcmF0aW9uc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UgKHZhbHVlLCByb290LCBwYXJlbnQsIHJ1bGUsIHJ1bGVzLCBydWxlc2V0cywgcHNldWRvLCBwb2ludHMsIGRlY2xhcmF0aW9ucykge1xuXHR2YXIgaW5kZXggPSAwXG5cdHZhciBvZmZzZXQgPSAwXG5cdHZhciBsZW5ndGggPSBwc2V1ZG9cblx0dmFyIGF0cnVsZSA9IDBcblx0dmFyIHByb3BlcnR5ID0gMFxuXHR2YXIgcHJldmlvdXMgPSAwXG5cdHZhciB2YXJpYWJsZSA9IDFcblx0dmFyIHNjYW5uaW5nID0gMVxuXHR2YXIgYW1wZXJzYW5kID0gMVxuXHR2YXIgY2hhcmFjdGVyID0gMFxuXHR2YXIgdHlwZSA9ICcnXG5cdHZhciBwcm9wcyA9IHJ1bGVzXG5cdHZhciBjaGlsZHJlbiA9IHJ1bGVzZXRzXG5cdHZhciByZWZlcmVuY2UgPSBydWxlXG5cdHZhciBjaGFyYWN0ZXJzID0gdHlwZVxuXG5cdHdoaWxlIChzY2FubmluZylcblx0XHRzd2l0Y2ggKHByZXZpb3VzID0gY2hhcmFjdGVyLCBjaGFyYWN0ZXIgPSBuZXh0KCkpIHtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmIChwcmV2aW91cyAhPSAxMDggJiYgY2hhcmF0KGNoYXJhY3RlcnMsIGxlbmd0aCAtIDEpID09IDU4KSB7XG5cdFx0XHRcdFx0aWYgKGluZGV4b2YoY2hhcmFjdGVycyArPSByZXBsYWNlKGRlbGltaXQoY2hhcmFjdGVyKSwgJyYnLCAnJlxcZicpLCAnJlxcZicpICE9IC0xKVxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gLTFcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHQvLyBcIiAnIFtcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6IGNhc2UgOTE6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChjaGFyYWN0ZXIpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXHQgXFxuIFxcciBcXHNcblx0XHRcdGNhc2UgOTogY2FzZSAxMDogY2FzZSAxMzogY2FzZSAzMjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSB3aGl0ZXNwYWNlKHByZXZpb3VzKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZXNjYXBpbmcoY2FyZXQoKSAtIDEsIDcpXG5cdFx0XHRcdGNvbnRpbnVlXG5cdFx0XHQvLyAvXG5cdFx0XHRjYXNlIDQ3OlxuXHRcdFx0XHRzd2l0Y2ggKHBlZWsoKSkge1xuXHRcdFx0XHRcdGNhc2UgNDI6IGNhc2UgNDc6XG5cdFx0XHRcdFx0XHRhcHBlbmQoY29tbWVudChjb21tZW50ZXIobmV4dCgpLCBjYXJldCgpKSwgcm9vdCwgcGFyZW50LCBkZWNsYXJhdGlvbnMpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9ICcvJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyB7XG5cdFx0XHRjYXNlIDEyMyAqIHZhcmlhYmxlOlxuXHRcdFx0XHRwb2ludHNbaW5kZXgrK10gPSBzdHJsZW4oY2hhcmFjdGVycykgKiBhbXBlcnNhbmRcblx0XHRcdC8vIH0gOyBcXDBcblx0XHRcdGNhc2UgMTI1ICogdmFyaWFibGU6IGNhc2UgNTk6IGNhc2UgMDpcblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXIpIHtcblx0XHRcdFx0XHQvLyBcXDAgfVxuXHRcdFx0XHRcdGNhc2UgMDogY2FzZSAxMjU6IHNjYW5uaW5nID0gMFxuXHRcdFx0XHRcdC8vIDtcblx0XHRcdFx0XHRjYXNlIDU5ICsgb2Zmc2V0OiBpZiAoYW1wZXJzYW5kID09IC0xKSBjaGFyYWN0ZXJzID0gcmVwbGFjZShjaGFyYWN0ZXJzLCAvXFxmL2csICcnKVxuXHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5ID4gMCAmJiAoc3RybGVuKGNoYXJhY3RlcnMpIC0gbGVuZ3RoKSlcblx0XHRcdFx0XHRcdFx0YXBwZW5kKHByb3BlcnR5ID4gMzIgPyBkZWNsYXJhdGlvbihjaGFyYWN0ZXJzICsgJzsnLCBydWxlLCBwYXJlbnQsIGxlbmd0aCAtIDEsIGRlY2xhcmF0aW9ucykgOiBkZWNsYXJhdGlvbihyZXBsYWNlKGNoYXJhY3RlcnMsICcgJywgJycpICsgJzsnLCBydWxlLCBwYXJlbnQsIGxlbmd0aCAtIDIsIGRlY2xhcmF0aW9ucyksIGRlY2xhcmF0aW9ucylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gQCA7XG5cdFx0XHRcdFx0Y2FzZSA1OTogY2hhcmFjdGVycyArPSAnOydcblx0XHRcdFx0XHQvLyB7IHJ1bGUvYXQtcnVsZVxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRhcHBlbmQocmVmZXJlbmNlID0gcnVsZXNldChjaGFyYWN0ZXJzLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzID0gW10sIGNoaWxkcmVuID0gW10sIGxlbmd0aCwgcnVsZXNldHMpLCBydWxlc2V0cylcblxuXHRcdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PT0gMTIzKVxuXHRcdFx0XHRcdFx0XHRpZiAob2Zmc2V0ID09PSAwKVxuXHRcdFx0XHRcdFx0XHRcdHBhcnNlKGNoYXJhY3RlcnMsIHJvb3QsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBwcm9wcywgcnVsZXNldHMsIGxlbmd0aCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoYXRydWxlID09PSA5OSAmJiBjaGFyYXQoY2hhcmFjdGVycywgMykgPT09IDExMCA/IDEwMCA6IGF0cnVsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gZCBsIG0gc1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDA6IGNhc2UgMTA4OiBjYXNlIDEwOTogY2FzZSAxMTU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlKHZhbHVlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcnVsZSAmJiBhcHBlbmQocnVsZXNldCh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIDAsIDAsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHJ1bGVzLCBwcm9wcyA9IFtdLCBsZW5ndGgsIGNoaWxkcmVuKSwgY2hpbGRyZW4pLCBydWxlcywgY2hpbGRyZW4sIGxlbmd0aCwgcG9pbnRzLCBydWxlID8gcHJvcHMgOiBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlKGNoYXJhY3RlcnMsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIFsnJ10sIGNoaWxkcmVuLCAwLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGluZGV4ID0gb2Zmc2V0ID0gcHJvcGVydHkgPSAwLCB2YXJpYWJsZSA9IGFtcGVyc2FuZCA9IDEsIHR5cGUgPSBjaGFyYWN0ZXJzID0gJycsIGxlbmd0aCA9IHBzZXVkb1xuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gOlxuXHRcdFx0Y2FzZSA1ODpcblx0XHRcdFx0bGVuZ3RoID0gMSArIHN0cmxlbihjaGFyYWN0ZXJzKSwgcHJvcGVydHkgPSBwcmV2aW91c1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYgKHZhcmlhYmxlIDwgMSlcblx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09IDEyMylcblx0XHRcdFx0XHRcdC0tdmFyaWFibGVcblx0XHRcdFx0XHRlbHNlIGlmIChjaGFyYWN0ZXIgPT0gMTI1ICYmIHZhcmlhYmxlKysgPT0gMCAmJiBwcmV2KCkgPT0gMTI1KVxuXHRcdFx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhY3RlcnMgKz0gZnJvbShjaGFyYWN0ZXIpLCBjaGFyYWN0ZXIgKiB2YXJpYWJsZSkge1xuXHRcdFx0XHRcdC8vICZcblx0XHRcdFx0XHRjYXNlIDM4OlxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gb2Zmc2V0ID4gMCA/IDEgOiAoY2hhcmFjdGVycyArPSAnXFxmJywgLTEpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vICxcblx0XHRcdFx0XHRjYXNlIDQ0OlxuXHRcdFx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gKHN0cmxlbihjaGFyYWN0ZXJzKSAtIDEpICogYW1wZXJzYW5kLCBhbXBlcnNhbmQgPSAxXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEBcblx0XHRcdFx0XHRjYXNlIDY0OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKHBlZWsoKSA9PT0gNDUpXG5cdFx0XHRcdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChuZXh0KCkpXG5cblx0XHRcdFx0XHRcdGF0cnVsZSA9IHBlZWsoKSwgb2Zmc2V0ID0gbGVuZ3RoID0gc3RybGVuKHR5cGUgPSBjaGFyYWN0ZXJzICs9IGlkZW50aWZpZXIoY2FyZXQoKSkpLCBjaGFyYWN0ZXIrK1xuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0Y2FzZSA0NTpcblx0XHRcdFx0XHRcdGlmIChwcmV2aW91cyA9PT0gNDUgJiYgc3RybGVuKGNoYXJhY3RlcnMpID09IDIpXG5cdFx0XHRcdFx0XHRcdHZhcmlhYmxlID0gMFxuXHRcdFx0XHR9XG5cdFx0fVxuXG5cdHJldHVybiBydWxlc2V0c1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEBwYXJhbSB7b2JqZWN0W119IHNpYmxpbmdzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydWxlc2V0ICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCwgc2libGluZ3MpIHtcblx0dmFyIHBvc3QgPSBvZmZzZXQgLSAxXG5cdHZhciBydWxlID0gb2Zmc2V0ID09PSAwID8gcnVsZXMgOiBbJyddXG5cdHZhciBzaXplID0gc2l6ZW9mKHJ1bGUpXG5cblx0Zm9yICh2YXIgaSA9IDAsIGogPSAwLCBrID0gMDsgaSA8IGluZGV4OyArK2kpXG5cdFx0Zm9yICh2YXIgeCA9IDAsIHkgPSBzdWJzdHIodmFsdWUsIHBvc3QgKyAxLCBwb3N0ID0gYWJzKGogPSBwb2ludHNbaV0pKSwgeiA9IHZhbHVlOyB4IDwgc2l6ZTsgKyt4KVxuXHRcdFx0aWYgKHogPSB0cmltKGogPiAwID8gcnVsZVt4XSArICcgJyArIHkgOiByZXBsYWNlKHksIC8mXFxmL2csIHJ1bGVbeF0pKSlcblx0XHRcdFx0cHJvcHNbaysrXSA9IHpcblxuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBvZmZzZXQgPT09IDAgPyBSVUxFU0VUIDogdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudCAodmFsdWUsIHJvb3QsIHBhcmVudCwgc2libGluZ3MpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgQ09NTUVOVCwgZnJvbShjaGFyKCkpLCBzdWJzdHIodmFsdWUsIDIsIC0yKSwgMCwgc2libGluZ3MpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEBwYXJhbSB7b2JqZWN0W119IHNpYmxpbmdzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAodmFsdWUsIHJvb3QsIHBhcmVudCwgbGVuZ3RoLCBzaWJsaW5ncykge1xuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBERUNMQVJBVElPTiwgc3Vic3RyKHZhbHVlLCAwLCBsZW5ndGgpLCBzdWJzdHIodmFsdWUsIGxlbmd0aCArIDEsIC0xKSwgbGVuZ3RoLCBzaWJsaW5ncylcbn1cbiIsImltcG9ydCB7TVMsIE1PWiwgV0VCS0lUfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge2hhc2gsIGNoYXJhdCwgc3RybGVuLCBpbmRleG9mLCByZXBsYWNlLCBzdWJzdHIsIG1hdGNofSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4ICh2YWx1ZSwgbGVuZ3RoLCBjaGlsZHJlbikge1xuXHRzd2l0Y2ggKGhhc2godmFsdWUsIGxlbmd0aCkpIHtcblx0XHQvLyBjb2xvci1hZGp1c3Rcblx0XHRjYXNlIDUxMDM6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgJ3ByaW50LScgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gYW5pbWF0aW9uLCBhbmltYXRpb24tKGRlbGF5fGRpcmVjdGlvbnxkdXJhdGlvbnxmaWxsLW1vZGV8aXRlcmF0aW9uLWNvdW50fG5hbWV8cGxheS1zdGF0ZXx0aW1pbmctZnVuY3Rpb24pXG5cdFx0Y2FzZSA1NzM3OiBjYXNlIDQyMDE6IGNhc2UgMzE3NzogY2FzZSAzNDMzOiBjYXNlIDE2NDE6IGNhc2UgNDQ1NzogY2FzZSAyOTIxOlxuXHRcdC8vIHRleHQtZGVjb3JhdGlvbiwgZmlsdGVyLCBjbGlwLXBhdGgsIGJhY2tmYWNlLXZpc2liaWxpdHksIGNvbHVtbiwgYm94LWRlY29yYXRpb24tYnJlYWtcblx0XHRjYXNlIDU1NzI6IGNhc2UgNjM1NjogY2FzZSA1ODQ0OiBjYXNlIDMxOTE6IGNhc2UgNjY0NTogY2FzZSAzMDA1OlxuXHRcdC8vIG1hc2ssIG1hc2staW1hZ2UsIG1hc2stKG1vZGV8Y2xpcHxzaXplKSwgbWFzay0ocmVwZWF0fG9yaWdpbiksIG1hc2stcG9zaXRpb24sIG1hc2stY29tcG9zaXRlLFxuXHRcdGNhc2UgNjM5MTogY2FzZSA1ODc5OiBjYXNlIDU2MjM6IGNhc2UgNjEzNTogY2FzZSA0NTk5OiBjYXNlIDQ4NTU6XG5cdFx0Ly8gYmFja2dyb3VuZC1jbGlwLCBjb2x1bW5zLCBjb2x1bW4tKGNvdW50fGZpbGx8Z2FwfHJ1bGV8cnVsZS1jb2xvcnxydWxlLXN0eWxlfHJ1bGUtd2lkdGh8c3Bhbnx3aWR0aClcblx0XHRjYXNlIDQyMTU6IGNhc2UgNjM4OTogY2FzZSA1MTA5OiBjYXNlIDUzNjU6IGNhc2UgNTYyMTogY2FzZSAzODI5OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgdmFsdWVcblx0XHQvLyB0YWItc2l6ZVxuXHRcdGNhc2UgNDc4OTpcblx0XHRcdHJldHVybiBNT1ogKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gYXBwZWFyYW5jZSwgdXNlci1zZWxlY3QsIHRyYW5zZm9ybSwgaHlwaGVucywgdGV4dC1zaXplLWFkanVzdFxuXHRcdGNhc2UgNTM0OTogY2FzZSA0MjQ2OiBjYXNlIDQ4MTA6IGNhc2UgNjk2ODogY2FzZSAyNzU2OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTU9aICsgdmFsdWUgKyBNUyArIHZhbHVlICsgdmFsdWVcblx0XHQvLyB3cml0aW5nLW1vZGVcblx0XHRjYXNlIDU5MzY6XG5cdFx0XHRzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMTEpKSB7XG5cdFx0XHRcdC8vIHZlcnRpY2FsLWwocilcblx0XHRcdFx0Y2FzZSAxMTQ6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0YicpICsgdmFsdWVcblx0XHRcdFx0Ly8gdmVydGljYWwtcihsKVxuXHRcdFx0XHRjYXNlIDEwODpcblx0XHRcdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ3RiLXJsJykgKyB2YWx1ZVxuXHRcdFx0XHQvLyBob3Jpem9udGFsKC0pdGJcblx0XHRcdFx0Y2FzZSA0NTpcblx0XHRcdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ2xyJykgKyB2YWx1ZVxuXHRcdFx0XHQvLyBkZWZhdWx0OiBmYWxsdGhyb3VnaCB0byBiZWxvd1xuXHRcdFx0fVxuXHRcdC8vIGZsZXgsIGZsZXgtZGlyZWN0aW9uLCBzY3JvbGwtc25hcC10eXBlLCB3cml0aW5nLW1vZGVcblx0XHRjYXNlIDY4Mjg6IGNhc2UgNDI2ODogY2FzZSAyOTAzOlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gb3JkZXJcblx0XHRjYXNlIDYxNjU6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LScgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gYWxpZ24taXRlbXNcblx0XHRjYXNlIDUxODc6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyByZXBsYWNlKHZhbHVlLCAvKFxcdyspLisoOlteXSspLywgV0VCS0lUICsgJ2JveC0kMSQyJyArIE1TICsgJ2ZsZXgtJDEkMicpICsgdmFsdWVcblx0XHQvLyBhbGlnbi1zZWxmXG5cdFx0Y2FzZSA1NDQzOlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC1pdGVtLScgKyByZXBsYWNlKHZhbHVlLCAvZmxleC18LXNlbGYvZywgJycpICsgKCFtYXRjaCh2YWx1ZSwgL2ZsZXgtfGJhc2VsaW5lLykgPyBNUyArICdncmlkLXJvdy0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmL2csICcnKSA6ICcnKSArIHZhbHVlXG5cdFx0Ly8gYWxpZ24tY29udGVudFxuXHRcdGNhc2UgNDY3NTpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtbGluZS1wYWNrJyArIHJlcGxhY2UodmFsdWUsIC9hbGlnbi1jb250ZW50fGZsZXgtfC1zZWxmL2csICcnKSArIHZhbHVlXG5cdFx0Ly8gZmxleC1zaHJpbmtcblx0XHRjYXNlIDU1NDg6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdzaHJpbmsnLCAnbmVnYXRpdmUnKSArIHZhbHVlXG5cdFx0Ly8gZmxleC1iYXNpc1xuXHRcdGNhc2UgNTI5Mjpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2Jhc2lzJywgJ3ByZWZlcnJlZC1zaXplJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtZ3Jvd1xuXHRcdGNhc2UgNjA2MDpcblx0XHRcdHJldHVybiBXRUJLSVQgKyAnYm94LScgKyByZXBsYWNlKHZhbHVlLCAnLWdyb3cnLCAnJykgKyBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2dyb3cnLCAncG9zaXRpdmUnKSArIHZhbHVlXG5cdFx0Ly8gdHJhbnNpdGlvblxuXHRcdGNhc2UgNDU1NDpcblx0XHRcdHJldHVybiBXRUJLSVQgKyByZXBsYWNlKHZhbHVlLCAvKFteLV0pKHRyYW5zZm9ybSkvZywgJyQxJyArIFdFQktJVCArICckMicpICsgdmFsdWVcblx0XHQvLyBjdXJzb3Jcblx0XHRjYXNlIDYxODc6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZShyZXBsYWNlKHJlcGxhY2UodmFsdWUsIC8oem9vbS18Z3JhYikvLCBXRUJLSVQgKyAnJDEnKSwgLyhpbWFnZS1zZXQpLywgV0VCS0lUICsgJyQxJyksIHZhbHVlLCAnJykgKyB2YWx1ZVxuXHRcdC8vIGJhY2tncm91bmQsIGJhY2tncm91bmQtaW1hZ2Vcblx0XHRjYXNlIDU0OTU6IGNhc2UgMzk1OTpcblx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKGltYWdlLXNldFxcKFteXSopLywgV0VCS0lUICsgJyQxJyArICckYCQxJylcblx0XHQvLyBqdXN0aWZ5LWNvbnRlbnRcblx0XHRjYXNlIDQ5Njg6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKC4rOikoZmxleC0pPyguKikvLCBXRUJLSVQgKyAnYm94LXBhY2s6JDMnICsgTVMgKyAnZmxleC1wYWNrOiQzJyksIC9zListYlteO10rLywgJ2p1c3RpZnknKSArIFdFQktJVCArIHZhbHVlICsgdmFsdWVcblx0XHQvLyBqdXN0aWZ5LXNlbGZcblx0XHRjYXNlIDQyMDA6XG5cdFx0XHRpZiAoIW1hdGNoKHZhbHVlLCAvZmxleC18YmFzZWxpbmUvKSkgcmV0dXJuIE1TICsgJ2dyaWQtY29sdW1uLWFsaWduJyArIHN1YnN0cih2YWx1ZSwgbGVuZ3RoKSArIHZhbHVlXG5cdFx0XHRicmVha1xuXHRcdC8vIGdyaWQtdGVtcGxhdGUtKGNvbHVtbnN8cm93cylcblx0XHRjYXNlIDI1OTI6IGNhc2UgMzM2MDpcblx0XHRcdHJldHVybiBNUyArIHJlcGxhY2UodmFsdWUsICd0ZW1wbGF0ZS0nLCAnJykgKyB2YWx1ZVxuXHRcdC8vIGdyaWQtKHJvd3xjb2x1bW4pLXN0YXJ0XG5cdFx0Y2FzZSA0Mzg0OiBjYXNlIDM2MTY6XG5cdFx0XHRpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4uc29tZShmdW5jdGlvbiAoZWxlbWVudCwgaW5kZXgpIHsgcmV0dXJuIGxlbmd0aCA9IGluZGV4LCBtYXRjaChlbGVtZW50LnByb3BzLCAvZ3JpZC1cXHcrLWVuZC8pIH0pKSB7XG5cdFx0XHRcdHJldHVybiB+aW5kZXhvZih2YWx1ZSArIChjaGlsZHJlbiA9IGNoaWxkcmVuW2xlbmd0aF0udmFsdWUpLCAnc3BhbicpID8gdmFsdWUgOiAoTVMgKyByZXBsYWNlKHZhbHVlLCAnLXN0YXJ0JywgJycpICsgdmFsdWUgKyBNUyArICdncmlkLXJvdy1zcGFuOicgKyAofmluZGV4b2YoY2hpbGRyZW4sICdzcGFuJykgPyBtYXRjaChjaGlsZHJlbiwgL1xcZCsvKSA6ICttYXRjaChjaGlsZHJlbiwgL1xcZCsvKSAtICttYXRjaCh2YWx1ZSwgL1xcZCsvKSkgKyAnOycpXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gTVMgKyByZXBsYWNlKHZhbHVlLCAnLXN0YXJ0JywgJycpICsgdmFsdWVcblx0XHQvLyBncmlkLShyb3d8Y29sdW1uKS1lbmRcblx0XHRjYXNlIDQ4OTY6IGNhc2UgNDEyODpcblx0XHRcdHJldHVybiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4uc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbWF0Y2goZWxlbWVudC5wcm9wcywgL2dyaWQtXFx3Ky1zdGFydC8pIH0pKSA/IHZhbHVlIDogTVMgKyByZXBsYWNlKHJlcGxhY2UodmFsdWUsICctZW5kJywgJy1zcGFuJyksICdzcGFuICcsICcnKSArIHZhbHVlXG5cdFx0Ly8gKG1hcmdpbnxwYWRkaW5nKS1pbmxpbmUtKHN0YXJ0fGVuZClcblx0XHRjYXNlIDQwOTU6IGNhc2UgMzU4MzogY2FzZSA0MDY4OiBjYXNlIDI1MzI6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKyktaW5saW5lKC4rKS8sIFdFQktJVCArICckMSQyJykgKyB2YWx1ZVxuXHRcdC8vIChtaW58bWF4KT8od2lkdGh8aGVpZ2h0fGlubGluZS1zaXplfGJsb2NrLXNpemUpXG5cdFx0Y2FzZSA4MTE2OiBjYXNlIDcwNTk6IGNhc2UgNTc1MzogY2FzZSA1NTM1OlxuXHRcdGNhc2UgNTQ0NTogY2FzZSA1NzAxOiBjYXNlIDQ5MzM6IGNhc2UgNDY3Nzpcblx0XHRjYXNlIDU1MzM6IGNhc2UgNTc4OTogY2FzZSA1MDIxOiBjYXNlIDQ3NjU6XG5cdFx0XHQvLyBzdHJldGNoLCBtYXgtY29udGVudCwgbWluLWNvbnRlbnQsIGZpbGwtYXZhaWxhYmxlXG5cdFx0XHRpZiAoc3RybGVuKHZhbHVlKSAtIDEgLSBsZW5ndGggPiA2KVxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMSkpIHtcblx0XHRcdFx0XHQvLyAobSlheC1jb250ZW50LCAobSlpbi1jb250ZW50XG5cdFx0XHRcdFx0Y2FzZSAxMDk6XG5cdFx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0XHRpZiAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyA0KSAhPT0gNDUpXG5cdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gKGYpaWxsLWF2YWlsYWJsZSwgKGYpaXQtY29udGVudFxuXHRcdFx0XHRcdGNhc2UgMTAyOlxuXHRcdFx0XHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KSguKyktKFteXSspLywgJyQxJyArIFdFQktJVCArICckMi0kMycgKyAnJDEnICsgTU9aICsgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMykgPT0gMTA4ID8gJyQzJyA6ICckMi0kMycpKSArIHZhbHVlXG5cdFx0XHRcdFx0Ly8gKHMpdHJldGNoXG5cdFx0XHRcdFx0Y2FzZSAxMTU6XG5cdFx0XHRcdFx0XHRyZXR1cm4gfmluZGV4b2YodmFsdWUsICdzdHJldGNoJykgPyBwcmVmaXgocmVwbGFjZSh2YWx1ZSwgJ3N0cmV0Y2gnLCAnZmlsbC1hdmFpbGFibGUnKSwgbGVuZ3RoLCBjaGlsZHJlbikgKyB2YWx1ZSA6IHZhbHVlXG5cdFx0XHRcdH1cblx0XHRcdGJyZWFrXG5cdFx0Ly8gZ3JpZC0oY29sdW1ufHJvdylcblx0XHRjYXNlIDUxNTI6IGNhc2UgNTkyMDpcblx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rPyk6KFxcZCspKFxccypcXC9cXHMqKHNwYW4pP1xccyooXFxkKykpPyguKikvLCBmdW5jdGlvbiAoXywgYSwgYiwgYywgZCwgZSwgZikgeyByZXR1cm4gKE1TICsgYSArICc6JyArIGIgKyBmKSArIChjID8gKE1TICsgYSArICctc3BhbjonICsgKGQgPyBlIDogK2UgLSArYikpICsgZiA6ICcnKSArIHZhbHVlIH0pXG5cdFx0Ly8gcG9zaXRpb246IHN0aWNreVxuXHRcdGNhc2UgNDk0OTpcblx0XHRcdC8vIHN0aWNrKHkpP1xuXHRcdFx0aWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgNikgPT09IDEyMSlcblx0XHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsICc6JywgJzonICsgV0VCS0lUKSArIHZhbHVlXG5cdFx0XHRicmVha1xuXHRcdC8vIGRpc3BsYXk6IChmbGV4fGlubGluZS1mbGV4fGdyaWR8aW5saW5lLWdyaWQpXG5cdFx0Y2FzZSA2NDQ0OlxuXHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGNoYXJhdCh2YWx1ZSwgMTQpID09PSA0NSA/IDE4IDogMTEpKSB7XG5cdFx0XHRcdC8vIChpbmxpbmUtKT9mbGUoeClcblx0XHRcdFx0Y2FzZSAxMjA6XG5cdFx0XHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KShbXjtcXHMhXSspKDt8KFxccyspPyEuKyk/LywgJyQxJyArIFdFQktJVCArIChjaGFyYXQodmFsdWUsIDE0KSA9PT0gNDUgPyAnaW5saW5lLScgOiAnJykgKyAnYm94JDMnICsgJyQxJyArIFdFQktJVCArICckMiQzJyArICckMScgKyBNUyArICckMmJveCQzJykgKyB2YWx1ZVxuXHRcdFx0XHQvLyAoaW5saW5lLSk/Z3JpKGQpXG5cdFx0XHRcdGNhc2UgMTAwOlxuXHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAnOicsICc6JyArIE1TKSArIHZhbHVlXG5cdFx0XHR9XG5cdFx0XHRicmVha1xuXHRcdC8vIHNjcm9sbC1tYXJnaW4sIHNjcm9sbC1tYXJnaW4tKHRvcHxyaWdodHxib3R0b218bGVmdClcblx0XHRjYXNlIDU3MTk6IGNhc2UgMjY0NzogY2FzZSAyMTM1OiBjYXNlIDM5Mjc6IGNhc2UgMjM5MTpcblx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAnc2Nyb2xsLScsICdzY3JvbGwtc25hcC0nKSArIHZhbHVlXG5cdH1cblxuXHRyZXR1cm4gdmFsdWVcbn1cbiIsImltcG9ydCB7SU1QT1JULCBMQVlFUiwgQ09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT04sIEtFWUZSQU1FU30gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHtzdHJsZW59IGZyb20gJy4vVXRpbGl0eS5qcydcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHZhciBvdXRwdXQgPSAnJ1xuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspXG5cdFx0b3V0cHV0ICs9IGNhbGxiYWNrKGNoaWxkcmVuW2ldLCBpLCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0cmV0dXJuIG91dHB1dFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5IChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBMQVlFUjogaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKSBicmVha1xuXHRcdGNhc2UgSU1QT1JUOiBjYXNlIERFQ0xBUkFUSU9OOiByZXR1cm4gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnJldHVybiB8fCBlbGVtZW50LnZhbHVlXG5cdFx0Y2FzZSBDT01NRU5UOiByZXR1cm4gJydcblx0XHRjYXNlIEtFWUZSQU1FUzogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykgKyAnfSdcblx0XHRjYXNlIFJVTEVTRVQ6IGlmICghc3RybGVuKGVsZW1lbnQudmFsdWUgPSBlbGVtZW50LnByb3BzLmpvaW4oJywnKSkpIHJldHVybiAnJ1xuXHR9XG5cblx0cmV0dXJuIHN0cmxlbihjaGlsZHJlbiA9IHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykpID8gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnZhbHVlICsgJ3snICsgY2hpbGRyZW4gKyAnfScgOiAnJ1xufVxuIiwiaW1wb3J0IHtmcm9tLCB0cmltLCBjaGFyYXQsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIGFzc2lnbn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG5leHBvcnQgdmFyIGxpbmUgPSAxXG5leHBvcnQgdmFyIGNvbHVtbiA9IDFcbmV4cG9ydCB2YXIgbGVuZ3RoID0gMFxuZXhwb3J0IHZhciBwb3NpdGlvbiA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVyID0gMFxuZXhwb3J0IHZhciBjaGFyYWN0ZXJzID0gJydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsfSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSBwcm9wc1xuICogQHBhcmFtIHtvYmplY3RbXSB8IHN0cmluZ30gY2hpbGRyZW5cbiAqIEBwYXJhbSB7b2JqZWN0W119IHNpYmxpbmdzXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub2RlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCwgc2libGluZ3MpIHtcblx0cmV0dXJuIHt2YWx1ZTogdmFsdWUsIHJvb3Q6IHJvb3QsIHBhcmVudDogcGFyZW50LCB0eXBlOiB0eXBlLCBwcm9wczogcHJvcHMsIGNoaWxkcmVuOiBjaGlsZHJlbiwgbGluZTogbGluZSwgY29sdW1uOiBjb2x1bW4sIGxlbmd0aDogbGVuZ3RoLCByZXR1cm46ICcnLCBzaWJsaW5nczogc2libGluZ3N9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weSAocm9vdCwgcHJvcHMpIHtcblx0cmV0dXJuIGFzc2lnbihub2RlKCcnLCBudWxsLCBudWxsLCAnJywgbnVsbCwgbnVsbCwgMCwgcm9vdC5zaWJsaW5ncyksIHJvb3QsIHtsZW5ndGg6IC1yb290Lmxlbmd0aH0sIHByb3BzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaWZ0IChyb290KSB7XG5cdHdoaWxlIChyb290LnJvb3QpXG5cdFx0cm9vdCA9IGNvcHkocm9vdC5yb290LCB7Y2hpbGRyZW46IFtyb290XX0pXG5cblx0YXBwZW5kKHJvb3QsIHJvb3Quc2libGluZ3MpXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhciAoKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmV2ICgpIHtcblx0Y2hhcmFjdGVyID0gcG9zaXRpb24gPiAwID8gY2hhcmF0KGNoYXJhY3RlcnMsIC0tcG9zaXRpb24pIDogMFxuXG5cdGlmIChjb2x1bW4tLSwgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lLS1cblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dCAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uIDwgbGVuZ3RoID8gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKyspIDogMFxuXG5cdGlmIChjb2x1bW4rKywgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lKytcblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVlayAoKSB7XG5cdHJldHVybiBjaGFyYXQoY2hhcmFjdGVycywgcG9zaXRpb24pXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FyZXQgKCkge1xuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlIChiZWdpbiwgZW5kKSB7XG5cdHJldHVybiBzdWJzdHIoY2hhcmFjdGVycywgYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW4gKHR5cGUpIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Ly8gXFwwIFxcdCBcXG4gXFxyIFxccyB3aGl0ZXNwYWNlIHRva2VuXG5cdFx0Y2FzZSAwOiBjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRyZXR1cm4gNVxuXHRcdC8vICEgKyAsIC8gPiBAIH4gaXNvbGF0ZSB0b2tlblxuXHRcdGNhc2UgMzM6IGNhc2UgNDM6IGNhc2UgNDQ6IGNhc2UgNDc6IGNhc2UgNjI6IGNhc2UgNjQ6IGNhc2UgMTI2OlxuXHRcdC8vIDsgeyB9IGJyZWFrcG9pbnQgdG9rZW5cblx0XHRjYXNlIDU5OiBjYXNlIDEyMzogY2FzZSAxMjU6XG5cdFx0XHRyZXR1cm4gNFxuXHRcdC8vIDogYWNjb21wYW5pZWQgdG9rZW5cblx0XHRjYXNlIDU4OlxuXHRcdFx0cmV0dXJuIDNcblx0XHQvLyBcIiAnICggWyBvcGVuaW5nIGRlbGltaXQgdG9rZW5cblx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDQwOiBjYXNlIDkxOlxuXHRcdFx0cmV0dXJuIDJcblx0XHQvLyApIF0gY2xvc2luZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSA0MTogY2FzZSA5Mzpcblx0XHRcdHJldHVybiAxXG5cdH1cblxuXHRyZXR1cm4gMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGxpbmUgPSBjb2x1bW4gPSAxLCBsZW5ndGggPSBzdHJsZW4oY2hhcmFjdGVycyA9IHZhbHVlKSwgcG9zaXRpb24gPSAwLCBbXVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGNoYXJhY3RlcnMgPSAnJywgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdCAodHlwZSkge1xuXHRyZXR1cm4gdHJpbShzbGljZShwb3NpdGlvbiAtIDEsIGRlbGltaXRlcih0eXBlID09PSA5MSA/IHR5cGUgKyAyIDogdHlwZSA9PT0gNDAgPyB0eXBlICsgMSA6IHR5cGUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHRva2VuaXplcihhbGxvYyh2YWx1ZSkpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aGl0ZXNwYWNlICh0eXBlKSB7XG5cdHdoaWxlIChjaGFyYWN0ZXIgPSBwZWVrKCkpXG5cdFx0aWYgKGNoYXJhY3RlciA8IDMzKVxuXHRcdFx0bmV4dCgpXG5cdFx0ZWxzZVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gdG9rZW4odHlwZSkgPiAyIHx8IHRva2VuKGNoYXJhY3RlcikgPiAzID8gJycgOiAnICdcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGlsZHJlblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZXIgKGNoaWxkcmVuKSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0c3dpdGNoICh0b2tlbihjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjYXNlIDA6IGFwcGVuZChpZGVudGlmaWVyKHBvc2l0aW9uIC0gMSksIGNoaWxkcmVuKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAyOiBhcHBlbmQoZGVsaW1pdChjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGRlZmF1bHQ6IGFwcGVuZChmcm9tKGNoYXJhY3RlciksIGNoaWxkcmVuKVxuXHRcdH1cblxuXHRyZXR1cm4gY2hpbGRyZW5cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBpbmcgKGluZGV4LCBjb3VudCkge1xuXHR3aGlsZSAoLS1jb3VudCAmJiBuZXh0KCkpXG5cdFx0Ly8gbm90IDAtOSBBLUYgYS1mXG5cdFx0aWYgKGNoYXJhY3RlciA8IDQ4IHx8IGNoYXJhY3RlciA+IDEwMiB8fCAoY2hhcmFjdGVyID4gNTcgJiYgY2hhcmFjdGVyIDwgNjUpIHx8IChjaGFyYWN0ZXIgPiA3MCAmJiBjaGFyYWN0ZXIgPCA5NykpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiBzbGljZShpbmRleCwgY2FyZXQoKSArIChjb3VudCA8IDYgJiYgcGVlaygpID09IDMyICYmIG5leHQoKSA9PSAzMikpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXRlciAodHlwZSkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHQvLyBdICkgXCIgJ1xuXHRcdFx0Y2FzZSB0eXBlOlxuXHRcdFx0XHRyZXR1cm4gcG9zaXRpb25cblx0XHRcdC8vIFwiICdcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6XG5cdFx0XHRcdGlmICh0eXBlICE9PSAzNCAmJiB0eXBlICE9PSAzOSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHR5cGUgPT09IDQxKVxuXHRcdFx0XHRcdGRlbGltaXRlcih0eXBlKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdG5leHQoKVxuXHRcdFx0XHRicmVha1xuXHRcdH1cblxuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ZXIgKHR5cGUsIGluZGV4KSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0Ly8gLy9cblx0XHRpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDcgKyAxMClcblx0XHRcdGJyZWFrXG5cdFx0Ly8gLypcblx0XHRlbHNlIGlmICh0eXBlICsgY2hhcmFjdGVyID09PSA0MiArIDQyICYmIHBlZWsoKSA9PT0gNDcpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiAnLyonICsgc2xpY2UoaW5kZXgsIHBvc2l0aW9uIC0gMSkgKyAnKicgKyBmcm9tKHR5cGUgPT09IDQ3ID8gdHlwZSA6IG5leHQoKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXIgKGluZGV4KSB7XG5cdHdoaWxlICghdG9rZW4ocGVlaygpKSlcblx0XHRuZXh0KClcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIHBvc2l0aW9uKVxufVxuIiwiLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IHZhciBhYnMgPSBNYXRoLmFic1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgdmFyIGZyb20gPSBTdHJpbmcuZnJvbUNoYXJDb2RlXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCB2YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaCAodmFsdWUsIGxlbmd0aCkge1xuXHRyZXR1cm4gY2hhcmF0KHZhbHVlLCAwKSBeIDQ1ID8gKCgoKCgoKGxlbmd0aCA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMCkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAxKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDIpKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMykgOiAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICogQHJldHVybiB7c3RyaW5nP31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoICh2YWx1ZSwgcGF0dGVybikge1xuXHRyZXR1cm4gKHZhbHVlID0gcGF0dGVybi5leGVjKHZhbHVlKSkgPyB2YWx1ZVswXSA6IHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKX0gcGF0dGVyblxuICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlICh2YWx1ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcblx0cmV0dXJuIHZhbHVlLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleG9mICh2YWx1ZSwgc2VhcmNoKSB7XG5cdHJldHVybiB2YWx1ZS5pbmRleE9mKHNlYXJjaClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhcmF0ICh2YWx1ZSwgaW5kZXgpIHtcblx0cmV0dXJuIHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpIHwgMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdHIgKHZhbHVlLCBiZWdpbiwgZW5kKSB7XG5cdHJldHVybiB2YWx1ZS5zbGljZShiZWdpbiwgZW5kKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RybGVuICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpemVvZiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHthbnlbXX0gYXJyYXlcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZCAodmFsdWUsIGFycmF5KSB7XG5cdHJldHVybiBhcnJheS5wdXNoKHZhbHVlKSwgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUgKGFycmF5LCBjYWxsYmFjaykge1xuXHRyZXR1cm4gYXJyYXkubWFwKGNhbGxiYWNrKS5qb2luKCcnKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW119IGFycmF5XG4gKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIgKGFycmF5LCBwYXR0ZXJuKSB7XG5cdHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiAhbWF0Y2godmFsdWUsIHBhdHRlcm4pIH0pXG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cblxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59XG5cbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcbiAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICB9XG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICB0W3BdID0gc1twXTtcbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICB9XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcbiAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XG4gIHZhciBraW5kID0gY29udGV4dEluLmtpbmQsIGtleSA9IGtpbmQgPT09IFwiZ2V0dGVyXCIgPyBcImdldFwiIDoga2luZCA9PT0gXCJzZXR0ZXJcIiA/IFwic2V0XCIgOiBcInZhbHVlXCI7XG4gIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xuICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcbiAgdmFyIF8sIGRvbmUgPSBmYWxzZTtcbiAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBjb250ZXh0ID0ge307XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbikgY29udGV4dFtwXSA9IHAgPT09IFwiYWNjZXNzXCIgPyB7fSA6IGNvbnRleHRJbltwXTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcbiAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gXCJhY2Nlc3NvclwiID8geyBnZXQ6IGRlc2NyaXB0b3IuZ2V0LCBzZXQ6IGRlc2NyaXB0b3Iuc2V0IH0gOiBkZXNjcmlwdG9yW2tleV0sIGNvbnRleHQpO1xuICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuaW5pdCkpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XG4gICAgICAgICAgaWYgKGtpbmQgPT09IFwiZmllbGRcIikgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xuICAgICAgfVxuICB9XG4gIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcbiAgZG9uZSA9IHRydWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xuICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcbiAgfVxuICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgbmFtZSA9IG5hbWUuZGVzY3JpcHRpb24gPyBcIltcIi5jb25jYXQobmFtZS5kZXNjcmlwdGlvbiwgXCJdXCIpIDogXCJcIjtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgb1trMl0gPSBtW2tdO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xuICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcbiAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XG4gIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXG4gICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICByW2tdID0gYVtqXTtcbiAgcmV0dXJuIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlO1xuICAgIGlmIChhc3luYykge1xuICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcbiAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xuICB9XG4gIGVsc2UgaWYgKGFzeW5jKSB7XG4gICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XG4gIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcbiAgZnVuY3Rpb24gZmFpbChlKSB7XG4gICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xuICAgIGVudi5oYXNFcnJvciA9IHRydWU7XG4gIH1cbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICB3aGlsZSAoZW52LnN0YWNrLmxlbmd0aCkge1xuICAgICAgdmFyIHJlYyA9IGVudi5zdGFjay5wb3AoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWMuZGlzcG9zZSAmJiByZWMuZGlzcG9zZS5jYWxsKHJlYy52YWx1ZSk7XG4gICAgICAgIGlmIChyZWMuYXN5bmMpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgIGZhaWwoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIF9fZXh0ZW5kcyxcbiAgX19hc3NpZ24sXG4gIF9fcmVzdCxcbiAgX19kZWNvcmF0ZSxcbiAgX19wYXJhbSxcbiAgX19tZXRhZGF0YSxcbiAgX19hd2FpdGVyLFxuICBfX2dlbmVyYXRvcixcbiAgX19jcmVhdGVCaW5kaW5nLFxuICBfX2V4cG9ydFN0YXIsXG4gIF9fdmFsdWVzLFxuICBfX3JlYWQsXG4gIF9fc3ByZWFkLFxuICBfX3NwcmVhZEFycmF5cyxcbiAgX19zcHJlYWRBcnJheSxcbiAgX19hd2FpdCxcbiAgX19hc3luY0dlbmVyYXRvcixcbiAgX19hc3luY0RlbGVnYXRvcixcbiAgX19hc3luY1ZhbHVlcyxcbiAgX19tYWtlVGVtcGxhdGVPYmplY3QsXG4gIF9faW1wb3J0U3RhcixcbiAgX19pbXBvcnREZWZhdWx0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXG4gIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxuICBfX2Rpc3Bvc2VSZXNvdXJjZXMsXG59O1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0bG9hZGVkOiBmYWxzZSxcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG5cdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5ubWQgPSAobW9kdWxlKSA9PiB7XG5cdG1vZHVsZS5wYXRocyA9IFtdO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdHJldHVybiBtb2R1bGU7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiIiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9zcmMvaW5kZXgudHNcIik7XG4iLCIiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
|