1 line
244 KiB
Plaintext
1 line
244 KiB
Plaintext
{"version":3,"sources":["modules/scrollHandler.js","../node_modules/spacetime/builds/spacetime.mjs","modules/clock.js","modules/countdown.js","index.js","../node_modules/parcel-bundler/src/builtins/hmr-runtime.js"],"names":["window","document","sideTitles","querySelectorAll","handleScroll","scrollY","forEach","title","classList","remove","add","addEventListener","createCommonjsModule","fn","module","exports","getCjsExportFromNamespace","n","fns","isLeapYear","year","isDate","d","Object","prototype","toString","call","isNaN","valueOf","isArray","input","isObject","zeroPad","str","len","arguments","length","undefined","pad","Array","join","titleCase","toUpperCase","substr","ordinal","i","j","k","toCardinal","String","replace","parseInt","normalize","toLowerCase","trim","getEpoch","tmp","getTime","epoch","beADate","s","clone","set","formatTimezone","offset","delimiter","absOffset","Math","abs","sign","concat","fns_1","fns_2","fns_3","fns_4","fns_5","fns_6","fns_7","fns_8","fns_9","fns_10","fns_11","fns_12","serialize","getMonth","getDate","getHours","shouldChange","start","end","defaultOffset","Date","bias","getTimezoneOffset","shift","current","summerTime","quickOffset","zones","timezones","obj","tz","console","warn","dst","jul","dec","hem","split","inSummer","quick","_build","_build$1","freeze","__proto__","_prefixes","data","all","keys","Number","names","before","num","name","unpack","fallbackTZ","safeIntl","Intl","DateTimeFormat","format","resolvedOptions","timezone","timeZone","guessTz","guessTz_1","isOffset","isNumber","utcOffset","gmtOffset","toIana","parseOffset","m","match","parseOffset_1","local","cities","reduce","h","city","lookupTz","hasOwnProperty","test","id","Error","find","o","millisecond","second","minute","hour","day","date","month","week","milliseconds","walk","unit","previous","startUnit","original","diff","halfStep","units","valid","walkTo","getFullYear","seconds","wants","old","silent","walk_1","shortMonths","longMonths","buildMapping","sep","_i","months","short","long","mapping","i18n","parseOffset$1","parseFloat","parseOffset_1$1","parseTime","arr","startOf","ampm","_h","parseTime_1","monthLengths","monthLengths_1","hasDate","max","hasDate_1","months$1","parseYear","today","strFmt","reg","parse","givenTz","options","british","_today","strParse","getNow","now","dates","tonight","tomorrow","yesterday","subtract","christmas","newYears","namedDates","minimumEpoch","defaults","handleArray","order","handleObject","assign","parseInput","res","isValid","_res","shortDays","longDays","days","isoOffset","isNegative","floor","ceil","_offset","dayName","dayShort","dayNumber","dayOrdinal","dayPad","dateOrdinal","datePad","monthName","monthShort","monthNumber","monthOrdinal","monthPad","isoMonth","yearShort","isoYear","time","time24","hour24","hour12","hourPad","hour24Pad","minutePad","secondPad","quarter","season","era","json","numeric","numericUs","numericUk","mmDd","iso","h24","ms","isoShort","isoUtc","toISOString","nice","niceYear","niceDay","niceFull","aliases","mdy","dmy","ymd","printFormat","out","indexOf","sections","_","fmt","format_1","G","GG","GGG","GGGG","y","yy","yyy","yyyy","yyyyy","Q","QQ","QQQ","QQQQ","M","MM","MMM","MMMM","w","ww","dd","D","dayOfYear","DD","DDD","E","EE","EEE","EEEE","EEEEE","e","ee","eee","eeee","eeeee","a","aa","aaa","aaaa","h12","hh","H","HH","mm","_s","ss","A","z","zz","zzz","zzzz","Z","ZZ","ZZZ","ZZZZ","addAlias","_char","to","toName","unixFmt","chars","quoteOn","push","txt","c","unixFmt_1","units$1","doUnit","endOf","duration","percent","toFixed","progress","progress_1","nearest","prog","nearest_1","climb","b","isBefore","isAfter","diffOne","one","fastYear","years","msDiff","minutes","hours","weeks","waterfall","reverseDiff","main","reversed","diff$1","qualifiers","almost","over","getDiff","later","earlier","isSame","u","pluralize","value","slice","since","isNow","every","rounded","qualified","precise","englishValues","englishValue","nextUnit","nextValue","splice","since_1","seasons","north","south","quarters","units$2","quarterhour","_weekStart","q","hemisphere","decade","century","startOf_1","isDay","next","result","every_1","parseDst","epochShift","found","hasDst","Boolean","default_offset","change","back","summer","winter","isDST","timezone_1","units$3","methods","input$1","hasDST","leapYear","last","goto","isAwake","isAsleep","log","logYear","_this","debug","from","fromNow","weekStart","inDST","round","each","methods_1","isLeapYear$1","validate","confirm","want","methods$1","getMilliseconds","getSeconds","getMinutes","hourFloat","_minute","_hour","which","dayTime","times","morning","breakfast","noon","lunch","afternoon","evening","dinner","night","midnight","_01Time","methods$2","getDay","_02Date","clearMinutes","methods$3","sum","setDate","setFullYear","setHours","setMinutes","setMonth","toAdd","minus","thisOne","skipWeeks","_month","millenium","_03Year","methods$4","addMethods","Space","query","isLeapYear$2","getMonthLength","rollMonth","_years","rollDaysDown","rollDaysUp","_model","daysBack","order$1","keep","dstAwareUnits","keepDate","addMethods$1","SpaceTime","_sum","plus","print","addMethods$2","same","addMethods$3","isEqual","isBetween","isInclusive","startEpoch","endEpoch","compare","addMethods$4","defineProperty","get","toLocalDate","spacetime","whereIts","startHour","endHour","tzs","filter","whereIts_1","_version","main$1","setToday","extend","version","plugin","src","clockContainer","querySelector","setTime","innerHTML","clock","setInterval","banner","getElementById","cdTime","targetDate","countdownTimer","difference","remaining","parts","map","part","innerText","app","OVERLAY_ID","OldModule","bundle","Module","moduleName","hot","hotData","_acceptCallbacks","_disposeCallbacks","accept","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","type","handled","assets","asset","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","generated","js","clear","hmrApply","v","hmrAcceptRun","reload","close","onclose","removeErrorOverlay","error","message","stack","overlay","createErrorOverlay","body","appendChild","createElement","stackTrace","getParents","modules","parents","dep","Function","deps","cached","cache","some","cb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAAe,oBAAM;AACnB,MAAIA,MAAM,IAAIC,QAAd,EAAwB;AACtB,QAAMC,UAAU,GAAGD,QAAQ,CAACE,gBAAT,CAA0B,aAA1B,CAAnB;;AAEA,QAAMC,YAAY,GAAG,SAASA,YAAT,GAAwB;AAC3C,UAAIJ,MAAM,CAACK,OAAP,GAAiB,GAArB,EAA0B;AACxBH,QAAAA,UAAU,CAACI,OAAX,CAAmB,UAACC,KAAD;AAAA,iBAAWA,KAAK,CAACC,SAAN,CAAgBC,MAAhB,CAAuB,QAAvB,CAAX;AAAA,SAAnB;AACD,OAFD,MAEO;AACLP,QAAAA,UAAU,CAACI,OAAX,CAAmB,UAACC,KAAD;AAAA,iBAAWA,KAAK,CAACC,SAAN,CAAgBE,GAAhB,CAAoB,QAApB,CAAX;AAAA,SAAnB;AACD;AACF,KAND;;AAQAN,IAAAA,YAAY;AACZJ,IAAAA,MAAM,CAACW,gBAAP,CAAwB,QAAxB,EAAkCP,YAAlC;AACD;AACF;;;;;;;;;;;ACfD;AACA,SAASQ,oBAAT,CAA8BC,EAA9B,EAAkCC,MAAlC,EAA0C;AACzC,SAAOA,MAAM,GAAG;AAAEC,IAAAA,OAAO,EAAE;AAAX,GAAT,EAA0BF,EAAE,CAACC,MAAD,EAASA,MAAM,CAACC,OAAhB,CAA5B,EAAsDD,MAAM,CAACC,OAApE;AACA;;AAED,SAASC,yBAAT,CAAoCC,CAApC,EAAuC;AACtC,SAAOA,CAAC,IAAIA,CAAC,CAAC,SAAD,CAAN,IAAqBA,CAA5B;AACA;;AAED,IAAIC,GAAG,GAAGN,oBAAoB,CAAC,UAAUE,MAAV,EAAkBC,OAAlB,EAA2B;AACxD;AACAA,EAAAA,OAAO,CAACI,UAAR,GAAqB,UAAUC,IAAV,EAAgB;AACnC,WAAOA,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkBA,IAAI,GAAG,GAAP,KAAe,CAAjC,IAAsCA,IAAI,GAAG,GAAP,KAAe,CAA5D;AACD,GAFD,CAFwD,CAIrD;;;AAGHL,EAAAA,OAAO,CAACM,MAAR,GAAiB,UAAUC,CAAV,EAAa;AAC5B,WAAOC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BJ,CAA/B,MAAsC,eAAtC,IAAyD,CAACK,KAAK,CAACL,CAAC,CAACM,OAAF,EAAD,CAAtE;AACD,GAFD;;AAIAb,EAAAA,OAAO,CAACc,OAAR,GAAkB,UAAUC,KAAV,EAAiB;AACjC,WAAOP,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BI,KAA/B,MAA0C,gBAAjD;AACD,GAFD;;AAIAf,EAAAA,OAAO,CAACgB,QAAR,GAAmB,UAAUD,KAAV,EAAiB;AAClC,WAAOP,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BI,KAA/B,MAA0C,iBAAjD;AACD,GAFD;;AAIAf,EAAAA,OAAO,CAACiB,OAAR,GAAkB,UAAUC,GAAV,EAAe;AAC/B,QAAIC,GAAG,GAAGC,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,CAA9E;AACA,QAAIG,GAAG,GAAG,GAAV;AACAL,IAAAA,GAAG,GAAGA,GAAG,GAAG,EAAZ;AACA,WAAOA,GAAG,CAACG,MAAJ,IAAcF,GAAd,GAAoBD,GAApB,GAA0B,IAAIM,KAAJ,CAAUL,GAAG,GAAGD,GAAG,CAACG,MAAV,GAAmB,CAA7B,EAAgCI,IAAhC,CAAqCF,GAArC,IAA4CL,GAA7E;AACD,GALD;;AAOAlB,EAAAA,OAAO,CAAC0B,SAAR,GAAoB,UAAUR,GAAV,EAAe;AACjC,QAAI,CAACA,GAAL,EAAU;AACR,aAAO,EAAP;AACD;;AAED,WAAOA,GAAG,CAAC,CAAD,CAAH,CAAOS,WAAP,KAAuBT,GAAG,CAACU,MAAJ,CAAW,CAAX,CAA9B;AACD,GAND;;AAQA5B,EAAAA,OAAO,CAAC6B,OAAR,GAAkB,UAAUC,CAAV,EAAa;AAC7B,QAAIC,CAAC,GAAGD,CAAC,GAAG,EAAZ;AACA,QAAIE,CAAC,GAAGF,CAAC,GAAG,GAAZ;;AAEA,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;AACvB,aAAOF,CAAC,GAAG,IAAX;AACD;;AAED,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;AACvB,aAAOF,CAAC,GAAG,IAAX;AACD;;AAED,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;AACvB,aAAOF,CAAC,GAAG,IAAX;AACD;;AAED,WAAOA,CAAC,GAAG,IAAX;AACD,GAjBD,CAlCwD,CAmDrD;;;AAGH9B,EAAAA,OAAO,CAACiC,UAAR,GAAqB,UAAUf,GAAV,EAAe;AAClCA,IAAAA,GAAG,GAAGgB,MAAM,CAAChB,GAAD,CAAZ;AACAA,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,wBAAZ,EAAsC,IAAtC,CAAN;AACA,WAAOC,QAAQ,CAAClB,GAAD,EAAM,EAAN,CAAf;AACD,GAJD,CAtDwD,CA0DrD;;;AAGHlB,EAAAA,OAAO,CAACqC,SAAR,GAAoB,YAAY;AAC9B,QAAInB,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;AACAF,IAAAA,GAAG,GAAGA,GAAG,CAACoB,WAAJ,GAAkBC,IAAlB,EAAN;AACArB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,MAAZ,EAAoB,GAApB,CAAN,CAH8B,CAGE;;AAEhCjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;AACAjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;;AAEA,QAAIjB,GAAG,KAAK,KAAZ,EAAmB;AACjB,aAAO,MAAP;AACD;;AAED,WAAOA,GAAP;AACD,GAbD;;AAeAlB,EAAAA,OAAO,CAACwC,QAAR,GAAmB,UAAUC,GAAV,EAAe;AAChC;AACA,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAC3B,aAAOA,GAAP;AACD,KAJ+B,CAI9B;;;AAGF,QAAIzC,OAAO,CAACM,MAAR,CAAemC,GAAf,CAAJ,EAAyB;AACvB,aAAOA,GAAG,CAACC,OAAJ,EAAP;AACD;;AAED,QAAID,GAAG,CAACE,KAAR,EAAe;AACb,aAAOF,GAAG,CAACE,KAAX;AACD;;AAED,WAAO,IAAP;AACD,GAhBD,CA5EwD,CA4FrD;;;AAGH3C,EAAAA,OAAO,CAAC4C,OAAR,GAAkB,UAAUrC,CAAV,EAAasC,CAAb,EAAgB;AAChC,QAAI7C,OAAO,CAACgB,QAAR,CAAiBT,CAAjB,MAAwB,KAA5B,EAAmC;AACjC,aAAOsC,CAAC,CAACC,KAAF,GAAUC,GAAV,CAAcxC,CAAd,CAAP;AACD;;AAED,WAAOA,CAAP;AACD,GAND;;AAQAP,EAAAA,OAAO,CAACgD,cAAR,GAAyB,UAAUC,MAAV,EAAkB;AACzC,QAAIC,SAAS,GAAG9B,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAApF;AACA,QAAI+B,SAAS,GAAGC,IAAI,CAACC,GAAL,CAASJ,MAAT,CAAhB;AACA,QAAIK,IAAI,GAAGL,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,GAA9B;AACA,WAAO,GAAGM,MAAH,CAAUD,IAAV,EAAgBC,MAAhB,CAAuBvD,OAAO,CAACiB,OAAR,CAAgBkC,SAAhB,CAAvB,EAAmDI,MAAnD,CAA0DL,SAA1D,EAAqE,IAArE,CAAP;AACD,GALD;AAMD,CA7G6B,CAA9B;AA8GA,IAAIM,KAAK,GAAGrD,GAAG,CAACC,UAAhB;AACA,IAAIqD,KAAK,GAAGtD,GAAG,CAACG,MAAhB;AACA,IAAIoD,KAAK,GAAGvD,GAAG,CAACW,OAAhB;AACA,IAAI6C,KAAK,GAAGxD,GAAG,CAACa,QAAhB;AACA,IAAI4C,KAAK,GAAGzD,GAAG,CAACc,OAAhB;AACA,IAAI4C,KAAK,GAAG1D,GAAG,CAACuB,SAAhB;AACA,IAAIoC,KAAK,GAAG3D,GAAG,CAAC0B,OAAhB;AACA,IAAIkC,KAAK,GAAG5D,GAAG,CAAC8B,UAAhB;AACA,IAAI+B,KAAK,GAAG7D,GAAG,CAACkC,SAAhB;AACA,IAAI4B,MAAM,GAAG9D,GAAG,CAACqC,QAAjB;AACA,IAAI0B,MAAM,GAAG/D,GAAG,CAACyC,OAAjB;AACA,IAAIuB,MAAM,GAAGhE,GAAG,CAAC6C,cAAjB;AAEA,IAAI/B,OAAO,GAAGd,GAAG,CAACc,OAAlB;;AAEA,IAAImD,SAAS,GAAG,SAASA,SAAT,CAAmB7D,CAAnB,EAAsB;AACpC,SAAOU,OAAO,CAACV,CAAC,CAAC8D,QAAF,KAAe,CAAhB,CAAP,GAA4B,GAA5B,GAAkCpD,OAAO,CAACV,CAAC,CAAC+D,OAAF,EAAD,CAAzC,GAAyD,GAAzD,GAA+DrD,OAAO,CAACV,CAAC,CAACgE,QAAF,EAAD,CAA7E;AACD,CAFD,EAEG;AACH;;;AAGA,IAAIC,YAAY,GAAG,SAASA,YAAT,CAAsB7B,KAAtB,EAA6B8B,KAA7B,EAAoCC,GAApC,EAAyCC,aAAzC,EAAwD;AACzE;AACA;AACA;AACA,MAAIpE,CAAC,GAAG,IAAIqE,IAAJ,CAASjC,KAAT,CAAR,CAJyE,CAIhD;;AAEzB,MAAIkC,IAAI,GAAGtE,CAAC,CAACuE,iBAAF,MAAyB,CAApC;AACA,MAAIC,KAAK,GAAGF,IAAI,GAAGF,aAAa,GAAG,EAAnC,CAPyE,CAOlC;;AAEvCI,EAAAA,KAAK,GAAGA,KAAK,GAAG,EAAR,GAAa,IAArB,CATyE,CAS9C;;AAE3BxE,EAAAA,CAAC,GAAG,IAAIqE,IAAJ,CAASjC,KAAK,GAAGoC,KAAjB,CAAJ;AACA,MAAIC,OAAO,GAAGZ,SAAS,CAAC7D,CAAD,CAAvB,CAZyE,CAY7C;;AAE5B,MAAIyE,OAAO,IAAIP,KAAf,EAAsB;AACpB;AACA,QAAIO,OAAO,GAAGN,GAAd,EAAmB;AACjB,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD,CAtBD;;AAwBA,IAAIO,UAAU,GAAGT,YAAjB,EAEA;;AAEA,IAAIU,WAAW,GAAG,SAASA,WAAT,CAAqBrC,CAArB,EAAwB;AACxC,MAAIsC,KAAK,GAAGtC,CAAC,CAACuC,SAAd;AACA,MAAIC,GAAG,GAAGF,KAAK,CAACtC,CAAC,CAACyC,EAAH,CAAf;;AAEA,MAAID,GAAG,KAAK/D,SAAZ,EAAuB;AACrBiE,IAAAA,OAAO,CAACC,IAAR,CAAa,qCAAqC3C,CAAC,CAACyC,EAApD;AACA,WAAO,CAAP;AACD;;AAED,MAAID,GAAG,CAACI,GAAJ,KAAYnE,SAAhB,EAA2B;AACzB,WAAO+D,GAAG,CAACpC,MAAX;AACD,GAXuC,CAWtC;;;AAGF,MAAIyC,GAAG,GAAGL,GAAG,CAACpC,MAAd;AACA,MAAI0C,GAAG,GAAGN,GAAG,CAACpC,MAAJ,GAAa,CAAvB,CAfwC,CAed;;AAE1B,MAAIoC,GAAG,CAACO,GAAJ,KAAY,GAAhB,EAAqB;AACnBD,IAAAA,GAAG,GAAGD,GAAG,GAAG,CAAZ;AACD;;AAED,MAAIG,KAAK,GAAGR,GAAG,CAACI,GAAJ,CAAQI,KAAR,CAAc,IAAd,CAAZ;AACA,MAAIC,QAAQ,GAAGb,UAAU,CAACpC,CAAC,CAACF,KAAH,EAAUkD,KAAK,CAAC,CAAD,CAAf,EAAoBA,KAAK,CAAC,CAAD,CAAzB,EAA8BH,GAA9B,CAAzB;;AAEA,MAAII,QAAQ,KAAK,IAAjB,EAAuB;AACrB,WAAOJ,GAAP;AACD;;AAED,SAAOC,GAAP;AACD,CA7BD;;AA+BA,IAAII,KAAK,GAAGb,WAAZ;AAEA,IAAIc,MAAM,GAAG;AACZ,SAAO,mBADK;AAEZ,SAAO,yDAFK;AAGZ,8BAA4B,+CAHhB;AAIZ,WAAS,kBAJG;AAKZ,SAAO,+DALK;AAMZ,4BAA0B,cANd;AAOZ,SAAO,mKAPK;AAQZ,YAAU,SARE;AASZ,SAAO,gCATK;AAUZ,SAAO,2IAVK;AAWZ,SAAO,WAXK;AAYZ,SAAO,sGAZK;AAaZ,WAAS,4BAbG;AAcZ,SAAO,uBAdK;AAeZ,SAAO,uIAfK;AAgBZ,YAAU,wBAhBE;AAiBZ,WAAS,gCAjBG;AAkBZ,SAAO,WAlBK;AAmBZ,SAAO,4HAnBK;AAoBZ,8BAA4B,UApBhB;AAqBZ,WAAS,SArBG;AAsBZ,SAAO,yBAtBK;AAuBZ,4BAA0B,+IAvBd;AAwBZ,4BAA0B,uBAxBd;AAyBZ,4BAA0B,UAzBd;AA0BZ,4BAA0B,wBA1Bd;AA2BZ,4BAA0B,iBA3Bd;AA4BZ,4BAA0B,SA5Bd;AA6BZ,4BAA0B,YA7Bd;AA8BZ,SAAO,uOA9BK;AA+BZ,4BAA0B,UA/Bd;AAgCZ,SAAO,sFAhCK;AAiCZ,4BAA0B,oWAjCd;AAkCZ,SAAO,4EAlCK;AAmCZ,4BAA0B,YAnCd;AAoCZ,SAAO,qBApCK;AAqCZ,4BAA0B,yBArCd;AAsCZ,4BAA0B,4GAtCd;AAuCZ,SAAO,kHAvCK;AAwCZ,UAAQ,eAxCI;AAyCZ,6BAA2B,SAzCf;AA0CZ,6BAA2B,cA1Cf;AA2CZ,UAAQ,yBA3CI;AA4CZ,6BAA2B,sCA5Cf;AA6CZ,6BAA2B,SA7Cf;AA8CZ,UAAQ,8GA9CI;AA+CZ,gCAA8B,YA/ClB;AAgDZ,UAAQ,8BAhDI;AAiDZ,UAAQ,uFAjDI;AAkDZ,+BAA6B,YAlDjB;AAmDZ,6BAA2B,qFAnDf;AAoDZ,UAAQ,sDApDI;AAqDZ,UAAQ,8FArDI;AAsDZ,+BAA6B,mBAtDjB;AAuDZ,4BAA0B,yBAvDd;AAwDZ,SAAO,+PAxDK;AAyDZ,6BAA2B,eAzDf;AA0DZ,UAAQ,YA1DI;AA2DZ,YAAU,cA3DE;AA4DZ,6BAA2B,4DA5Df;AA6DZ,UAAQ,aA7DI;AA8DZ,6BAA2B,oHA9Df;AA+DZ,UAAQ,iDA/DI;AAgEZ,6BAA2B,0BAhEf;AAiEZ,6BAA2B,mCAjEf;AAkEZ,6BAA2B,oGAlEf;AAmEZ,UAAQ,kJAnEI;AAoEZ,UAAQ,4BApEI;AAqEZ,6BAA2B,gEArEf;AAsEZ,6BAA2B,gBAtEf;AAuEZ,6BAA2B,0GAvEf;AAwEZ,UAAQ,8GAxEI;AAyEZ,6BAA2B,WAzEf;AA0EZ,6BAA2B,0BA1Ef;AA2EZ,6BAA2B,YA3Ef;AA4EZ,6BAA2B,yBA5Ef;AA6EZ,UAAQ,0BA7EI;AA8EZ,6BAA2B,sBA9Ef;AA+EZ,6BAA2B,qLA/Ef;AAgFZ,6BAA2B,UAhFf;AAiFZ,UAAQ,kVAjFI;AAkFZ,UAAQ,sHAlFI;AAmFZ,6BAA2B,0EAnFf;AAoFZ,UAAQ,yHApFI;AAqFZ,UAAQ,aArFI;AAsFZ,6BAA2B,WAtFf;AAuFZ,6BAA2B,YAvFf;AAwFZ,UAAQ,2BAxFI;AAyFZ,+BAA6B,2BAzFjB;AA0FZ,UAAQ,cA1FI;AA2FZ,WAAS,yCA3FG;AA4FZ,WAAS;AA5FG,CAAb;;AA+FA,IAAIC,QAAQ,GAAG,aAAazF,MAAM,CAAC0F,MAAP,CAAc;AACzCC,EAAAA,SAAS,EAAE,IAD8B;AAEzC,aAAWH;AAF8B,CAAd,CAA5B,EAKA;;;AACA,IAAII,SAAS,GAAG,CAAC,QAAD,EAAW,SAAX,EAAsB,MAAtB,EAA8B,UAA9B,EAA0C,WAA1C,EAAuD,QAAvD,EAAiE,QAAjE,EAA2E,OAA3E,EAAoF,QAApF,EAA8F,QAA9F,EAAwG,QAAxG,EAAkH,SAAlH,EAA6H,YAA7H,EAA2I,KAA3I,CAAhB;AAEA,IAAIC,IAAI,GAAGpG,yBAAyB,CAACgG,QAAD,CAApC;AAEA,IAAIK,GAAG,GAAG,EAAV;AACA9F,MAAM,CAAC+F,IAAP,CAAYF,IAAZ,EAAkB9G,OAAlB,CAA0B,UAAUyC,CAAV,EAAa;AACrC,MAAI6D,KAAK,GAAG7D,CAAC,CAAC6D,KAAF,CAAQ,GAAR,CAAZ;AACA,MAAIR,GAAG,GAAG;AACRpC,IAAAA,MAAM,EAAEuD,MAAM,CAACX,KAAK,CAAC,CAAD,CAAN,CADN;AAERD,IAAAA,GAAG,EAAEC,KAAK,CAAC,CAAD;AAFF,GAAV;;AAKA,MAAIA,KAAK,CAAC,CAAD,CAAT,EAAc;AACZR,IAAAA,GAAG,CAACI,GAAJ,GAAUI,KAAK,CAAC,CAAD,CAAf;AACD;;AAED,MAAIY,KAAK,GAAGJ,IAAI,CAACrE,CAAD,CAAJ,CAAQ6D,KAAR,CAAc,GAAd,CAAZ;AACAY,EAAAA,KAAK,CAAClH,OAAN,CAAc,UAAU2B,GAAV,EAAe;AAC3BA,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,aAAZ,EAA2B,UAAUuE,MAAV,EAAkBC,GAAlB,EAAuB;AACtDA,MAAAA,GAAG,GAAGH,MAAM,CAACG,GAAD,CAAZ;AACA,aAAOP,SAAS,CAACO,GAAD,CAAT,GAAiB,GAAxB;AACD,KAHK,CAAN;AAIAL,IAAAA,GAAG,CAACpF,GAAD,CAAH,GAAWmE,GAAX;AACD,GAND;AAOD,CAnBD;AAoBAiB,GAAG,CAAC,KAAD,CAAH,GAAa;AACXrD,EAAAA,MAAM,EAAE,CADG;AAEX2C,EAAAA,GAAG,EAAE,GAFM,CAEF;;AAFE,CAAb,EAIG;;AAEH,KAAK,IAAI9D,CAAC,GAAG,CAAC,EAAd,EAAkBA,CAAC,IAAI,EAAvB,EAA2BA,CAAC,IAAI,GAAhC,EAAqC;AACnC,MAAI6E,GAAG,GAAG7E,CAAV;;AAEA,MAAI6E,GAAG,GAAG,CAAV,EAAa;AACXA,IAAAA,GAAG,GAAG,MAAMA,GAAZ;AACD;;AAED,MAAIC,IAAI,GAAG,YAAYD,GAAvB;AACAL,EAAAA,GAAG,CAACM,IAAD,CAAH,GAAY;AACV3D,IAAAA,MAAM,EAAEnB,CAAC,GAAG,CAAC,CADH;AAEV;AACA8D,IAAAA,GAAG,EAAE,GAHK,CAGD;;AAHC,GAAZ;AAMAgB,EAAAA,IAAI,GAAG,YAAYD,GAAnB,CAdmC,CAcX;;AAExBL,EAAAA,GAAG,CAACM,IAAD,CAAH,GAAY;AACV3D,IAAAA,MAAM,EAAEnB,CAAC,GAAG,CAAC,CADH;AAEV8D,IAAAA,GAAG,EAAE;AAFK,GAAZ;AAID,EAAC;AACF;;;AAGA,IAAIiB,MAAM,GAAGP,GAAb,EAEA;AACA;AACA;;AACA,IAAIQ,UAAU,GAAG,KAAjB,EAAwB;AACxB;;AAEA,IAAIC,QAAQ,GAAG,SAASA,QAAT,GAAoB;AACjC,MAAI,OAAOC,IAAP,KAAgB,WAAhB,IAA+B,OAAOA,IAAI,CAACC,cAAZ,KAA+B,WAAlE,EAA+E;AAC7E,WAAO,IAAP;AACD;;AAED,MAAIC,MAAM,GAAGF,IAAI,CAACC,cAAL,EAAb;;AAEA,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACC,eAAd,KAAkC,WAAvE,EAAoF;AAClF,WAAO,IAAP;AACD;;AAED,MAAIC,QAAQ,GAAGF,MAAM,CAACC,eAAP,GAAyBE,QAAxC;;AAEA,MAAI,CAACD,QAAL,EAAe;AACb,WAAO,IAAP;AACD;;AAED,SAAOA,QAAQ,CAAC9E,WAAT,EAAP;AACD,CAlBD;;AAoBA,IAAIgF,OAAO,GAAG,SAASA,OAAT,GAAmB;AAC/B,MAAIF,QAAQ,GAAGL,QAAQ,EAAvB;;AAEA,MAAIK,QAAQ,KAAK,IAAjB,EAAuB;AACrB,WAAON,UAAP;AACD;;AAED,SAAOM,QAAP;AACD,CARD,EAQG;;;AAGH,IAAIG,SAAS,GAAGD,OAAhB;AAEA,IAAIE,QAAQ,GAAG,oBAAf;AACA,IAAIC,QAAQ,GAAG,aAAf;AACA,IAAIC,SAAS,GAAG,oBAAhB;AACA,IAAIC,SAAS,GAAG,oBAAhB;;AAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBjB,GAAhB,EAAqB;AAChCA,EAAAA,GAAG,GAAGH,MAAM,CAACG,GAAD,CAAZ;;AAEA,MAAIA,GAAG,GAAG,CAAC,EAAP,IAAaA,GAAG,GAAG,EAAvB,EAA2B;AACzBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,CAAC,CAAb,CADyB,CACT;;AAEhBA,IAAAA,GAAG,GAAG,CAACA,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAjB,IAAuBA,GAA7B,CAHyB,CAGS;;AAElC,WAAO,YAAYA,GAAnB;AACD;;AAED,SAAO,IAAP;AACD,CAZD;;AAcA,IAAIkB,WAAW,GAAG,SAASA,WAAT,CAAqBvC,EAArB,EAAyB;AACzC;AACA,MAAIwC,CAAC,GAAGxC,EAAE,CAACyC,KAAH,CAASP,QAAT,CAAR;;AAEA,MAAIM,CAAC,KAAK,IAAV,EAAgB;AACd,WAAOF,MAAM,CAACE,CAAC,CAAC,CAAD,CAAF,CAAb;AACD,GANwC,CAMvC;;;AAGFA,EAAAA,CAAC,GAAGxC,EAAE,CAACyC,KAAH,CAASL,SAAT,CAAJ;;AAEA,MAAII,CAAC,KAAK,IAAV,EAAgB;AACd,WAAOF,MAAM,CAACE,CAAC,CAAC,CAAD,CAAF,CAAb;AACD,GAbwC,CAavC;;;AAGFA,EAAAA,CAAC,GAAGxC,EAAE,CAACyC,KAAH,CAASJ,SAAT,CAAJ;;AAEA,MAAIG,CAAC,KAAK,IAAV,EAAgB;AACd,QAAInB,GAAG,GAAGH,MAAM,CAACsB,CAAC,CAAC,CAAD,CAAF,CAAN,GAAe,CAAC,CAA1B;AACA,WAAOF,MAAM,CAACjB,GAAD,CAAb;AACD,GArBwC,CAqBvC;;;AAGFmB,EAAAA,CAAC,GAAGxC,EAAE,CAACyC,KAAH,CAASN,QAAT,CAAJ;;AAEA,MAAIK,CAAC,KAAK,IAAV,EAAgB;AACd,WAAOF,MAAM,CAACE,CAAC,CAAC,CAAD,CAAF,CAAb;AACD;;AAED,SAAO,IAAP;AACD,CA/BD;;AAiCA,IAAIE,aAAa,GAAGH,WAApB;AAEA,IAAII,KAAK,GAAGV,SAAS,EAArB,EAAyB;;AAEzB,IAAIW,MAAM,GAAG1H,MAAM,CAAC+F,IAAP,CAAYM,MAAZ,EAAoBsB,MAApB,CAA2B,UAAUC,CAAV,EAAapG,CAAb,EAAgB;AACtD,MAAIqG,IAAI,GAAGrG,CAAC,CAAC6D,KAAF,CAAQ,GAAR,EAAa,CAAb,KAAmB,EAA9B;AACAwC,EAAAA,IAAI,GAAGA,IAAI,CAAClG,OAAL,CAAa,IAAb,EAAmB,GAAnB,CAAP;AACAiG,EAAAA,CAAC,CAACC,IAAD,CAAD,GAAUrG,CAAV;AACA,SAAOoG,CAAP;AACD,CALY,EAKV,EALU,CAAb,EAKQ;;AAER,IAAI/F,SAAS,GAAG,SAASA,SAAT,CAAmBiD,EAAnB,EAAuB;AACrCA,EAAAA,EAAE,GAAGA,EAAE,CAACnD,OAAH,CAAW,QAAX,EAAqB,EAArB,CAAL;AACAmD,EAAAA,EAAE,GAAGA,EAAE,CAACnD,OAAH,CAAW,8BAAX,EAA2C,EAA3C,CAAL;AACAmD,EAAAA,EAAE,GAAGA,EAAE,CAACnD,OAAH,CAAW,+BAAX,EAA4C,IAA5C,CAAL;AACAmD,EAAAA,EAAE,GAAGA,EAAE,CAACnD,OAAH,CAAW,gCAAX,EAA6C,IAA7C,CAAL;AACAmD,EAAAA,EAAE,GAAGA,EAAE,CAACnD,OAAH,CAAW,aAAX,EAA0B,QAA1B,CAAL;AACAmD,EAAAA,EAAE,GAAGA,EAAE,CAACnD,OAAH,CAAW,WAAX,EAAwB,QAAxB,CAAL;AACA,SAAOmD,EAAP;AACD,CARD,EAQG;;;AAGH,IAAIgD,QAAQ,GAAG,SAASA,QAAT,CAAkBpH,GAAlB,EAAuBiE,KAAvB,EAA8B;AAC3C,MAAI,CAACjE,GAAL,EAAU;AACR,WAAO+G,KAAP;AACD;;AAED,MAAI3C,EAAE,GAAGpE,GAAG,CAACqB,IAAJ,EAAT;AACA,MAAIsD,KAAK,GAAG3E,GAAG,CAAC2E,KAAJ,CAAU,GAAV,CAAZ,CAN2C,CAMf;;AAE5B,MAAIA,KAAK,CAACxE,MAAN,GAAe,CAAf,IAAoB8D,KAAK,CAACoD,cAAN,CAAqBjD,EAArB,MAA6B,KAArD,EAA4D;AAC1DA,IAAAA,EAAE,GAAGO,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiBA,KAAK,CAAC,CAAD,CAA3B;AACD;;AAEDP,EAAAA,EAAE,GAAGA,EAAE,CAAChD,WAAH,EAAL;;AAEA,MAAI6C,KAAK,CAACoD,cAAN,CAAqBjD,EAArB,MAA6B,IAAjC,EAAuC;AACrC,WAAOA,EAAP;AACD,GAhB0C,CAgBzC;;;AAGFA,EAAAA,EAAE,GAAGjD,SAAS,CAACiD,EAAD,CAAd;;AAEA,MAAIH,KAAK,CAACoD,cAAN,CAAqBjD,EAArB,MAA6B,IAAjC,EAAuC;AACrC,WAAOA,EAAP;AACD,GAvB0C,CAuBzC;;;AAGF,MAAI4C,MAAM,CAACK,cAAP,CAAsBjD,EAAtB,MAA8B,IAAlC,EAAwC;AACtC,WAAO4C,MAAM,CAAC5C,EAAD,CAAb;AACD,GA5B0C,CA4BzC;;;AAGF,MAAI,QAAQkD,IAAR,CAAalD,EAAb,MAAqB,IAAzB,EAA+B;AAC7B,QAAImD,EAAE,GAAGT,aAAa,CAAC1C,EAAD,CAAtB;;AAEA,QAAImD,EAAJ,EAAQ;AACN,aAAOA,EAAP;AACD;AACF;;AAED,QAAM,IAAIC,KAAJ,CAAU,6CAA6CxH,GAA7C,GAAmD,sCAA7D,CAAN;AACD,CAxCD;;AA0CA,IAAIyH,IAAI,GAAGL,QAAX;AAEA,IAAIM,CAAC,GAAG;AACNC,EAAAA,WAAW,EAAE;AADP,CAAR;AAGAD,CAAC,CAACE,MAAF,GAAW,IAAX;AACAF,CAAC,CAACG,MAAF,GAAW,KAAX;AACAH,CAAC,CAACI,IAAF,GAAS,KAAT,EAAgB;;AAEhBJ,CAAC,CAACK,GAAF,GAAQ,MAAR,EAAgB;;AAEhBL,CAAC,CAACM,IAAF,GAASN,CAAC,CAACK,GAAX;AACAL,CAAC,CAACO,KAAF,GAAU,SAAS,IAAnB,EAAyB;;AAEzBP,CAAC,CAACQ,IAAF,GAAS,OAAT;AACAR,CAAC,CAACvI,IAAF,GAAS,QAAT,EAAmB;AACnB;;AAEAG,MAAM,CAAC+F,IAAP,CAAYqC,CAAZ,EAAerJ,OAAf,CAAuB,UAAUyC,CAAV,EAAa;AAClC4G,EAAAA,CAAC,CAAC5G,CAAC,GAAG,GAAL,CAAD,GAAa4G,CAAC,CAAC5G,CAAD,CAAd;AACD,CAFD;AAGA,IAAIqH,YAAY,GAAGT,CAAnB;;AAEA,IAAIU,IAAI,GAAG,SAASA,IAAT,CAAczG,CAAd,EAAiB3C,CAAjB,EAAoBJ,EAApB,EAAwByJ,IAAxB,EAA8BC,QAA9B,EAAwC;AACjD,MAAIxE,OAAO,GAAGnC,CAAC,CAACtC,CAAF,CAAIT,EAAJ,GAAd;;AAEA,MAAIkF,OAAO,KAAK9E,CAAhB,EAAmB;AACjB,WADiB,CACT;AACT;;AAED,MAAIuJ,SAAS,GAAGD,QAAQ,KAAK,IAAb,GAAoB,IAApB,GAA2B3G,CAAC,CAACtC,CAAF,CAAIiJ,QAAJ,GAA3C;AACA,MAAIE,QAAQ,GAAG7G,CAAC,CAACF,KAAjB,CARiD,CAQzB;;AAExB,MAAIgH,IAAI,GAAGzJ,CAAC,GAAG8E,OAAf;AACAnC,EAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACE,IAAD,CAAZ,GAAqBI,IAAhC,CAXiD,CAWX;AACtC;;AAEA,MAAIJ,IAAI,KAAK,KAAb,EAAoB;AAClB;AACA;AACA,QAAInG,IAAI,CAACC,GAAL,CAASsG,IAAT,IAAiB,EAAjB,IAAuBzJ,CAAC,GAAG,EAA/B,EAAmC;AACjC2C,MAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACL,IAAxB;AACD;AACF,GApBgD,CAoB/C;;;AAGF,MAAIQ,QAAQ,KAAK,IAAb,IAAqBC,SAAS,KAAK5G,CAAC,CAACtC,CAAF,CAAIiJ,QAAJ,GAAvC,EAAwD;AACtD;AACA3G,IAAAA,CAAC,CAACF,KAAF,GAAU+G,QAAV,CAFsD,CAElC;AACrB,GA1BgD,CA0B/C;AACF;;;AAGA,MAAIE,QAAQ,GAAGP,YAAY,CAACE,IAAD,CAAZ,GAAqB,CAApC;;AAEA,SAAO1G,CAAC,CAACtC,CAAF,CAAIT,EAAJ,MAAYI,CAAnB,EAAsB;AACpB2C,IAAAA,CAAC,CAACF,KAAF,IAAWiH,QAAX;AACD;;AAED,SAAO/G,CAAC,CAACtC,CAAF,CAAIT,EAAJ,MAAYI,CAAnB,EAAsB;AACpB2C,IAAAA,CAAC,CAACF,KAAF,IAAWiH,QAAX;AACD,GAtCgD,CAsC/C;;;AAGF,MAAIJ,QAAQ,KAAK,IAAb,IAAqBC,SAAS,KAAK5G,CAAC,CAACtC,CAAF,CAAIiJ,QAAJ,GAAvC,EAAwD;AACtD;AACA3G,IAAAA,CAAC,CAACF,KAAF,GAAU+G,QAAV;AACD;AACF,CA7CD,EA6CG;;;AAGH,IAAIG,KAAK,GAAG;AACVxJ,EAAAA,IAAI,EAAE;AACJyJ,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5J,CAAf,EAAkB;AACvB,aAAOA,CAAC,GAAG,CAAC,IAAL,IAAaA,CAAC,GAAG,IAAxB;AACD,KAHG;AAIJ6J,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlH,CAAhB,EAAmB3C,CAAnB,EAAsB;AAC5B,aAAOoJ,IAAI,CAACzG,CAAD,EAAI3C,CAAJ,EAAO,aAAP,EAAsB,MAAtB,EAA8B,IAA9B,CAAX;AACD;AANG,GADI;AASViJ,EAAAA,KAAK,EAAE;AACLW,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5J,CAAf,EAAkB;AACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,IAAI,EAAtB;AACD,KAHI;AAIL6J,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlH,CAAhB,EAAmB3C,CAAnB,EAAsB;AAC5B,UAAIK,CAAC,GAAGsC,CAAC,CAACtC,CAAV;AACA,UAAIyE,OAAO,GAAGzE,CAAC,CAAC8D,QAAF,EAAd;AACA,UAAIqF,QAAQ,GAAG7G,CAAC,CAACF,KAAjB;AACA,UAAI8G,SAAS,GAAGlJ,CAAC,CAACyJ,WAAF,EAAhB;;AAEA,UAAIhF,OAAO,KAAK9E,CAAhB,EAAmB;AACjB;AACD,OAR2B,CAQ1B;;;AAGF,UAAIyJ,IAAI,GAAGzJ,CAAC,GAAG8E,OAAf;AACAnC,MAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACJ,GAAb,IAAoBU,IAAI,GAAG,EAA3B,CAAX,CAZ4B,CAYe;AAC3C;;AAEA,UAAIF,SAAS,KAAK5G,CAAC,CAACtC,CAAF,CAAIyJ,WAAJ,EAAlB,EAAqC;AACnCnH,QAAAA,CAAC,CAACF,KAAF,GAAU+G,QAAV;AACD,OAjB2B,CAiB1B;;;AAGF,aAAO7G,CAAC,CAACtC,CAAF,CAAI8D,QAAJ,KAAiBnE,CAAxB,EAA2B;AACzB2C,QAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACJ,GAAxB;AACD;;AAED,aAAOpG,CAAC,CAACtC,CAAF,CAAI8D,QAAJ,KAAiBnE,CAAxB,EAA2B;AACzB2C,QAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACJ,GAAxB;AACD;AACF;AA/BI,GATG;AA0CVC,EAAAA,IAAI,EAAE;AACJY,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5J,CAAf,EAAkB;AACvB,aAAOA,CAAC,GAAG,CAAJ,IAASA,CAAC,IAAI,EAArB;AACD,KAHG;AAIJ6J,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlH,CAAhB,EAAmB3C,CAAnB,EAAsB;AAC5B,aAAOoJ,IAAI,CAACzG,CAAD,EAAI3C,CAAJ,EAAO,SAAP,EAAkB,KAAlB,EAAyB,UAAzB,CAAX;AACD;AANG,GA1CI;AAkDV8I,EAAAA,IAAI,EAAE;AACJc,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5J,CAAf,EAAkB;AACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;AACD,KAHG;AAIJ6J,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlH,CAAhB,EAAmB3C,CAAnB,EAAsB;AAC5B,aAAOoJ,IAAI,CAACzG,CAAD,EAAI3C,CAAJ,EAAO,UAAP,EAAmB,MAAnB,EAA2B,SAA3B,CAAX;AACD;AANG,GAlDI;AA0DV6I,EAAAA,MAAM,EAAE;AACNe,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5J,CAAf,EAAkB;AACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;AACD,KAHK;AAIN6J,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlH,CAAhB,EAAmB3C,CAAnB,EAAsB;AAC5B,aAAOoJ,IAAI,CAACzG,CAAD,EAAI3C,CAAJ,EAAO,YAAP,EAAqB,QAArB,EAA+B,UAA/B,CAAX;AACD;AANK,GA1DE;AAkEV4I,EAAAA,MAAM,EAAE;AACNgB,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5J,CAAf,EAAkB;AACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;AACD,KAHK;AAIN6J,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlH,CAAhB,EAAmB3C,CAAnB,EAAsB;AAC5B;AACA2C,MAAAA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAACoH,OAAF,CAAU/J,CAAV,EAAayC,KAAvB;AACD;AAPK,GAlEE;AA2EVkG,EAAAA,WAAW,EAAE;AACXiB,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5J,CAAf,EAAkB;AACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,IAArB;AACD,KAHU;AAIX6J,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlH,CAAhB,EAAmB3C,CAAnB,EAAsB;AAC5B;AACA2C,MAAAA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAACwG,YAAF,CAAenJ,CAAf,EAAkByC,KAA5B;AACD;AAPU;AA3EH,CAAZ;;AAsFA,IAAIoH,MAAM,GAAG,SAASA,MAAT,CAAgBlH,CAAhB,EAAmBqH,KAAnB,EAA0B;AACrC,MAAI3D,IAAI,GAAG/F,MAAM,CAAC+F,IAAP,CAAYsD,KAAZ,CAAX;AACA,MAAIM,GAAG,GAAGtH,CAAC,CAACC,KAAF,EAAV;;AAEA,OAAK,IAAIhB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyE,IAAI,CAAClF,MAAzB,EAAiCS,CAAC,EAAlC,EAAsC;AACpC,QAAIE,CAAC,GAAGuE,IAAI,CAACzE,CAAD,CAAZ;AACA,QAAI5B,CAAC,GAAGgK,KAAK,CAAClI,CAAD,CAAb;;AAEA,QAAI9B,CAAC,KAAKoB,SAAV,EAAqB;AACnBpB,MAAAA,CAAC,GAAGiK,GAAG,CAACnI,CAAD,CAAH,EAAJ;AACD;;AAED,QAAI,OAAO9B,CAAP,KAAa,QAAjB,EAA2B;AACzBA,MAAAA,CAAC,GAAGkC,QAAQ,CAAClC,CAAD,EAAI,EAAJ,CAAZ;AACD,KAVmC,CAUlC;;;AAGF,QAAI,CAAC2J,KAAK,CAAC7H,CAAD,CAAL,CAAS8H,KAAT,CAAe5J,CAAf,CAAL,EAAwB;AACtB2C,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;;AAEA,UAAIE,CAAC,CAACuH,MAAF,KAAa,KAAjB,EAAwB;AACtB7E,QAAAA,OAAO,CAACC,IAAR,CAAa,aAAaxD,CAAb,GAAiB,IAAjB,GAAwB9B,CAArC;AACD;;AAED;AACD;;AAED2J,IAAAA,KAAK,CAAC7H,CAAD,CAAL,CAAS+H,MAAT,CAAgBlH,CAAhB,EAAmB3C,CAAnB;AACD;;AAED;AACD,CA/BD;;AAiCA,IAAImK,MAAM,GAAGN,MAAb;AAEA,IAAIO,WAAW,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,EAAyD,MAAzD,EAAiE,KAAjE,EAAwE,KAAxE,EAA+E,KAA/E,CAAlB;AACA,IAAIC,UAAU,GAAG,CAAC,SAAD,EAAY,UAAZ,EAAwB,OAAxB,EAAiC,OAAjC,EAA0C,KAA1C,EAAiD,MAAjD,EAAyD,MAAzD,EAAiE,QAAjE,EAA2E,WAA3E,EAAwF,SAAxF,EAAmG,UAAnG,EAA+G,UAA/G,CAAjB;;AAEA,SAASC,YAAT,GAAwB;AACtB,MAAInF,GAAG,GAAG;AACRoF,IAAAA,GAAG,EAAE,CADG,CACD;;AADC,GAAV;;AAKA,OAAK,IAAI3I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwI,WAAW,CAACjJ,MAAhC,EAAwCS,CAAC,EAAzC,EAA6C;AAC3CuD,IAAAA,GAAG,CAACiF,WAAW,CAACxI,CAAD,CAAZ,CAAH,GAAsBA,CAAtB;AACD;;AAED,OAAK,IAAI4I,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGH,UAAU,CAAClJ,MAAjC,EAAyCqJ,EAAE,EAA3C,EAA+C;AAC7CrF,IAAAA,GAAG,CAACkF,UAAU,CAACG,EAAD,CAAX,CAAH,GAAsBA,EAAtB;AACD;;AAED,SAAOrF,GAAP;AACD;;AAED,IAAIsF,MAAM,GAAG;AACX,WAAS,SAASC,KAAT,GAAiB;AACxB,WAAON,WAAP;AACD,GAHU;AAIX,UAAQ,SAASO,IAAT,GAAgB;AACtB,WAAON,UAAP;AACD,GANU;AAOXO,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;AAC1B,WAAON,YAAY,EAAnB;AACD,GATU;AAUXzH,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAagI,IAAb,EAAmB;AACtBT,IAAAA,WAAW,GAAGS,IAAI,CAAC,OAAD,CAAJ,IAAiBT,WAA/B;AACAC,IAAAA,UAAU,GAAGQ,IAAI,CAAC,MAAD,CAAJ,IAAgBR,UAA7B;AACD;AAbU,CAAb,EAgBA;;AACA,IAAIS,aAAa,GAAG,SAASnD,WAAT,CAAqBhF,CAArB,EAAwBI,MAAxB,EAAgC;AAClD,MAAI,CAACA,MAAL,EAAa;AACX,WAAOJ,CAAP;AACD,GAHiD,CAGhD;;;AAGF,MAAII,MAAM,KAAK,GAAf,EAAoB;AAClBA,IAAAA,MAAM,GAAG,OAAT;AACD,GARiD,CAQhD;AACF;;;AAGA,MAAI0D,GAAG,GAAG,CAAV,CAZkD,CAYrC;;AAEb,MAAI,4BAA4B6B,IAA5B,CAAiCvF,MAAjC,CAAJ,EAA8C;AAC5C;AACA,QAAI,MAAMuF,IAAN,CAAWvF,MAAX,MAAuB,IAA3B,EAAiC;AAC/BA,MAAAA,MAAM,GAAGA,MAAM,CAACd,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;AACD,KAJ2C,CAI1C;;;AAGF,QAAI,MAAMqG,IAAN,CAAWvF,MAAX,MAAuB,IAA3B,EAAiC;AAC/BA,MAAAA,MAAM,GAAGA,MAAM,CAACd,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAT;AACD;AACF,GAxBiD,CAwBhD;;;AAGF,MAAI,mBAAmBqG,IAAnB,CAAwBvF,MAAxB,CAAJ,EAAqC;AACnCA,IAAAA,MAAM,GAAGA,MAAM,CAACd,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAT;AACD;;AAEDwE,EAAAA,GAAG,GAAGsE,UAAU,CAAChI,MAAD,CAAhB,CA/BkD,CA+BxB;;AAE1B,MAAIG,IAAI,CAACC,GAAL,CAASsD,GAAT,IAAgB,GAApB,EAAyB;AACvBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,GAAZ;AACD,GAnCiD,CAmChD;AACF;AACA;;;AAGAA,EAAAA,GAAG,IAAI,CAAC,CAAR;;AAEA,MAAIA,GAAG,IAAI,CAAX,EAAc;AACZA,IAAAA,GAAG,GAAG,MAAMA,GAAZ;AACD;;AAED,MAAIrB,EAAE,GAAG,YAAYqB,GAArB;AACA,MAAIxB,KAAK,GAAGtC,CAAC,CAACuC,SAAd;;AAEA,MAAID,KAAK,CAACG,EAAD,CAAT,EAAe;AACb;AACA;AACAzC,IAAAA,CAAC,CAACyC,EAAF,GAAOA,EAAP;AACD;;AAED,SAAOzC,CAAP;AACD,CAxDD;;AA0DA,IAAIqI,eAAe,GAAGF,aAAtB;;AAEA,IAAIG,SAAS,GAAG,SAASA,SAAT,CAAmBtI,CAAnB,EAAsB;AACpC,MAAI3B,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;AACAF,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,MAAZ,EAAoB,EAApB,EAAwBG,WAAxB,EAAN,CAFoC,CAES;AAC7C;;AAEA,MAAI8I,GAAG,GAAGlK,GAAG,CAAC6G,KAAJ,CAAU,6DAAV,CAAV;;AAEA,MAAIqD,GAAG,KAAK,IAAZ,EAAkB;AAChB;AACA,QAAIhD,CAAC,GAAG5B,MAAM,CAAC4E,GAAG,CAAC,CAAD,CAAJ,CAAd;;AAEA,QAAIhD,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,EAAjB,EAAqB;AACnB,aAAOvF,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAP;AACD;;AAED,QAAIvD,CAAC,GAAGtB,MAAM,CAAC4E,GAAG,CAAC,CAAD,CAAJ,CAAd,CARgB,CAQQ;;AAExB,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAO/J,MAAP,GAAgB,CAAhB,IAAqByG,CAAC,GAAG,CAAzB,IAA8BA,CAAC,GAAG,EAAtC,EAA0C;AACxC,aAAOjF,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAP;AACD;;AAEDxI,IAAAA,CAAC,GAAGA,CAAC,CAACmG,IAAF,CAAOZ,CAAP,CAAJ;AACAvF,IAAAA,CAAC,GAAGA,CAAC,CAACkG,MAAF,CAASjB,CAAT,CAAJ;AACAjF,IAAAA,CAAC,GAAGA,CAAC,CAACoH,OAAF,CAAUmB,GAAG,CAAC,CAAD,CAAH,IAAU,CAApB,CAAJ;AACAvI,IAAAA,CAAC,GAAGA,CAAC,CAACgG,WAAF,CAAcuC,GAAG,CAAC,CAAD,CAAH,IAAU,CAAxB,CAAJ,CAjBgB,CAiBgB;;AAEhC,QAAIE,IAAI,GAAGpK,GAAG,CAAC6G,KAAJ,CAAU,kBAAV,CAAX;;AAEA,QAAIuD,IAAI,KAAK,IAAT,IAAiBA,IAAI,CAAC,CAAD,CAAzB,EAA8B;AAC5BzI,MAAAA,CAAC,GAAGA,CAAC,CAACyI,IAAF,CAAOA,IAAI,CAAC,CAAD,CAAX,CAAJ;AACD;;AAED,WAAOzI,CAAP;AACD,GAjCmC,CAiClC;;;AAGFuI,EAAAA,GAAG,GAAGlK,GAAG,CAAC6G,KAAJ,CAAU,mBAAV,CAAN;;AAEA,MAAIqD,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAAC,CAAD,CAAvB,EAA4B;AAC1B,QAAIG,EAAE,GAAG/E,MAAM,CAAC4E,GAAG,CAAC,CAAD,CAAJ,CAAf,CAD0B,CACD;;;AAGzB,QAAIG,EAAE,GAAG,EAAL,IAAWA,EAAE,GAAG,CAApB,EAAuB;AACrB,aAAO1I,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAP;AACD;;AAEDxI,IAAAA,CAAC,GAAGA,CAAC,CAACmG,IAAF,CAAOoC,GAAG,CAAC,CAAD,CAAH,IAAU,CAAjB,CAAJ;AACAvI,IAAAA,CAAC,GAAGA,CAAC,CAACyI,IAAF,CAAOF,GAAG,CAAC,CAAD,CAAV,CAAJ;AACAvI,IAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,MAAV,CAAJ;AACA,WAAOxI,CAAP;AACD,GAlDmC,CAkDlC;;;AAGFA,EAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAJ;AACA,SAAOxI,CAAP;AACD,CAvDD;;AAyDA,IAAI2I,WAAW,GAAGL,SAAlB;AAEA,IAAIM,YAAY,GAAG,CAAC,EAAD,EAAK;AACxB,EADmB,EACf;AACJ,EAFmB,EAEf;AACJ,EAHmB,EAGf;AACJ,EAJmB,EAIf;AACJ,EALmB,EAKf;AACJ,EANmB,EAMf;AACJ,EAPmB,EAOf;AACJ,EARmB,EAQf;AACJ,EATmB,EASf;AACJ,EAVmB,EAUf;AACJ,EAXmB,CAWhB;AAXgB,CAAnB;AAaA,IAAIC,cAAc,GAAGD,YAArB,EAAmC;;AAEnC,IAAIrL,UAAU,GAAGD,GAAG,CAACC,UAArB,EAAiC;;AAEjC,IAAIuL,OAAO,GAAG,SAASA,OAAT,CAAiBtG,GAAjB,EAAsB;AAClC;AACA,MAAIqG,cAAc,CAACnD,cAAf,CAA8BlD,GAAG,CAAC8D,KAAlC,MAA6C,IAAjD,EAAuD;AACrD,WAAO,KAAP;AACD,GAJiC,CAIhC;;;AAGF,MAAI9D,GAAG,CAAC8D,KAAJ,KAAc,CAAlB,EAAqB;AACnB,QAAI/I,UAAU,CAACiF,GAAG,CAAChF,IAAL,CAAV,IAAwBgF,GAAG,CAAC6D,IAAJ,IAAY,EAAxC,EAA4C;AAC1C,aAAO,IAAP;AACD,KAFD,MAEO;AACL,aAAO7D,GAAG,CAAC6D,IAAJ,IAAY,EAAnB;AACD;AACF,GAbiC,CAahC;;;AAGF,MAAI0C,GAAG,GAAGF,cAAc,CAACrG,GAAG,CAAC8D,KAAL,CAAd,IAA6B,CAAvC;;AAEA,MAAI9D,GAAG,CAAC6D,IAAJ,IAAY0C,GAAhB,EAAqB;AACnB,WAAO,IAAP;AACD;;AAED,SAAO,KAAP;AACD,CAvBD;;AAyBA,IAAIC,SAAS,GAAGF,OAAhB;AAEA,IAAIG,QAAQ,GAAGnB,MAAM,CAACG,OAAP,EAAf;;AAEA,IAAIiB,SAAS,GAAG,SAASA,SAAT,GAAqB;AACnC,MAAI7K,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;AACA,MAAI4K,KAAK,GAAG5K,SAAS,CAACC,MAAV,GAAmB,CAAnB,GAAuBD,SAAS,CAAC,CAAD,CAAhC,GAAsCE,SAAlD;AACA,MAAIjB,IAAI,GAAG+B,QAAQ,CAAClB,GAAG,CAACqB,IAAJ,EAAD,EAAa,EAAb,CAAnB,CAHmC,CAGE;;AAErC,MAAI,CAAClC,IAAD,IAAS2L,KAAb,EAAoB;AAClB3L,IAAAA,IAAI,GAAG2L,KAAK,CAAC3L,IAAb;AACD,GAPkC,CAOjC;;;AAGFA,EAAAA,IAAI,GAAGA,IAAI,IAAI,IAAIuE,IAAJ,GAAWoF,WAAX,EAAf;AACA,SAAO3J,IAAP;AACD,CAZD;;AAcA,IAAI4L,MAAM,GAAG,CAAC;AACd;AACEC,EAAAA,GAAG,EAAE,gFADP;AAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuBgB,OAAvB,EAAgCC,OAAhC,EAAyC;AAC9C,QAAIlD,KAAK,GAAG/G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;AACA,QAAI/F,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAE+K,GAAG,CAAC,CAAD,CADD;AAERjC,MAAAA,KAAK,EAAEA,KAFC;AAGRD,MAAAA,IAAI,EAAEkC,GAAG,CAAC,CAAD;AAHD,KAAV;;AAMA,QAAIS,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDqI,IAAAA,eAAe,CAACrI,CAAD,EAAIuI,GAAG,CAAC,CAAD,CAAP,CAAf;AACAf,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,EAAIuI,GAAG,CAAC,CAAD,CAAP,CAAf;AACA,WAAOvI,CAAP;AACD;AAnBH,CADa,EAqBV;AACH;AACEqJ,EAAAA,GAAG,EAAE,sGADP;AAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAI/F,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAE+K,GAAG,CAAC,CAAD,CADD;AAERjC,MAAAA,KAAK,EAAE/G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAFtB;AAGRlC,MAAAA,IAAI,EAAE9G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT;AAHN,KAAV;;AAMA,QAAI/F,GAAG,CAAC8D,KAAJ,IAAa,EAAjB,EAAqB;AACnB;AACA9D,MAAAA,GAAG,CAAC6D,IAAJ,GAAW9G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB;AACA/F,MAAAA,GAAG,CAAC8D,KAAJ,GAAY/G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;AACD;;AAED,QAAIS,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,EAAIuI,GAAG,CAAC,CAAD,CAAP,CAAf;AACA,WAAOvI,CAAP;AACD;AAvBH,CAtBa,EA8CV;AACH;AACEqJ,EAAAA,GAAG,EAAE,wGADP;AAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAIjC,KAAK,GAAG/G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;AACA,QAAIlC,IAAI,GAAG9G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB,CAF4B,CAEK;;AAEjC,QAAIvI,CAAC,CAACyJ,OAAF,IAAanD,KAAK,IAAI,EAA1B,EAA8B;AAC5BD,MAAAA,IAAI,GAAG9G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAf;AACAjC,MAAAA,KAAK,GAAG/G,QAAQ,CAACgJ,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAA/B;AACD;;AAED,QAAI/K,IAAI,GAAG+K,GAAG,CAAC,CAAD,CAAH,IAAU,IAAIxG,IAAJ,GAAWoF,WAAX,EAArB;AACA,QAAI3E,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAEA,IADE;AAER8I,MAAAA,KAAK,EAAEA,KAFC;AAGRD,MAAAA,IAAI,EAAEA;AAHE,KAAV;;AAMA,QAAI2C,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,EAAIuI,GAAG,CAAC,CAAD,CAAP,CAAf;AACA,WAAOvI,CAAP;AACD;AA1BH,CA/Ca,EA0EV;AACH;AACEqJ,EAAAA,GAAG,EAAE,iDADP;AAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAIjC,KAAK,GAAG2C,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAO9I,WAAP,EAAD,CAApB;AACA,QAAIjC,IAAI,GAAG0L,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASvI,CAAC,CAAC0J,MAAX,CAApB;AACA,QAAIlH,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAEA,IADE;AAER8I,MAAAA,KAAK,EAAEA,KAFC;AAGRD,MAAAA,IAAI,EAAE/I,GAAG,CAAC8B,UAAJ,CAAemJ,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;AAHE,KAAV;;AAMA,QAAIS,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,EAAIuI,GAAG,CAAC,CAAD,CAAP,CAAf;AACA,WAAOvI,CAAP;AACD;AAnBH,CA3Ea,EA+FV;AACH;AACA;AACEqJ,EAAAA,GAAG,EAAE,uFADP;AAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAIjC,KAAK,GAAG2C,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAO9I,WAAP,EAAD,CAApB;AACA,QAAIjC,IAAI,GAAG0L,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASvI,CAAC,CAAC0J,MAAX,CAApB;AACA,QAAIlH,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAEA,IADE;AAER8I,MAAAA,KAAK,EAAEA,KAFC;AAGRD,MAAAA,IAAI,EAAE/I,GAAG,CAAC8B,UAAJ,CAAemJ,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;AAHE,KAAV;;AAMA,QAAIS,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,EAAIuI,GAAG,CAAC,CAAD,CAAP,CAAf;AACA,WAAOvI,CAAP;AACD;AAnBH,CAjGa,EAqHV;AACH;AACEqJ,EAAAA,GAAG,EAAE,wBADP;AAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAIjC,KAAK,GAAG2C,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAO9I,WAAP,EAAD,CAApB;AACA,QAAIjC,IAAI,GAAG0L,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASvI,CAAC,CAAC0J,MAAX,CAApB;AACA,QAAIlH,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAEA,IADE;AAER8I,MAAAA,KAAK,EAAEA,KAFC;AAGRD,MAAAA,IAAI,EAAErG,CAAC,CAAC0J,MAAF,CAASrD,IAAT,IAAiB;AAHf,KAAV;;AAMA,QAAI2C,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,EAAIuI,GAAG,CAAC,CAAD,CAAP,CAAf;AACA,WAAOvI,CAAP;AACD;AAnBH,CAtHa,EA0IV;AACH;AACEqJ,EAAAA,GAAG,EAAE,4GADP;AAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAIjC,KAAK,GAAG2C,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAO9I,WAAP,EAAD,CAApB;;AAEA,QAAI,CAAC6G,KAAL,EAAY;AACV,aAAO,IAAP;AACD;;AAED,QAAI9I,IAAI,GAAG0L,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASvI,CAAC,CAAC0J,MAAX,CAApB;AACA,QAAIlH,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAEA,IADE;AAER8I,MAAAA,KAAK,EAAEA,KAFC;AAGRD,MAAAA,IAAI,EAAE/I,GAAG,CAAC8B,UAAJ,CAAemJ,GAAG,CAAC,CAAD,CAAlB;AAHE,KAAV;;AAMA,QAAIS,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,EAAIuI,GAAG,CAAC,CAAD,CAAP,CAAf;AACA,WAAOvI,CAAP;AACD;AAxBH,CA3Ia,EAoKV;AACD;AACAqJ,EAAAA,GAAG,EAAE,sBAFJ;AAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAIlK,GAAG,GAAGkK,GAAG,CAAC,CAAD,CAAH,IAAU,EAApB,CAD4B,CACJ;;AAExBlK,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,wBAAZ,EAAsC,KAAtC,CAAN,CAH4B,CAGwB;;AAEpDjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;AACA,QAAI9B,IAAI,GAAG+B,QAAQ,CAAClB,GAAG,CAACqB,IAAJ,EAAD,EAAa,EAAb,CAAnB;AACA,QAAIhC,CAAC,GAAG,IAAIqE,IAAJ,EAAR;AACA,QAAIS,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAEA,IADE;AAER8I,MAAAA,KAAK,EAAE5I,CAAC,CAAC8D,QAAF,EAFC;AAGR6E,MAAAA,IAAI,EAAE3I,CAAC,CAAC+D,OAAF;AAHE,KAAV;;AAMA,QAAIuH,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,CAAf;AACA,WAAOA,CAAP;AACD;AAzBA,CApKU,EA8LV;AACD;AACAqJ,EAAAA,GAAG,EAAE,iCAFJ;AAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAIlK,GAAG,GAAGkK,GAAG,CAAC,CAAD,CAAH,IAAU,EAApB,CAD4B,CACJ;;AAExBlK,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;AACA,QAAI9B,IAAI,GAAG+B,QAAQ,CAAClB,GAAG,CAACqB,IAAJ,EAAD,EAAa,EAAb,CAAnB;AACA,QAAIhC,CAAC,GAAG,IAAIqE,IAAJ,EAAR;AACA,QAAIS,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAEA,IADE;AAER8I,MAAAA,KAAK,EAAE5I,CAAC,CAAC8D,QAAF,EAFC;AAGR6E,MAAAA,IAAI,EAAE3I,CAAC,CAAC+D,OAAF;AAHE,KAAV;;AAMA,QAAIuH,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,CAAf;AACA,WAAOA,CAAP;AACD;AAvBA,CA9LU,EAsNV;AACD;AACAqJ,EAAAA,GAAG,EAAE,0BAFJ;AAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetJ,CAAf,EAAkBuI,GAAlB,EAAuB;AAC5B,QAAIY,KAAK,GAAGnJ,CAAC,CAAC0J,MAAd;AACA,QAAIlM,IAAI,GAAG0L,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASY,KAAT,CAApB;AACA,QAAIzL,CAAC,GAAG,IAAIqE,IAAJ,EAAR,CAH4B,CAGR;;AAEpB,QAAIoH,KAAK,CAAC7C,KAAN,IAAe,CAAC6C,KAAK,CAAC9C,IAA1B,EAAgC;AAC9B8C,MAAAA,KAAK,CAAC9C,IAAN,GAAa,CAAb;AACD;;AAED,QAAI7D,GAAG,GAAG;AACRhF,MAAAA,IAAI,EAAEA,IADE;AAER8I,MAAAA,KAAK,EAAE6C,KAAK,CAAC7C,KAAN,IAAe5I,CAAC,CAAC8D,QAAF,EAFd;AAGR6E,MAAAA,IAAI,EAAE8C,KAAK,CAAC9C,IAAN,IAAc3I,CAAC,CAAC+D,OAAF;AAHZ,KAAV;;AAMA,QAAIuH,SAAS,CAACxG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;AAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,aAAOE,CAAP;AACD;;AAEDwH,IAAAA,MAAM,CAACxH,CAAD,EAAIwC,GAAJ,CAAN;AACAxC,IAAAA,CAAC,GAAG2I,WAAW,CAAC3I,CAAD,CAAf;AACA,WAAOA,CAAP;AACD;AA1BA,CAtNU,CAAb;AAkPA,IAAI2J,QAAQ,GAAGP,MAAf,EAEA;;AACA,IAAIQ,MAAM,GAAG,SAASA,MAAT,CAAgB5J,CAAhB,EAAmB;AAC9BA,EAAAA,CAAC,CAACF,KAAF,GAAUiC,IAAI,CAAC8H,GAAL,EAAV;AACAlM,EAAAA,MAAM,CAAC+F,IAAP,CAAY1D,CAAC,CAAC0J,MAAF,IAAY,EAAxB,EAA4BhN,OAA5B,CAAoC,UAAUyC,CAAV,EAAa;AAC/C,QAAI,OAAOa,CAAC,CAACb,CAAD,CAAR,KAAgB,UAApB,EAAgC;AAC9Ba,MAAAA,CAAC,GAAGA,CAAC,CAACb,CAAD,CAAD,CAAKa,CAAC,CAAC0J,MAAF,CAASvK,CAAT,CAAL,CAAJ;AACD;AACF,GAJD;AAKA,SAAOa,CAAP;AACD,CARD;;AAUA,IAAI8J,KAAK,GAAG;AACVD,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa7J,CAAb,EAAgB;AACnB,WAAO4J,MAAM,CAAC5J,CAAD,CAAb;AACD,GAHS;AAIVmJ,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAenJ,CAAf,EAAkB;AACvB,WAAO4J,MAAM,CAAC5J,CAAD,CAAb;AACD,GANS;AAOV+J,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB/J,CAAjB,EAAoB;AAC3BA,IAAAA,CAAC,GAAG4J,MAAM,CAAC5J,CAAD,CAAV;AACAA,IAAAA,CAAC,GAAGA,CAAC,CAACmG,IAAF,CAAO,EAAP,CAAJ,CAF2B,CAEX;;AAEhB,WAAOnG,CAAP;AACD,GAZS;AAaVgK,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBhK,CAAlB,EAAqB;AAC7BA,IAAAA,CAAC,GAAG4J,MAAM,CAAC5J,CAAD,CAAV;AACAA,IAAAA,CAAC,GAAGA,CAAC,CAAClD,GAAF,CAAM,CAAN,EAAS,KAAT,CAAJ;AACAkD,IAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAJ;AACA,WAAOxI,CAAP;AACD,GAlBS;AAmBViK,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBjK,CAAnB,EAAsB;AAC/BA,IAAAA,CAAC,GAAG4J,MAAM,CAAC5J,CAAD,CAAV;AACAA,IAAAA,CAAC,GAAGA,CAAC,CAACkK,QAAF,CAAW,CAAX,EAAc,KAAd,CAAJ;AACAlK,IAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAJ;AACA,WAAOxI,CAAP;AACD,GAxBS;AAyBVmK,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBnK,CAAnB,EAAsB;AAC/B,QAAIxC,IAAI,GAAGoM,MAAM,CAAC5J,CAAD,CAAN,CAAUxC,IAAV,EAAX;AACAwC,IAAAA,CAAC,GAAGA,CAAC,CAACE,GAAF,CAAM,CAAC1C,IAAD,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,CAAN,CAAJ,CAF+B,CAEM;;AAErC,WAAOwC,CAAP;AACD,GA9BS;AA+BV,eAAa,SAASoK,QAAT,CAAkBpK,CAAlB,EAAqB;AAChC,QAAIxC,IAAI,GAAGoM,MAAM,CAAC5J,CAAD,CAAN,CAAUxC,IAAV,EAAX;AACAwC,IAAAA,CAAC,GAAGA,CAAC,CAACE,GAAF,CAAM,CAAC1C,IAAD,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,CAAN,CAAJ,CAFgC,CAEK;;AAErC,WAAOwC,CAAP;AACD;AApCS,CAAZ;AAsCA8J,KAAK,CAAC,eAAD,CAAL,GAAyBA,KAAK,CAAC,WAAD,CAA9B;AACA,IAAIO,UAAU,GAAGP,KAAjB,EAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIQ,YAAY,GAAG,UAAnB;AACA,IAAIC,QAAQ,GAAG;AACb/M,EAAAA,IAAI,EAAE,IAAIuE,IAAJ,GAAWoF,WAAX,EADO;AAEbb,EAAAA,KAAK,EAAE,CAFM;AAGbD,EAAAA,IAAI,EAAE;AAHO,CAAf,EAIG;;AAEH,IAAImE,WAAW,GAAG,SAASA,WAAT,CAAqBxK,CAArB,EAAwBuI,GAAxB,EAA6BY,KAA7B,EAAoC;AACpD,MAAIsB,KAAK,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,QAAlC,EAA4C,QAA5C,EAAsD,aAAtD,CAAZ;;AAEA,OAAK,IAAIxL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwL,KAAK,CAACjM,MAA1B,EAAkCS,CAAC,EAAnC,EAAuC;AACrC,QAAI6E,GAAG,GAAGyE,GAAG,CAACtJ,CAAD,CAAH,IAAUkK,KAAK,CAACsB,KAAK,CAACxL,CAAD,CAAN,CAAf,IAA6BsL,QAAQ,CAACE,KAAK,CAACxL,CAAD,CAAN,CAArC,IAAmD,CAA7D;AACAe,IAAAA,CAAC,GAAGA,CAAC,CAACyK,KAAK,CAACxL,CAAD,CAAN,CAAD,CAAY6E,GAAZ,CAAJ;AACD;;AAED,SAAO9D,CAAP;AACD,CATD,EASG;;;AAGH,IAAI0K,YAAY,GAAG,SAASA,YAAT,CAAsB1K,CAAtB,EAAyBwC,GAAzB,EAA8B2G,KAA9B,EAAqC;AACtD3G,EAAAA,GAAG,GAAG7E,MAAM,CAACgN,MAAP,CAAc,EAAd,EAAkBJ,QAAlB,EAA4BpB,KAA5B,EAAmC3G,GAAnC,CAAN;AACA,MAAIkB,IAAI,GAAG/F,MAAM,CAAC+F,IAAP,CAAYlB,GAAZ,CAAX;;AAEA,OAAK,IAAIvD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyE,IAAI,CAAClF,MAAzB,EAAiCS,CAAC,EAAlC,EAAsC;AACpC,QAAIyH,IAAI,GAAGhD,IAAI,CAACzE,CAAD,CAAf,CADoC,CAChB;;AAEpB,QAAIe,CAAC,CAAC0G,IAAD,CAAD,KAAYjI,SAAZ,IAAyB,OAAOuB,CAAC,CAAC0G,IAAD,CAAR,KAAmB,UAAhD,EAA4D;AAC1D;AACD,KALmC,CAKlC;;;AAGF,QAAIlE,GAAG,CAACkE,IAAD,CAAH,KAAc,IAAd,IAAsBlE,GAAG,CAACkE,IAAD,CAAH,KAAcjI,SAApC,IAAiD+D,GAAG,CAACkE,IAAD,CAAH,KAAc,EAAnE,EAAuE;AACrE;AACD;;AAED,QAAI5C,GAAG,GAAGtB,GAAG,CAACkE,IAAD,CAAH,IAAayC,KAAK,CAACzC,IAAD,CAAlB,IAA4B6D,QAAQ,CAAC7D,IAAD,CAApC,IAA8C,CAAxD;AACA1G,IAAAA,CAAC,GAAGA,CAAC,CAAC0G,IAAD,CAAD,CAAQ5C,GAAR,CAAJ;AACD;;AAED,SAAO9D,CAAP;AACD,CArBD,EAqBG;;;AAGH,IAAI4K,UAAU,GAAG,SAASA,UAAT,CAAoB5K,CAApB,EAAuB9B,KAAvB,EAA8BqL,OAA9B,EAAuC;AACtD,MAAIJ,KAAK,GAAGnJ,CAAC,CAAC0J,MAAF,IAAYa,QAAxB,CADsD,CACpB;;AAElC,MAAI,OAAOrM,KAAP,KAAiB,QAArB,EAA+B;AAC7B,QAAIA,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAGoM,YAArB,IAAqCtK,CAAC,CAACuH,MAAF,KAAa,KAAtD,EAA6D;AAC3D7E,MAAAA,OAAO,CAACC,IAAR,CAAa,wDAAb;AACAD,MAAAA,OAAO,CAACC,IAAR,CAAa,uDAAb;AACD;;AAED3C,IAAAA,CAAC,CAACF,KAAF,GAAU5B,KAAV;AACA,WAAO8B,CAAP;AACD,GAXqD,CAWpD;;;AAGFA,EAAAA,CAAC,CAACF,KAAF,GAAUiC,IAAI,CAAC8H,GAAL,EAAV,CAdsD,CAchC;;AAEtB,MAAI7J,CAAC,CAAC0J,MAAF,IAAYpM,GAAG,CAACa,QAAJ,CAAa6B,CAAC,CAAC0J,MAAf,CAAZ,IAAsC/L,MAAM,CAAC+F,IAAP,CAAY1D,CAAC,CAAC0J,MAAd,EAAsBlL,MAAtB,GAA+B,CAAzE,EAA4E;AAC1E,QAAIqM,GAAG,GAAGH,YAAY,CAAC1K,CAAD,EAAImJ,KAAJ,EAAWoB,QAAX,CAAtB;;AAEA,QAAIM,GAAG,CAACC,OAAJ,EAAJ,EAAmB;AACjB9K,MAAAA,CAAC,CAACF,KAAF,GAAU+K,GAAG,CAAC/K,KAAd;AACD;AACF,GAtBqD,CAsBpD;;;AAGF,MAAI5B,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKO,SAA5B,IAAyCP,KAAK,KAAK,EAAvD,EAA2D;AACzD,WAAO8B,CAAP,CADyD,CAC/C;AACX,GA3BqD,CA2BpD;;;AAGF,MAAI1C,GAAG,CAACG,MAAJ,CAAWS,KAAX,MAAsB,IAA1B,EAAgC;AAC9B8B,IAAAA,CAAC,CAACF,KAAF,GAAU5B,KAAK,CAAC2B,OAAN,EAAV;AACA,WAAOG,CAAP;AACD,GAjCqD,CAiCpD;;;AAGF,MAAI1C,GAAG,CAACW,OAAJ,CAAYC,KAAZ,MAAuB,IAA3B,EAAiC;AAC/B8B,IAAAA,CAAC,GAAGwK,WAAW,CAACxK,CAAD,EAAI9B,KAAJ,EAAWiL,KAAX,CAAf;AACA,WAAOnJ,CAAP;AACD,GAvCqD,CAuCpD;;;AAGF,MAAI1C,GAAG,CAACa,QAAJ,CAAaD,KAAb,MAAwB,IAA5B,EAAkC;AAChC;AACA,QAAIA,KAAK,CAAC4B,KAAV,EAAiB;AACfE,MAAAA,CAAC,CAACF,KAAF,GAAU5B,KAAK,CAAC4B,KAAhB;AACAE,MAAAA,CAAC,CAACyC,EAAF,GAAOvE,KAAK,CAACuE,EAAb;AACA,aAAOzC,CAAP;AACD;;AAEDA,IAAAA,CAAC,GAAG0K,YAAY,CAAC1K,CAAD,EAAI9B,KAAJ,EAAWiL,KAAX,CAAhB;AACA,WAAOnJ,CAAP;AACD,GApDqD,CAoDpD;;;AAGF,MAAI,OAAO9B,KAAP,KAAiB,QAArB,EAA+B;AAC7B,WAAO8B,CAAP;AACD,GAzDqD,CAyDpD;;;AAGF9B,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,8DAAd,EAA8E,EAA9E,CAAR;AACApB,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR;AACApB,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,KAAd,EAAqB,GAArB,EAA0BI,IAA1B,EAAR,CA9DsD,CA8DZ;;AAE1C,MAAI2K,UAAU,CAAC3E,cAAX,CAA0BxH,KAA1B,MAAqC,IAAzC,EAA+C;AAC7C8B,IAAAA,CAAC,GAAGqK,UAAU,CAACnM,KAAD,CAAV,CAAkB8B,CAAlB,CAAJ;AACA,WAAOA,CAAP;AACD,GAnEqD,CAmEpD;;;AAGF,OAAK,IAAIf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0K,QAAQ,CAACnL,MAA7B,EAAqCS,CAAC,EAAtC,EAA0C;AACxC,QAAIgG,CAAC,GAAG/G,KAAK,CAACgH,KAAN,CAAYyE,QAAQ,CAAC1K,CAAD,CAAR,CAAYoK,GAAxB,CAAR;;AAEA,QAAIpE,CAAJ,EAAO;AACL,UAAI8F,IAAI,GAAGpB,QAAQ,CAAC1K,CAAD,CAAR,CAAYqK,KAAZ,CAAkBtJ,CAAlB,EAAqBiF,CAArB,EAAwBsE,OAAxB,CAAX;;AAEA,UAAIwB,IAAI,KAAK,IAAb,EAAmB;AACjB,eAAOA,IAAP;AACD;AACF;AACF;;AAED,MAAI/K,CAAC,CAACuH,MAAF,KAAa,KAAjB,EAAwB;AACtB7E,IAAAA,OAAO,CAACC,IAAR,CAAa,2CAA2CzE,KAA3C,GAAmD,GAAhE;AACD;;AAED8B,EAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;AACA,SAAOE,CAAP;AACD,CAxFD;;AA0FA,IAAI9B,KAAK,GAAG0M,UAAZ;AAEA,IAAII,SAAS,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,CAAhB;AACA,IAAIC,QAAQ,GAAG,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgC,WAAhC,EAA6C,UAA7C,EAAyD,QAAzD,EAAmE,UAAnE,CAAf;AACA,IAAIC,IAAI,GAAG;AACT,WAAS,SAASnD,KAAT,GAAiB;AACxB,WAAOiD,SAAP;AACD,GAHQ;AAIT,UAAQ,SAAShD,IAAT,GAAgB;AACtB,WAAOiD,QAAP;AACD,GANQ;AAOT/K,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAagI,IAAb,EAAmB;AACtB8C,IAAAA,SAAS,GAAG9C,IAAI,CAAC,OAAD,CAAJ,IAAiB8C,SAA7B;AACAC,IAAAA,QAAQ,GAAG/C,IAAI,CAAC,MAAD,CAAJ,IAAgB+C,QAA3B;AACD;AAVQ,CAAX,EAaA;AACA;;AAEA,IAAIE,SAAS,GAAG,SAASA,SAAT,CAAmBnL,CAAnB,EAAsB;AACpC,MAAII,MAAM,GAAGJ,CAAC,CAACuE,QAAF,GAAapC,OAAb,CAAqB/B,MAAlC;AACA,MAAIgL,UAAU,GAAGhL,MAAM,GAAG,CAA1B;AACA,MAAI8F,MAAM,GAAG,IAAb,CAHoC,CAGjB;;AAEnB,MAAI3F,IAAI,CAACC,GAAL,CAASJ,MAAM,GAAG,CAAlB,MAAyB,GAA7B,EAAkC;AAChC8F,IAAAA,MAAM,GAAG,IAAT;;AAEA,QAAI9F,MAAM,IAAI,CAAd,EAAiB;AACfA,MAAAA,MAAM,GAAGG,IAAI,CAAC8K,KAAL,CAAWjL,MAAX,CAAT;AACD,KAFD,MAEO;AACLA,MAAAA,MAAM,GAAGG,IAAI,CAAC+K,IAAL,CAAUlL,MAAV,CAAT;AACD;AACF;;AAED,MAAIgL,UAAJ,EAAgB;AACd;AACAhL,IAAAA,MAAM,IAAI,CAAC,CAAX;AACAA,IAAAA,MAAM,GAAG9C,GAAG,CAACc,OAAJ,CAAYgC,MAAZ,EAAoB,CAApB,CAAT;AACAA,IAAAA,MAAM,GAAG,MAAMA,MAAf;AACD,GALD,MAKO;AACLA,IAAAA,MAAM,GAAG9C,GAAG,CAACc,OAAJ,CAAYgC,MAAZ,EAAoB,CAApB,CAAT;AACAA,IAAAA,MAAM,GAAG,MAAMA,MAAf;AACD;;AAEDA,EAAAA,MAAM,GAAGA,MAAM,GAAG,GAAT,GAAe8F,MAAxB,CAzBoC,CAyBJ;;AAEhC,MAAI9F,MAAM,KAAK,QAAf,EAAyB;AACvBA,IAAAA,MAAM,GAAG,GAAT;AACD;;AAED,SAAOA,MAAP;AACD,CAhCD;;AAkCA,IAAImL,OAAO,GAAGJ,SAAd;AAEA,IAAI9G,MAAM,GAAG;AACX+B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAapG,CAAb,EAAgB;AACnB,WAAO1C,GAAG,CAACuB,SAAJ,CAAcmB,CAAC,CAACwL,OAAF,EAAd,CAAP;AACD,GAHU;AAIX,eAAa,SAASC,QAAT,CAAkBzL,CAAlB,EAAqB;AAChC,WAAO1C,GAAG,CAACuB,SAAJ,CAAcqM,IAAI,CAAC,OAAD,CAAJ,GAAgBlL,CAAC,CAACoG,GAAF,EAAhB,CAAd,CAAP;AACD,GANU;AAOX,gBAAc,SAASsF,SAAT,CAAmB1L,CAAnB,EAAsB;AAClC,WAAOA,CAAC,CAACoG,GAAF,EAAP;AACD,GATU;AAUX,iBAAe,SAASuF,UAAT,CAAoB3L,CAApB,EAAuB;AACpC,WAAO1C,GAAG,CAAC0B,OAAJ,CAAYgB,CAAC,CAACoG,GAAF,EAAZ,CAAP;AACD,GAZU;AAaX,aAAW,SAASwF,MAAT,CAAgB5L,CAAhB,EAAmB;AAC5B,WAAO1C,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACoG,GAAF,EAAZ,CAAP;AACD,GAfU;AAgBXC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrG,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACqG,IAAF,EAAP;AACD,GAlBU;AAmBX,kBAAgB,SAASwF,WAAT,CAAqB7L,CAArB,EAAwB;AACtC,WAAO1C,GAAG,CAAC0B,OAAJ,CAAYgB,CAAC,CAACqG,IAAF,EAAZ,CAAP;AACD,GArBU;AAsBX,cAAY,SAASyF,OAAT,CAAiB9L,CAAjB,EAAoB;AAC9B,WAAO1C,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACqG,IAAF,EAAZ,CAAP;AACD,GAxBU;AAyBXC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetG,CAAf,EAAkB;AACvB,WAAO1C,GAAG,CAACuB,SAAJ,CAAcmB,CAAC,CAAC+L,SAAF,EAAd,CAAP;AACD,GA3BU;AA4BX,iBAAe,SAASC,UAAT,CAAoBhM,CAApB,EAAuB;AACpC,WAAO1C,GAAG,CAACuB,SAAJ,CAAciJ,MAAM,CAAC,OAAD,CAAN,GAAkB9H,CAAC,CAACsG,KAAF,EAAlB,CAAd,CAAP;AACD,GA9BU;AA+BX,kBAAgB,SAAS2F,WAAT,CAAqBjM,CAArB,EAAwB;AACtC,WAAOA,CAAC,CAACsG,KAAF,EAAP;AACD,GAjCU;AAkCX,mBAAiB,SAAS4F,YAAT,CAAsBlM,CAAtB,EAAyB;AACxC,WAAO1C,GAAG,CAAC0B,OAAJ,CAAYgB,CAAC,CAACsG,KAAF,EAAZ,CAAP;AACD,GApCU;AAqCX,eAAa,SAAS6F,QAAT,CAAkBnM,CAAlB,EAAqB;AAChC,WAAO1C,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACsG,KAAF,EAAZ,CAAP;AACD,GAvCU;AAwCX,eAAa,SAAS8F,QAAT,CAAkBpM,CAAlB,EAAqB;AAChC,WAAO1C,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACsG,KAAF,KAAY,CAAxB,CAAP;AACD,GA1CU;AA2CX;AACA9I,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcwC,CAAd,EAAiB;AACrB,QAAIxC,IAAI,GAAGwC,CAAC,CAACxC,IAAF,EAAX;;AAEA,QAAIA,IAAI,GAAG,CAAX,EAAc;AACZ,aAAOA,IAAP;AACD;;AAEDA,IAAAA,IAAI,GAAG+C,IAAI,CAACC,GAAL,CAAShD,IAAT,CAAP;AACA,WAAOA,IAAI,GAAG,KAAd;AACD,GArDU;AAsDX,gBAAc,SAAS6O,SAAT,CAAmBrM,CAAnB,EAAsB;AAClC,QAAIxC,IAAI,GAAGwC,CAAC,CAACxC,IAAF,EAAX;;AAEA,QAAIA,IAAI,GAAG,CAAX,EAAc;AACZ,aAAO,IAAIkD,MAAJ,CAAWrB,MAAM,CAACW,CAAC,CAACxC,IAAF,EAAD,CAAN,CAAiBuB,MAAjB,CAAwB,CAAxB,EAA2B,CAA3B,CAAX,CAAP;AACD;;AAEDvB,IAAAA,IAAI,GAAG+C,IAAI,CAACC,GAAL,CAAShD,IAAT,CAAP;AACA,WAAOA,IAAI,GAAG,KAAd;AACD,GA/DU;AAgEX,cAAY,SAAS8O,OAAT,CAAiBtM,CAAjB,EAAoB;AAC9B,QAAIxC,IAAI,GAAGwC,CAAC,CAACxC,IAAF,EAAX;AACA,QAAI4N,UAAU,GAAG5N,IAAI,GAAG,CAAxB;AACA,QAAIa,GAAG,GAAGf,GAAG,CAACc,OAAJ,CAAYmC,IAAI,CAACC,GAAL,CAAShD,IAAT,CAAZ,EAA4B,CAA5B,CAAV,CAH8B,CAGY;;AAE1C,QAAI4N,UAAJ,EAAgB;AACd;AACA/M,MAAAA,GAAG,GAAGf,GAAG,CAACc,OAAJ,CAAYC,GAAZ,EAAiB,CAAjB,CAAN;AACAA,MAAAA,GAAG,GAAG,MAAMA,GAAZ;AACD;;AAED,WAAOA,GAAP;AACD,GA5EU;AA6EXkO,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvM,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACuM,IAAF,EAAP;AACD,GA/EU;AAgFX,aAAW,SAASC,MAAT,CAAgBxM,CAAhB,EAAmB;AAC5B,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACyM,MAAF,EAAV,EAAsB,GAAtB,EAA2B/L,MAA3B,CAAkCpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACkG,MAAF,EAAZ,CAAlC,CAAP;AACD,GAlFU;AAmFXC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcnG,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAAC0M,MAAF,EAAP;AACD,GArFU;AAsFX,cAAY,SAASC,OAAT,CAAiB3M,CAAjB,EAAoB;AAC9B,WAAO1C,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAAC0M,MAAF,EAAZ,CAAP;AACD,GAxFU;AAyFX,aAAW,SAASD,MAAT,CAAgBzM,CAAhB,EAAmB;AAC5B,WAAOA,CAAC,CAACyM,MAAF,EAAP;AACD,GA3FU;AA4FX,iBAAe,SAASG,SAAT,CAAmB5M,CAAnB,EAAsB;AACnC,WAAO1C,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACyM,MAAF,EAAZ,CAAP;AACD,GA9FU;AA+FXvG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlG,CAAhB,EAAmB;AACzB,WAAOA,CAAC,CAACkG,MAAF,EAAP;AACD,GAjGU;AAkGX,gBAAc,SAAS2G,SAAT,CAAmB7M,CAAnB,EAAsB;AAClC,WAAO1C,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACkG,MAAF,EAAZ,CAAP;AACD,GApGU;AAqGXD,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBjG,CAAhB,EAAmB;AACzB,WAAOA,CAAC,CAACiG,MAAF,EAAP;AACD,GAvGU;AAwGX,gBAAc,SAAS6G,SAAT,CAAmB9M,CAAnB,EAAsB;AAClC,WAAO1C,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACiG,MAAF,EAAZ,CAAP;AACD,GA1GU;AA2GXwC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAczI,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACyI,IAAF,EAAP;AACD,GA7GU;AA8GXsE,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB/M,CAAjB,EAAoB;AAC3B,WAAO,MAAMA,CAAC,CAAC+M,OAAF,EAAb;AACD,GAhHU;AAiHXC,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBhN,CAAhB,EAAmB;AACzB,WAAOA,CAAC,CAACgN,MAAF,EAAP;AACD,GAnHU;AAoHXC,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajN,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAACiN,GAAF,EAAP;AACD,GAtHU;AAuHXC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclN,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACkN,IAAF,EAAP;AACD,GAzHU;AA0HX3I,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBvE,CAAlB,EAAqB;AAC7B,WAAOA,CAAC,CAACuE,QAAF,GAAaR,IAApB;AACD,GA5HU;AA6HX3D,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBJ,CAAhB,EAAmB;AACzB,WAAOuL,OAAO,CAACvL,CAAD,CAAd;AACD,GA/HU;AAgIXmN,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBnN,CAAjB,EAAoB;AAC3B,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACxC,IAAF,EAAV,EAAoB,GAApB,EAAyBkD,MAAzB,CAAgCpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACsG,KAAF,KAAY,CAAxB,CAAhC,EAA4D,GAA5D,EAAiE5F,MAAjE,CAAwEpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACqG,IAAF,EAAZ,CAAxE,CAAP;AACD,GAlIU;AAmIX;AACA,gBAAc,SAAS+G,SAAT,CAAmBpN,CAAnB,EAAsB;AAClC,WAAO,GAAGU,MAAH,CAAUpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACsG,KAAF,KAAY,CAAxB,CAAV,EAAsC,GAAtC,EAA2C5F,MAA3C,CAAkDpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACqG,IAAF,EAAZ,CAAlD,EAAyE,GAAzE,EAA8E3F,MAA9E,CAAqFV,CAAC,CAACxC,IAAF,EAArF,CAAP;AACD,GAtIU;AAuIX;AACA,gBAAc,SAAS6P,SAAT,CAAmBrN,CAAnB,EAAsB;AAClC,WAAO,GAAGU,MAAH,CAAUpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACqG,IAAF,EAAZ,CAAV,EAAiC,GAAjC,EAAsC3F,MAAtC,CAA6CpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACsG,KAAF,KAAY,CAAxB,CAA7C,EAAyE,GAAzE,EAA8E5F,MAA9E,CAAqFV,CAAC,CAACxC,IAAF,EAArF,CAAP;AACD,GA1IU;AA2IX;AACA,WAAS,SAAS8P,IAAT,CAActN,CAAd,EAAiB;AACxB,WAAO,GAAGU,MAAH,CAAUpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACsG,KAAF,KAAY,CAAxB,CAAV,EAAsC,GAAtC,EAA2C5F,MAA3C,CAAkDpD,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACqG,IAAF,EAAZ,CAAlD,CAAP;AACD,GA9IU;AA+IX;AACA;AACAkH,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavN,CAAb,EAAgB;AACnB,QAAIxC,IAAI,GAAGwC,CAAC,CAACqE,MAAF,CAAS,UAAT,CAAX;AACA,QAAIiC,KAAK,GAAGhJ,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACsG,KAAF,KAAY,CAAxB,CAAZ,CAFmB,CAEqB;;AAExC,QAAID,IAAI,GAAG/I,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACqG,IAAF,EAAZ,CAAX;AACA,QAAIF,IAAI,GAAG7I,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACwN,GAAF,EAAZ,CAAX;AACA,QAAItH,MAAM,GAAG5I,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACkG,MAAF,EAAZ,CAAb;AACA,QAAID,MAAM,GAAG3I,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACiG,MAAF,EAAZ,CAAb;AACA,QAAIwH,EAAE,GAAGnQ,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACgG,WAAF,EAAZ,EAA6B,CAA7B,CAAT;;AACA,QAAI5F,MAAM,GAAGmL,OAAO,CAACvL,CAAD,CAApB;;AACA,WAAO,GAAGU,MAAH,CAAUlD,IAAV,EAAgB,GAAhB,EAAqBkD,MAArB,CAA4B4F,KAA5B,EAAmC,GAAnC,EAAwC5F,MAAxC,CAA+C2F,IAA/C,EAAqD,GAArD,EAA0D3F,MAA1D,CAAiEyF,IAAjE,EAAuE,GAAvE,EAA4EzF,MAA5E,CAAmFwF,MAAnF,EAA2F,GAA3F,EAAgGxF,MAAhG,CAAuGuF,MAAvG,EAA+G,GAA/G,EAAoHvF,MAApH,CAA2H+M,EAA3H,EAA+H/M,MAA/H,CAAsIN,MAAtI,CAAP,CAVmB,CAUmI;AACvJ,GA5JU;AA6JX,eAAa,SAASsN,QAAT,CAAkB1N,CAAlB,EAAqB;AAChC,QAAIsG,KAAK,GAAGhJ,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACsG,KAAF,KAAY,CAAxB,CAAZ,CADgC,CACQ;;AAExC,QAAID,IAAI,GAAG/I,GAAG,CAACc,OAAJ,CAAY4B,CAAC,CAACqG,IAAF,EAAZ,CAAX;AACA,WAAO,GAAG3F,MAAH,CAAUV,CAAC,CAACxC,IAAF,EAAV,EAAoB,GAApB,EAAyBkD,MAAzB,CAAgC4F,KAAhC,EAAuC,GAAvC,EAA4C5F,MAA5C,CAAmD2F,IAAnD,CAAP,CAJgC,CAIiC;AAClE,GAlKU;AAmKX,aAAW,SAASsH,MAAT,CAAgB3N,CAAhB,EAAmB;AAC5B,WAAO,IAAI+B,IAAJ,CAAS/B,CAAC,CAACF,KAAX,EAAkB8N,WAAlB,EAAP,CAD4B,CACY;AACzC,GArKU;AAsKX;AACAC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc7N,CAAd,EAAiB;AACrB,WAAO,GAAGU,MAAH,CAAUoH,MAAM,CAAC,OAAD,CAAN,GAAkB9H,CAAC,CAACsG,KAAF,EAAlB,CAAV,EAAwC,GAAxC,EAA6C5F,MAA7C,CAAoDpD,GAAG,CAAC0B,OAAJ,CAAYgB,CAAC,CAACqG,IAAF,EAAZ,CAApD,EAA2E,IAA3E,EAAiF3F,MAAjF,CAAwFV,CAAC,CAACuM,IAAF,EAAxF,CAAP;AACD,GAzKU;AA0KX,eAAa,SAASuB,QAAT,CAAkB9N,CAAlB,EAAqB;AAChC,WAAO,GAAGU,MAAH,CAAUoH,MAAM,CAAC,OAAD,CAAN,GAAkB9H,CAAC,CAACsG,KAAF,EAAlB,CAAV,EAAwC,GAAxC,EAA6C5F,MAA7C,CAAoDpD,GAAG,CAAC0B,OAAJ,CAAYgB,CAAC,CAACqG,IAAF,EAAZ,CAApD,EAA2E,IAA3E,EAAiF3F,MAAjF,CAAwFV,CAAC,CAACxC,IAAF,EAAxF,CAAP;AACD,GA5KU;AA6KX,cAAY,SAASuQ,OAAT,CAAiB/N,CAAjB,EAAoB;AAC9B,WAAO,GAAGU,MAAH,CAAUwK,IAAI,CAAC,OAAD,CAAJ,GAAgBlL,CAAC,CAACoG,GAAF,EAAhB,CAAV,EAAoC,GAApC,EAAyC1F,MAAzC,CAAgDpD,GAAG,CAACuB,SAAJ,CAAciJ,MAAM,CAAC,OAAD,CAAN,GAAkB9H,CAAC,CAACsG,KAAF,EAAlB,CAAd,CAAhD,EAA6F,GAA7F,EAAkG5F,MAAlG,CAAyGpD,GAAG,CAAC0B,OAAJ,CAAYgB,CAAC,CAACqG,IAAF,EAAZ,CAAzG,CAAP;AACD,GA/KU;AAgLX,eAAa,SAAS2H,QAAT,CAAkBhO,CAAlB,EAAqB;AAChC,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACwL,OAAF,EAAV,EAAuB,GAAvB,EAA4B9K,MAA5B,CAAmCpD,GAAG,CAACuB,SAAJ,CAAcmB,CAAC,CAAC+L,SAAF,EAAd,CAAnC,EAAiE,GAAjE,EAAsErL,MAAtE,CAA6EpD,GAAG,CAAC0B,OAAJ,CAAYgB,CAAC,CAACqG,IAAF,EAAZ,CAA7E,EAAoG,IAApG,EAA0G3F,MAA1G,CAAiHV,CAAC,CAACuM,IAAF,EAAjH,CAAP;AACD;AAlLU,CAAb,EAmLG;;AAEH,IAAI0B,OAAO,GAAG;AACZ,cAAY,KADA;AAEZ,gBAAc,OAFF;AAGZ,cAAY,KAHA;AAIZ,cAAY,SAJA;AAKZ,aAAW,MALC;AAMZ,cAAY,MANA;AAOZxL,EAAAA,EAAE,EAAE,UAPQ;AAQZ,aAAW,YARC;AASZ,eAAa,cATD;AAUZ,eAAa,WAVD;AAWZ,cAAY,UAXA;AAYZ,gBAAc,MAZF;AAaZyL,EAAAA,GAAG,EAAE,YAbO;AAcZC,EAAAA,GAAG,EAAE,YAdO;AAeZC,EAAAA,GAAG,EAAE,SAfO;AAgBZ,gBAAc,SAhBF;AAiBZ,gBAAc,YAjBF;AAkBZ,gBAAc,YAlBF;AAmBZ,mBAAiB,YAnBL;AAoBZ,gBAAc,SApBF;AAqBZ,cAAY;AArBA,CAAd;AAuBAzQ,MAAM,CAAC+F,IAAP,CAAYuK,OAAZ,EAAqBvR,OAArB,CAA6B,UAAUyC,CAAV,EAAa;AACxC,SAAOkF,MAAM,CAAClF,CAAD,CAAN,GAAYkF,MAAM,CAAC4J,OAAO,CAAC9O,CAAD,CAAR,CAAzB;AACD,CAFD;;AAIA,IAAIkP,WAAW,GAAG,SAASA,WAAT,CAAqBrO,CAArB,EAAwB;AACxC,MAAI3B,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E,CADwC,CAGxC;;AACA,MAAIyB,CAAC,CAAC8K,OAAF,OAAgB,IAApB,EAA0B;AACxB,WAAO,EAAP;AACD,GANuC,CAMtC;;;AAGF,MAAIzG,MAAM,CAACqB,cAAP,CAAsBrH,GAAtB,CAAJ,EAAgC;AAC9B,QAAIiQ,GAAG,GAAGjK,MAAM,CAAChG,GAAD,CAAN,CAAY2B,CAAZ,KAAkB,EAA5B;;AAEA,QAAI3B,GAAG,KAAK,MAAZ,EAAoB;AAClBiQ,MAAAA,GAAG,GAAGjP,MAAM,CAACiP,GAAD,CAAZ;;AAEA,UAAIjQ,GAAG,KAAK,MAAZ,EAAoB;AAClBiQ,QAAAA,GAAG,GAAGhR,GAAG,CAACuB,SAAJ,CAAcyP,GAAd,CAAN;AACD;AACF;;AAED,WAAOA,GAAP;AACD,GArBuC,CAqBtC;;;AAGF,MAAIjQ,GAAG,CAACkQ,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AAC3B,QAAIC,QAAQ,GAAG,YAAf;AACAnQ,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAYkP,QAAZ,EAAsB,UAAUC,CAAV,EAAaC,GAAb,EAAkB;AAC5CA,MAAAA,GAAG,GAAGA,GAAG,CAACjP,WAAJ,GAAkBC,IAAlB,EAAN;;AAEA,UAAI2E,MAAM,CAACqB,cAAP,CAAsBgJ,GAAtB,CAAJ,EAAgC;AAC9B,eAAOrP,MAAM,CAACgF,MAAM,CAACqK,GAAD,CAAN,CAAY1O,CAAZ,CAAD,CAAb;AACD;;AAED,aAAO,EAAP;AACD,KARK,CAAN;AASA,WAAO3B,GAAP;AACD;;AAED,SAAO2B,CAAC,CAACqE,MAAF,CAAS,WAAT,CAAP;AACD,CAvCD;;AAyCA,IAAIsK,QAAQ,GAAGN,WAAf;AAEA,IAAI3P,GAAG,GAAGpB,GAAG,CAACc,OAAd;AACA,IAAI+B,cAAc,GAAG7C,GAAG,CAAC6C,cAAzB,EAAyC;AACzC;AACA;;AAEA,IAAI8H,OAAO,GAAG;AACZ2G,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW5O,CAAX,EAAc;AACf,WAAOA,CAAC,CAACiN,GAAF,EAAP;AACD,GAHW;AAIZ4B,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY7O,CAAZ,EAAe;AACjB,WAAOA,CAAC,CAACiN,GAAF,EAAP;AACD,GANW;AAOZ6B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa9O,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAACiN,GAAF,EAAP;AACD,GATW;AAUZ8B,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/O,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACiN,GAAF,OAAY,IAAZ,GAAmB,aAAnB,GAAmC,eAA1C;AACD,GAZW;AAaZ;AACA+B,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWhP,CAAX,EAAc;AACf,WAAOA,CAAC,CAACxC,IAAF,EAAP;AACD,GAhBW;AAiBZyR,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYjP,CAAZ,EAAe;AACjB;AACA,WAAOT,QAAQ,CAACF,MAAM,CAACW,CAAC,CAACxC,IAAF,EAAD,CAAN,CAAiBuB,MAAjB,CAAwB,CAAxB,EAA2B,CAA3B,CAAD,EAAgC,EAAhC,CAAf;AACD,GApBW;AAqBZmQ,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAalP,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAACxC,IAAF,EAAP;AACD,GAvBW;AAwBZ2R,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcnP,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACxC,IAAF,EAAP;AACD,GA1BW;AA2BZ4R,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAepP,CAAf,EAAkB;AACvB,WAAO,MAAMA,CAAC,CAACxC,IAAF,EAAb;AACD,GA7BW;AA8BZ;AACA;AACA6R,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWrP,CAAX,EAAc;AACf,WAAOA,CAAC,CAAC+M,OAAF,EAAP;AACD,GAlCW;AAmCZuC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYtP,CAAZ,EAAe;AACjB,WAAOA,CAAC,CAAC+M,OAAF,EAAP;AACD,GArCW;AAsCZwC,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavP,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAAC+M,OAAF,EAAP;AACD,GAxCW;AAyCZyC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcxP,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAAC+M,OAAF,EAAP;AACD,GA3CW;AA4CZ;AACA0C,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWzP,CAAX,EAAc;AACf,WAAOA,CAAC,CAACsG,KAAF,KAAY,CAAnB;AACD,GA/CW;AAgDZoJ,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY1P,CAAZ,EAAe;AACjB,WAAOtB,GAAG,CAACsB,CAAC,CAACsG,KAAF,KAAY,CAAb,CAAV;AACD,GAlDW;AAmDZqJ,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa3P,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAACqE,MAAF,CAAS,aAAT,CAAP;AACD,GArDW;AAsDZuL,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc5P,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACqE,MAAF,CAAS,OAAT,CAAP;AACD,GAxDW;AAyDZ;AACAwL,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW7P,CAAX,EAAc;AACf,WAAOA,CAAC,CAACuG,IAAF,EAAP;AACD,GA5DW;AA6DZuJ,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY9P,CAAZ,EAAe;AACjB,WAAOtB,GAAG,CAACsB,CAAC,CAACuG,IAAF,EAAD,CAAV;AACD,GA/DW;AAgEZ;AACA;AACA;AACA7I,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWsC,CAAX,EAAc;AACf,WAAOA,CAAC,CAACqG,IAAF,EAAP;AACD,GArEW;AAsEZ0J,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/P,CAAZ,EAAe;AACjB,WAAOtB,GAAG,CAACsB,CAAC,CAACqG,IAAF,EAAD,CAAV;AACD,GAxEW;AAyEZ;AACA2J,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWhQ,CAAX,EAAc;AACf,WAAOA,CAAC,CAACiQ,SAAF,EAAP;AACD,GA5EW;AA6EZC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYlQ,CAAZ,EAAe;AACjB,WAAOtB,GAAG,CAACsB,CAAC,CAACiQ,SAAF,EAAD,CAAV;AACD,GA/EW;AAgFZE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAanQ,CAAb,EAAgB;AACnB,WAAOtB,GAAG,CAACsB,CAAC,CAACiQ,SAAF,EAAD,EAAgB,CAAhB,CAAV;AACD,GAlFW;AAmFZ;AACA;AACA;AACAG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWpQ,CAAX,EAAc;AACf,WAAOA,CAAC,CAACqE,MAAF,CAAS,WAAT,CAAP;AACD,GAxFW;AAyFZgM,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYrQ,CAAZ,EAAe;AACjB,WAAOA,CAAC,CAACqE,MAAF,CAAS,WAAT,CAAP;AACD,GA3FW;AA4FZiM,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAatQ,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAACqE,MAAF,CAAS,WAAT,CAAP;AACD,GA9FW;AA+FZkM,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvQ,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACqE,MAAF,CAAS,KAAT,CAAP;AACD,GAjGW;AAkGZmM,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAexQ,CAAf,EAAkB;AACvB,WAAOA,CAAC,CAACqE,MAAF,CAAS,KAAT,EAAgB,CAAhB,CAAP;AACD,GApGW;AAqGZoM,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWzQ,CAAX,EAAc;AACf,WAAOA,CAAC,CAACoG,GAAF,EAAP;AACD,GAvGW;AAwGZsK,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY1Q,CAAZ,EAAe;AACjB,WAAOA,CAAC,CAACoG,GAAF,EAAP;AACD,GA1GW;AA2GZuK,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa3Q,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAACqE,MAAF,CAAS,WAAT,CAAP;AACD,GA7GW;AA8GZuM,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc5Q,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACqE,MAAF,CAAS,KAAT,CAAP;AACD,GAhHW;AAiHZwM,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7Q,CAAf,EAAkB;AACvB,WAAOA,CAAC,CAACqE,MAAF,CAAS,KAAT,EAAgB,CAAhB,CAAP;AACD,GAnHW;AAoHZ;AACAyM,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW9Q,CAAX,EAAc;AACf,WAAOA,CAAC,CAACyI,IAAF,GAAS3J,WAAT,EAAP;AACD,GAvHW;AAwHZiS,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/Q,CAAZ,EAAe;AACjB,WAAOA,CAAC,CAACyI,IAAF,GAAS3J,WAAT,EAAP;AACD,GA1HW;AA2HZkS,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAahR,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAACyI,IAAF,GAAS3J,WAAT,EAAP;AACD,GA7HW;AA8HZmS,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjR,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACyI,IAAF,GAAS3J,WAAT,EAAP;AACD,GAhIW;AAiIZ;AACAyG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWvF,CAAX,EAAc;AACf,WAAOA,CAAC,CAACkR,GAAF,EAAP;AACD,GApIW;AAqIZC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYnR,CAAZ,EAAe;AACjB,WAAOtB,GAAG,CAACsB,CAAC,CAACkR,GAAF,EAAD,CAAV;AACD,GAvIW;AAwIZE,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWpR,CAAX,EAAc;AACf,WAAOA,CAAC,CAACmG,IAAF,EAAP;AACD,GA1IW;AA2IZkL,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYrR,CAAZ,EAAe;AACjB,WAAOtB,GAAG,CAACsB,CAAC,CAACmG,IAAF,EAAD,CAAV;AACD,GA7IW;AA8IZ;AACAlB,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWjF,CAAX,EAAc;AACf,WAAOA,CAAC,CAACkG,MAAF,EAAP;AACD,GAjJW;AAkJZoL,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYtR,CAAZ,EAAe;AACjB,WAAOtB,GAAG,CAACsB,CAAC,CAACkG,MAAF,EAAD,CAAV;AACD,GApJW;AAqJZlG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWuR,EAAX,EAAe;AAChB,WAAOA,EAAE,CAACtL,MAAH,EAAP;AACD,GAvJW;AAwJZuL,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxR,CAAZ,EAAe;AACjB,WAAOtB,GAAG,CAACsB,CAAC,CAACiG,MAAF,EAAD,CAAV;AACD,GA1JW;AA2JZ;AACAwL,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWzR,CAAX,EAAc;AACf,WAAOA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAACwI,OAAF,CAAU,KAAV,EAAiB1I,KAAlC;AACD,GA9JW;AA+JZ;AACA4R,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW1R,CAAX,EAAc;AACf,WAAOA,CAAC,CAACuE,QAAF,GAAaR,IAApB;AACD,GAlKW;AAmKZ4N,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY3R,CAAZ,EAAe;AACjB,WAAOA,CAAC,CAACuE,QAAF,GAAaR,IAApB;AACD,GArKW;AAsKZ6N,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa5R,CAAb,EAAgB;AACnB,WAAOA,CAAC,CAACuE,QAAF,GAAaR,IAApB;AACD,GAxKW;AAyKZ8N,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc7R,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACuE,QAAF,GAAaR,IAApB;AACD,GA3KW;AA4KZ+N,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW9R,CAAX,EAAc;AACf,WAAOG,cAAc,CAACH,CAAC,CAACuE,QAAF,GAAapC,OAAb,CAAqB/B,MAAtB,CAArB;AACD,GA9KW;AA+KZ2R,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/R,CAAZ,EAAe;AACjB,WAAOG,cAAc,CAACH,CAAC,CAACuE,QAAF,GAAapC,OAAb,CAAqB/B,MAAtB,CAArB;AACD,GAjLW;AAkLZ4R,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAahS,CAAb,EAAgB;AACnB,WAAOG,cAAc,CAACH,CAAC,CAACuE,QAAF,GAAapC,OAAb,CAAqB/B,MAAtB,CAArB;AACD,GApLW;AAqLZ6R,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjS,CAAd,EAAiB;AACrB,WAAOG,cAAc,CAACH,CAAC,CAACuE,QAAF,GAAapC,OAAb,CAAqB/B,MAAtB,EAA8B,GAA9B,CAArB;AACD;AAvLW,CAAd;;AA0LA,IAAI8R,QAAQ,GAAG,SAASA,QAAT,CAAkBC,KAAlB,EAAyBC,EAAzB,EAA6B/U,CAA7B,EAAgC;AAC7C,MAAI0G,IAAI,GAAGoO,KAAX;AACA,MAAIE,MAAM,GAAGD,EAAb;;AAEA,OAAK,IAAInT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG5B,CAApB,EAAuB4B,CAAC,IAAI,CAA5B,EAA+B;AAC7BgJ,IAAAA,OAAO,CAAClE,IAAD,CAAP,GAAgBkE,OAAO,CAACoK,MAAD,CAAvB;AACAtO,IAAAA,IAAI,IAAIoO,KAAR;AACAE,IAAAA,MAAM,IAAID,EAAV;AACD;AACF,CATD;;AAWAF,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;AACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;AACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;AACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;AACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;AACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;AACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;AACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;AACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;;AAEA,IAAII,OAAO,GAAG,SAASA,OAAT,CAAiBtS,CAAjB,EAAoB3B,GAApB,EAAyB;AACrC,MAAIkU,KAAK,GAAGlU,GAAG,CAAC2E,KAAJ,CAAU,EAAV,CAAZ,CADqC,CACV;;AAE3B,MAAIuF,GAAG,GAAG,CAACgK,KAAK,CAAC,CAAD,CAAN,CAAV;AACA,MAAIC,OAAO,GAAG,KAAd;;AAEA,OAAK,IAAIvT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsT,KAAK,CAAC/T,MAA1B,EAAkCS,CAAC,IAAI,CAAvC,EAA0C;AACxC;AACA,QAAIsT,KAAK,CAACtT,CAAD,CAAL,KAAa,GAAjB,EAAsB;AACpBuT,MAAAA,OAAO,GAAG,CAACA,OAAX,CADoB,CACA;;AAEpB,UAAIA,OAAO,KAAK,IAAZ,IAAoBD,KAAK,CAACtT,CAAC,GAAG,CAAL,CAAzB,IAAoCsT,KAAK,CAACtT,CAAC,GAAG,CAAL,CAAL,KAAiB,GAAzD,EAA8D;AAC5DuT,QAAAA,OAAO,GAAG,IAAV;AACD,OAFD,MAEO;AACL;AACD;AACF,KAVuC,CAUtC;;;AAGF,QAAIA,OAAO,KAAK,IAAZ,IAAoBD,KAAK,CAACtT,CAAD,CAAL,KAAasJ,GAAG,CAACA,GAAG,CAAC/J,MAAJ,GAAa,CAAd,CAAH,CAAoB,CAApB,CAArC,EAA6D;AAC3D+J,MAAAA,GAAG,CAACA,GAAG,CAAC/J,MAAJ,GAAa,CAAd,CAAH,IAAuB+T,KAAK,CAACtT,CAAD,CAA5B;AACD,KAFD,MAEO;AACLsJ,MAAAA,GAAG,CAACkK,IAAJ,CAASF,KAAK,CAACtT,CAAD,CAAd;AACD;AACF;;AAED,SAAOsJ,GAAG,CAACjD,MAAJ,CAAW,UAAUoN,GAAV,EAAeC,CAAf,EAAkB;AAClC,QAAI1K,OAAO,CAAC0K,CAAD,CAAP,KAAelU,SAAnB,EAA8B;AAC5BiU,MAAAA,GAAG,IAAIzK,OAAO,CAAC0K,CAAD,CAAP,CAAW3S,CAAX,KAAiB,EAAxB;AACD,KAFD,MAEO;AACL0S,MAAAA,GAAG,IAAIC,CAAP;AACD;;AAED,WAAOD,GAAP;AACD,GARM,EAQJ,EARI,CAAP;AASD,CAnCD;;AAqCA,IAAIE,SAAS,GAAGN,OAAhB;AAEA,IAAIO,OAAO,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,SAAnB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,aAAtD,EAAqE,MAArE,EAA6E,QAA7E,CAAd;;AAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgB9S,CAAhB,EAAmBb,CAAnB,EAAsB;AACjC,MAAIyC,KAAK,GAAG5B,CAAC,CAACC,KAAF,GAAUuI,OAAV,CAAkBrJ,CAAlB,CAAZ;AACA,MAAI0C,GAAG,GAAG7B,CAAC,CAACC,KAAF,GAAU8S,KAAV,CAAgB5T,CAAhB,CAAV;AACA,MAAI6T,QAAQ,GAAGnR,GAAG,CAAC/B,KAAJ,GAAY8B,KAAK,CAAC9B,KAAjC;AACA,MAAImT,OAAO,GAAG,CAACjT,CAAC,CAACF,KAAF,GAAU8B,KAAK,CAAC9B,KAAjB,IAA0BkT,QAAxC;AACA,SAAO5K,UAAU,CAAC6K,OAAO,CAACC,OAAR,CAAgB,CAAhB,CAAD,CAAjB;AACD,CAND,EAMG;;;AAGH,IAAIC,QAAQ,GAAG,SAASA,QAAT,CAAkBnT,CAAlB,EAAqB0G,IAArB,EAA2B;AACxC,MAAIA,IAAJ,EAAU;AACRA,IAAAA,IAAI,GAAGpJ,GAAG,CAACkC,SAAJ,CAAckH,IAAd,CAAP;AACA,WAAOoM,MAAM,CAAC9S,CAAD,EAAI0G,IAAJ,CAAb;AACD;;AAED,MAAIlE,GAAG,GAAG,EAAV;AACAqQ,EAAAA,OAAO,CAACnW,OAAR,CAAgB,UAAUyC,CAAV,EAAa;AAC3BqD,IAAAA,GAAG,CAACrD,CAAD,CAAH,GAAS2T,MAAM,CAAC9S,CAAD,EAAIb,CAAJ,CAAf;AACD,GAFD;AAGA,SAAOqD,GAAP;AACD,CAXD;;AAaA,IAAI4Q,UAAU,GAAGD,QAAjB;;AAEA,IAAIE,OAAO,GAAG,SAASA,OAAT,CAAiBrT,CAAjB,EAAoB0G,IAApB,EAA0B;AACtC;AACA,MAAI4M,IAAI,GAAGtT,CAAC,CAACmT,QAAF,EAAX;AACAzM,EAAAA,IAAI,GAAGpJ,GAAG,CAACkC,SAAJ,CAAckH,IAAd,CAAP,CAHsC,CAGV;;AAE5B,MAAIA,IAAI,KAAK,aAAb,EAA4B;AAC1BA,IAAAA,IAAI,GAAG,aAAP;AACD;;AAED,MAAI4M,IAAI,CAAC5M,IAAD,CAAJ,KAAejI,SAAnB,EAA8B;AAC5B;AACA,QAAI6U,IAAI,CAAC5M,IAAD,CAAJ,GAAa,GAAjB,EAAsB;AACpB1G,MAAAA,CAAC,GAAGA,CAAC,CAAClD,GAAF,CAAM,CAAN,EAAS4J,IAAT,CAAJ;AACD,KAJ2B,CAI1B;;;AAGF1G,IAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU9B,IAAV,CAAJ;AACD,GARD,MAQO,IAAI1G,CAAC,CAACuH,MAAF,KAAa,KAAjB,EAAwB;AAC7B7E,IAAAA,OAAO,CAACC,IAAR,CAAa,oBAAoB+D,IAApB,GAA2B,GAAxC;AACD;;AAED,SAAO1G,CAAP;AACD,CAtBD;;AAwBA,IAAIuT,SAAS,GAAGF,OAAhB,EAEA;;AACA,IAAIG,KAAK,GAAG,SAASA,KAAT,CAAe1C,CAAf,EAAkB2C,CAAlB,EAAqB/M,IAArB,EAA2B;AACrC,MAAIzH,CAAC,GAAG,CAAR;AACA6R,EAAAA,CAAC,GAAGA,CAAC,CAAC7Q,KAAF,EAAJ;;AAEA,SAAO6Q,CAAC,CAAC4C,QAAF,CAAWD,CAAX,CAAP,EAAsB;AACpB;AACA3C,IAAAA,CAAC,GAAGA,CAAC,CAAChU,GAAF,CAAM,CAAN,EAAS4J,IAAT,CAAJ;AACAzH,IAAAA,CAAC,IAAI,CAAL;AACD,GARoC,CAQnC;;;AAGF,MAAI6R,CAAC,CAAC6C,OAAF,CAAUF,CAAV,EAAa/M,IAAb,CAAJ,EAAwB;AACtBzH,IAAAA,CAAC,IAAI,CAAL;AACD;;AAED,SAAOA,CAAP;AACD,CAhBD,EAgBG;AACH;;;AAGA,IAAI2U,OAAO,GAAG,SAASA,OAAT,CAAiB9C,CAAjB,EAAoB2C,CAApB,EAAuB/M,IAAvB,EAA6B;AACzC,MAAIoK,CAAC,CAAC4C,QAAF,CAAWD,CAAX,CAAJ,EAAmB;AACjB,WAAOD,KAAK,CAAC1C,CAAD,EAAI2C,CAAJ,EAAO/M,IAAP,CAAZ;AACD,GAFD,MAEO;AACL,WAAO8M,KAAK,CAACC,CAAD,EAAI3C,CAAJ,EAAOpK,IAAP,CAAL,GAAoB,CAAC,CAA5B,CADK,CAC0B;AAChC;AACF,CAND;;AAQA,IAAImN,GAAG,GAAGD,OAAV,EAEA;AACA;;AAEA,IAAIE,QAAQ,GAAG,SAASA,QAAT,CAAkBhD,CAAlB,EAAqB2C,CAArB,EAAwB;AACrC,MAAIM,KAAK,GAAGN,CAAC,CAACjW,IAAF,KAAWsT,CAAC,CAACtT,IAAF,EAAvB,CADqC,CACJ;;AAEjCsT,EAAAA,CAAC,GAAGA,CAAC,CAACtT,IAAF,CAAOiW,CAAC,CAACjW,IAAF,EAAP,CAAJ;;AAEA,MAAIsT,CAAC,CAAC6C,OAAF,CAAUF,CAAV,CAAJ,EAAkB;AAChBM,IAAAA,KAAK,IAAI,CAAT;AACD;;AAED,SAAOA,KAAP;AACD,CAVD,EAUG;AACH;AACA;;;AAGA,IAAIjN,IAAI,GAAG,SAASA,IAAT,CAAcgK,CAAd,EAAiB2C,CAAjB,EAAoB;AAC7B;AACA;AACA,MAAIO,MAAM,GAAGP,CAAC,CAAC3T,KAAF,GAAUgR,CAAC,CAAChR,KAAzB;AACA,MAAI0C,GAAG,GAAG;AACRgE,IAAAA,YAAY,EAAEwN,MADN;AAER5M,IAAAA,OAAO,EAAE7H,QAAQ,CAACyU,MAAM,GAAG,IAAV,EAAgB,EAAhB;AAFT,GAAV;AAIAxR,EAAAA,GAAG,CAACyR,OAAJ,GAAc1U,QAAQ,CAACiD,GAAG,CAAC4E,OAAJ,GAAc,EAAf,EAAmB,EAAnB,CAAtB;AACA5E,EAAAA,GAAG,CAAC0R,KAAJ,GAAY3U,QAAQ,CAACiD,GAAG,CAACyR,OAAJ,GAAc,EAAf,EAAmB,EAAnB,CAApB,CAT6B,CASe;;AAE5C,MAAIrU,GAAG,GAAGkR,CAAC,CAAC7Q,KAAF,EAAV;AACAuC,EAAAA,GAAG,CAACuR,KAAJ,GAAYD,QAAQ,CAAClU,GAAD,EAAM6T,CAAN,CAApB;AACA7T,EAAAA,GAAG,GAAGkR,CAAC,CAAChU,GAAF,CAAM0F,GAAG,CAACuR,KAAV,EAAiB,MAAjB,CAAN,CAb6B,CAaG;;AAEhCvR,EAAAA,GAAG,CAACsF,MAAJ,GAAatF,GAAG,CAACuR,KAAJ,GAAY,EAAzB;AACAnU,EAAAA,GAAG,GAAGkR,CAAC,CAAChU,GAAF,CAAM0F,GAAG,CAACsF,MAAV,EAAkB,OAAlB,CAAN;AACAtF,EAAAA,GAAG,CAACsF,MAAJ,IAAc+L,GAAG,CAACjU,GAAD,EAAM6T,CAAN,EAAS,OAAT,CAAjB,CAjB6B,CAiBO;AACpC;;AAEAjR,EAAAA,GAAG,CAAC2R,KAAJ,GAAY3R,GAAG,CAACuR,KAAJ,GAAY,EAAxB;AACAnU,EAAAA,GAAG,GAAGkR,CAAC,CAAChU,GAAF,CAAM0F,GAAG,CAAC2R,KAAV,EAAiB,MAAjB,CAAN;AACA3R,EAAAA,GAAG,CAAC2R,KAAJ,IAAaN,GAAG,CAACjU,GAAD,EAAM6T,CAAN,EAAS,MAAT,CAAhB,CAtB6B,CAsBK;;AAElCjR,EAAAA,GAAG,CAAC0I,IAAJ,GAAW1I,GAAG,CAAC2R,KAAJ,GAAY,CAAvB;AACAvU,EAAAA,GAAG,GAAGkR,CAAC,CAAChU,GAAF,CAAM0F,GAAG,CAAC0I,IAAV,EAAgB,KAAhB,CAAN;AACA1I,EAAAA,GAAG,CAAC0I,IAAJ,IAAY2I,GAAG,CAACjU,GAAD,EAAM6T,CAAN,EAAS,KAAT,CAAf;AACA,SAAOjR,GAAP;AACD,CA5BD;;AA8BA,IAAI4R,SAAS,GAAGtN,IAAhB;;AAEA,IAAIuN,WAAW,GAAG,SAASA,WAAT,CAAqB7R,GAArB,EAA0B;AAC1C7E,EAAAA,MAAM,CAAC+F,IAAP,CAAYlB,GAAZ,EAAiB9F,OAAjB,CAAyB,UAAUyC,CAAV,EAAa;AACpCqD,IAAAA,GAAG,CAACrD,CAAD,CAAH,IAAU,CAAC,CAAX;AACD,GAFD;AAGA,SAAOqD,GAAP;AACD,CALD,EAKG;AACH;AACA;;;AAGA,IAAI8R,IAAI,GAAG,SAASA,IAAT,CAAcxD,CAAd,EAAiB2C,CAAjB,EAAoB/M,IAApB,EAA0B;AACnC+M,EAAAA,CAAC,GAAGnW,GAAG,CAACyC,OAAJ,CAAY0T,CAAZ,EAAe3C,CAAf,CAAJ,CADmC,CACZ;;AAEvB,MAAIyD,QAAQ,GAAG,KAAf;;AAEA,MAAIzD,CAAC,CAAC6C,OAAF,CAAUF,CAAV,CAAJ,EAAkB;AAChB,QAAI7T,GAAG,GAAGkR,CAAV;AACAA,IAAAA,CAAC,GAAG2C,CAAJ;AACAA,IAAAA,CAAC,GAAG7T,GAAJ;AACA2U,IAAAA,QAAQ,GAAG,IAAX;AACD,GAVkC,CAUjC;;;AAGF,MAAI/R,GAAG,GAAG4R,SAAS,CAACtD,CAAD,EAAI2C,CAAJ,CAAnB;;AAEA,MAAIc,QAAJ,EAAc;AACZ/R,IAAAA,GAAG,GAAG6R,WAAW,CAAC7R,GAAD,CAAjB;AACD,GAjBkC,CAiBjC;;;AAGF,MAAIkE,IAAJ,EAAU;AACR;AACAA,IAAAA,IAAI,GAAGpJ,GAAG,CAACkC,SAAJ,CAAckH,IAAd,CAAP;;AAEA,QAAI,KAAKf,IAAL,CAAUe,IAAV,MAAoB,IAAxB,EAA8B;AAC5BA,MAAAA,IAAI,IAAI,GAAR;AACD;;AAED,QAAIA,IAAI,KAAK,OAAb,EAAsB;AACpBA,MAAAA,IAAI,GAAG,MAAP;AACD;;AAED,WAAOlE,GAAG,CAACkE,IAAD,CAAV;AACD;;AAED,SAAOlE,GAAP;AACD,CApCD;;AAsCA,IAAIgS,MAAM,GAAGF,IAAb,EAEA;;AAEA,IAAIG,UAAU,GAAG;AACf3M,EAAAA,MAAM,EAAE;AACN4M,IAAAA,MAAM,EAAE,EADF;AAENC,IAAAA,IAAI,EAAE;AAFA,GADO;AAKfzJ,EAAAA,IAAI,EAAE;AACJwJ,IAAAA,MAAM,EAAE,EADJ;AAEJC,IAAAA,IAAI,EAAE;AAFF,GALS;AASfT,EAAAA,KAAK,EAAE;AACLQ,IAAAA,MAAM,EAAE,EADH;AAELC,IAAAA,IAAI,EAAE;AAFD,GATQ;AAafV,EAAAA,OAAO,EAAE;AACPS,IAAAA,MAAM,EAAE,EADD;AAEPC,IAAAA,IAAI,EAAE;AAFC,GAbM;AAiBfvN,EAAAA,OAAO,EAAE;AACPsN,IAAAA,MAAM,EAAE,EADD;AAEPC,IAAAA,IAAI,EAAE;AAFC;AAjBM,CAAjB,EAqBG;;AAEH,SAASC,OAAT,CAAiB9D,CAAjB,EAAoB2C,CAApB,EAAuB;AACrB,MAAIC,QAAQ,GAAG5C,CAAC,CAAC4C,QAAF,CAAWD,CAAX,CAAf;AACA,MAAIoB,KAAK,GAAGnB,QAAQ,GAAGD,CAAH,GAAO3C,CAA3B;AACA,MAAIgE,OAAO,GAAGpB,QAAQ,GAAG5C,CAAH,GAAO2C,CAA7B;AACAqB,EAAAA,OAAO,GAAGA,OAAO,CAAC7U,KAAR,EAAV;AACA,MAAI6G,IAAI,GAAG;AACTiN,IAAAA,KAAK,EAAE,CADE;AAETjM,IAAAA,MAAM,EAAE,CAFC;AAGToD,IAAAA,IAAI,EAAE,CAHG;AAITgJ,IAAAA,KAAK,EAAE,CAJE;AAKTD,IAAAA,OAAO,EAAE,CALA;AAMT7M,IAAAA,OAAO,EAAE;AANA,GAAX;AAQAzJ,EAAAA,MAAM,CAAC+F,IAAP,CAAYoD,IAAZ,EAAkBpK,OAAlB,CAA0B,UAAUgK,IAAV,EAAgB;AACxC,QAAIoO,OAAO,CAACC,MAAR,CAAeF,KAAf,EAAsBnO,IAAtB,CAAJ,EAAiC;AAC/B;AACD;;AAED,QAAIqC,GAAG,GAAG+L,OAAO,CAAChO,IAAR,CAAa+N,KAAb,EAAoBnO,IAApB,CAAV;AACAoO,IAAAA,OAAO,GAAGA,OAAO,CAAChY,GAAR,CAAYiM,GAAZ,EAAiBrC,IAAjB,CAAV;AACAI,IAAAA,IAAI,CAACJ,IAAD,CAAJ,GAAaqC,GAAb;AACD,GARD,EAbqB,CAqBjB;;AAEJ,MAAI2K,QAAJ,EAAc;AACZ/V,IAAAA,MAAM,CAAC+F,IAAP,CAAYoD,IAAZ,EAAkBpK,OAAlB,CAA0B,UAAUsY,CAAV,EAAa;AACrC,UAAIlO,IAAI,CAACkO,CAAD,CAAJ,KAAY,CAAhB,EAAmB;AACjBlO,QAAAA,IAAI,CAACkO,CAAD,CAAJ,IAAW,CAAC,CAAZ;AACD;AACF,KAJD;AAKD;;AAED,SAAOlO,IAAP;AACD,EAAC;;;AAGF,SAASmO,SAAT,CAAmBC,KAAnB,EAA0BxO,IAA1B,EAAgC;AAC9B,MAAIwO,KAAK,KAAK,CAAd,EAAiB;AACfxO,IAAAA,IAAI,GAAGA,IAAI,CAACyO,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAAP;AACD;;AAED,SAAOD,KAAK,GAAG,GAAR,GAAcxO,IAArB;AACD,EAAC;;;AAGF,IAAI0O,KAAK,GAAG,SAASA,KAAT,CAAexT,KAAf,EAAsBC,GAAtB,EAA2B;AACrCA,EAAAA,GAAG,GAAGvE,GAAG,CAACyC,OAAJ,CAAY8B,GAAZ,EAAiBD,KAAjB,CAAN;AACA,MAAIkF,IAAI,GAAG8N,OAAO,CAAChT,KAAD,EAAQC,GAAR,CAAlB;AACA,MAAIwT,KAAK,GAAG1X,MAAM,CAAC+F,IAAP,CAAYoD,IAAZ,EAAkBwO,KAAlB,CAAwB,UAAUN,CAAV,EAAa;AAC/C,WAAO,CAAClO,IAAI,CAACkO,CAAD,CAAZ;AACD,GAFW,CAAZ;;AAIA,MAAIK,KAAK,KAAK,IAAd,EAAoB;AAClB,WAAO;AACLvO,MAAAA,IAAI,EAAEA,IADD;AAELyO,MAAAA,OAAO,EAAE,KAFJ;AAGLC,MAAAA,SAAS,EAAE,KAHN;AAILC,MAAAA,OAAO,EAAE;AAJJ,KAAP;AAMD;;AAED,MAAIF,OAAJ;AACA,MAAIC,SAAJ;AACA,MAAIC,OAAJ;AACA,MAAIC,aAAa,GAAG,EAApB,CAnBqC,CAmBb;;AAExB/X,EAAAA,MAAM,CAAC+F,IAAP,CAAYoD,IAAZ,EAAkBpK,OAAlB,CAA0B,UAAUgK,IAAV,EAAgBzH,CAAhB,EAAmB+H,KAAnB,EAA0B;AAClD,QAAIkO,KAAK,GAAG3U,IAAI,CAACC,GAAL,CAASsG,IAAI,CAACJ,IAAD,CAAb,CAAZ;;AAEA,QAAIwO,KAAK,KAAK,CAAd,EAAiB;AACf;AACD;;AAED,QAAIS,YAAY,GAAGV,SAAS,CAACC,KAAD,EAAQxO,IAAR,CAA5B;AACAgP,IAAAA,aAAa,CAACjD,IAAd,CAAmBkD,YAAnB;;AAEA,QAAI,CAACJ,OAAL,EAAc;AACZA,MAAAA,OAAO,GAAGC,SAAS,GAAGG,YAAtB;;AAEA,UAAI1W,CAAC,GAAG,CAAR,EAAW;AACT;AACD,OALW,CAKV;;;AAGF,UAAI2W,QAAQ,GAAG5O,KAAK,CAAC/H,CAAC,GAAG,CAAL,CAApB;AACA,UAAI4W,SAAS,GAAGtV,IAAI,CAACC,GAAL,CAASsG,IAAI,CAAC8O,QAAD,CAAb,CAAhB;;AAEA,UAAIC,SAAS,GAAGpB,UAAU,CAACmB,QAAD,CAAV,CAAqBlB,MAArC,EAA6C;AAC3Ca,QAAAA,OAAO,GAAGN,SAAS,CAACC,KAAK,GAAG,CAAT,EAAYxO,IAAZ,CAAnB;AACA8O,QAAAA,SAAS,GAAG,YAAYD,OAAxB;AACD,OAHD,MAGO,IAAIM,SAAS,GAAGpB,UAAU,CAACmB,QAAD,CAAV,CAAqBjB,IAArC,EAA2Ca,SAAS,GAAG,UAAUG,YAAtB;AACnD;AACF,GA1BD,EArBqC,CA+CjC;;AAEJF,EAAAA,OAAO,GAAGC,aAAa,CAACI,MAAd,CAAqB,CAArB,EAAwB,CAAxB,EAA2BlX,IAA3B,CAAgC,IAAhC,CAAV,CAjDqC,CAiDY;;AAEjD,MAAIgD,KAAK,CAAC+R,OAAN,CAAc9R,GAAd,MAAuB,IAA3B,EAAiC;AAC/B0T,IAAAA,OAAO,IAAI,MAAX;AACAC,IAAAA,SAAS,IAAI,MAAb;AACAC,IAAAA,OAAO,IAAI,MAAX;AACD,GAJD,MAIO;AACLF,IAAAA,OAAO,GAAG,QAAQA,OAAlB;AACAC,IAAAA,SAAS,GAAG,QAAQA,SAApB;AACAC,IAAAA,OAAO,GAAG,QAAQA,OAAlB;AACD;;AAED,SAAO;AACL3O,IAAAA,IAAI,EAAEA,IADD;AAELyO,IAAAA,OAAO,EAAEA,OAFJ;AAGLC,IAAAA,SAAS,EAAEA,SAHN;AAILC,IAAAA,OAAO,EAAEA;AAJJ,GAAP;AAMD,CAnED;;AAqEA,IAAIM,OAAO,GAAGX,KAAd,EAEA;AACA;AACA;AACA;AACA;;AACA,IAAIY,OAAO,GAAG;AACZC,EAAAA,KAAK,EAAE,CAAC,CAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAAD,EAAmB;AAC1B,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CADO,EACW;AAClB,GAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,CAFO,EAES;AAChB,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAHO,EAGW;AAClB,GAAC,QAAD,EAAW,EAAX,EAAe,CAAf,CAJO,CAIW;AAJX,GADK;AAOZC,EAAAA,KAAK,EAAE,CAAC,CAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,CAAD,EAAiB;AACxB,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CADO,EACW;AAClB,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAFO,EAEW;AAClB,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAHO,EAGW;AAClB,GAAC,QAAD,EAAW,EAAX,EAAe,CAAf,CAJO,CAIW;AAJX;AAPK,CAAd;AAeA,IAAIC,QAAQ,GAAG,CAAC,IAAD,EAAO,CAAC,CAAD,EAAI,CAAJ,CAAP,EAAe;AAC9B,CAAC,CAAD,EAAI,CAAJ,CADe,EACP;AACR,CAAC,CAAD,EAAI,CAAJ,CAFe,EAEP;AACR,CAAC,CAAD,EAAI,CAAJ,CAHe,CAGR;AAHQ,CAAf;AAMA,IAAIC,OAAO,GAAG;AACZlQ,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlG,CAAhB,EAAmB;AACzBwH,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRiG,MAAAA,MAAM,EAAE,CADA;AAERD,MAAAA,WAAW,EAAE;AAFL,KAAJ,CAAN;AAIA,WAAOhG,CAAP;AACD,GAPW;AAQZqW,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqBrW,CAArB,EAAwB;AACnC,QAAIkG,MAAM,GAAGlG,CAAC,CAACiU,OAAF,EAAb;;AAEA,QAAI/N,MAAM,IAAI,EAAd,EAAkB;AAChBlG,MAAAA,CAAC,GAAGA,CAAC,CAACiU,OAAF,CAAU,EAAV,CAAJ;AACD,KAFD,MAEO,IAAI/N,MAAM,IAAI,EAAd,EAAkB;AACvBlG,MAAAA,CAAC,GAAGA,CAAC,CAACiU,OAAF,CAAU,EAAV,CAAJ;AACD,KAFM,MAEA,IAAI/N,MAAM,IAAI,EAAd,EAAkB;AACvBlG,MAAAA,CAAC,GAAGA,CAAC,CAACiU,OAAF,CAAU,EAAV,CAAJ;AACD,KAFM,MAEA;AACLjU,MAAAA,CAAC,GAAGA,CAAC,CAACiU,OAAF,CAAU,CAAV,CAAJ;AACD;;AAEDzM,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRiG,MAAAA,MAAM,EAAE,CADA;AAERD,MAAAA,WAAW,EAAE;AAFL,KAAJ,CAAN;AAIA,WAAOhG,CAAP;AACD,GA1BW;AA2BZmG,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcnG,CAAd,EAAiB;AACrBwH,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRkG,MAAAA,MAAM,EAAE,CADA;AAERD,MAAAA,MAAM,EAAE,CAFA;AAGRD,MAAAA,WAAW,EAAE;AAHL,KAAJ,CAAN;AAKA,WAAOhG,CAAP;AACD,GAlCW;AAmCZoG,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAapG,CAAb,EAAgB;AACnBwH,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRmG,MAAAA,IAAI,EAAE,CADE;AAERD,MAAAA,MAAM,EAAE,CAFA;AAGRD,MAAAA,MAAM,EAAE,CAHA;AAIRD,MAAAA,WAAW,EAAE;AAJL,KAAJ,CAAN;AAMA,WAAOhG,CAAP;AACD,GA3CW;AA4CZuG,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvG,CAAd,EAAiB;AACrB,QAAI6G,QAAQ,GAAG7G,CAAC,CAACC,KAAF,EAAf;AACAD,IAAAA,CAAC,GAAGA,CAAC,CAACoG,GAAF,CAAMpG,CAAC,CAACsW,UAAR,CAAJ,CAFqB,CAEI;;AAEzB,QAAItW,CAAC,CAAC2T,OAAF,CAAU9M,QAAV,CAAJ,EAAyB;AACvB7G,MAAAA,CAAC,GAAGA,CAAC,CAACkK,QAAF,CAAW,CAAX,EAAc,MAAd,CAAJ;AACD;;AAED1C,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRmG,MAAAA,IAAI,EAAE,CADE;AAERD,MAAAA,MAAM,EAAE,CAFA;AAGRD,MAAAA,MAAM,EAAE,CAHA;AAIRD,MAAAA,WAAW,EAAE;AAJL,KAAJ,CAAN;AAMA,WAAOhG,CAAP;AACD,GA3DW;AA4DZsG,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetG,CAAf,EAAkB;AACvBwH,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRqG,MAAAA,IAAI,EAAE,CADE;AAERF,MAAAA,IAAI,EAAE,CAFE;AAGRD,MAAAA,MAAM,EAAE,CAHA;AAIRD,MAAAA,MAAM,EAAE,CAJA;AAKRD,MAAAA,WAAW,EAAE;AALL,KAAJ,CAAN;AAOA,WAAOhG,CAAP;AACD,GArEW;AAsEZ+M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB/M,CAAjB,EAAoB;AAC3B,QAAIuW,CAAC,GAAGvW,CAAC,CAAC+M,OAAF,EAAR;;AAEA,QAAIoJ,QAAQ,CAACI,CAAD,CAAZ,EAAiB;AACf/O,MAAAA,MAAM,CAACxH,CAAD,EAAI;AACRsG,QAAAA,KAAK,EAAE6P,QAAQ,CAACI,CAAD,CAAR,CAAY,CAAZ,CADC;AAERlQ,QAAAA,IAAI,EAAE8P,QAAQ,CAACI,CAAD,CAAR,CAAY,CAAZ,CAFE;AAGRpQ,QAAAA,IAAI,EAAE,CAHE;AAIRD,QAAAA,MAAM,EAAE,CAJA;AAKRD,QAAAA,MAAM,EAAE,CALA;AAMRD,QAAAA,WAAW,EAAE;AANL,OAAJ,CAAN;AAQD;;AAED,WAAOhG,CAAP;AACD,GArFW;AAsFZgN,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBhN,CAAhB,EAAmB;AACzB,QAAImC,OAAO,GAAGnC,CAAC,CAACgN,MAAF,EAAd;AACA,QAAIjK,GAAG,GAAG,OAAV;;AAEA,QAAI/C,CAAC,CAACwW,UAAF,OAAmB,OAAvB,EAAgC;AAC9BzT,MAAAA,GAAG,GAAG,OAAN;AACD;;AAED,SAAK,IAAI9D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+W,OAAO,CAACjT,GAAD,CAAP,CAAavE,MAAjC,EAAyCS,CAAC,EAA1C,EAA8C;AAC5C,UAAI+W,OAAO,CAACjT,GAAD,CAAP,CAAa9D,CAAb,EAAgB,CAAhB,MAAuBkD,OAA3B,EAAoC;AAClC;AACA,YAAI3E,IAAI,GAAGwC,CAAC,CAACxC,IAAF,EAAX;;AAEA,YAAI2E,OAAO,KAAK,QAAZ,IAAwBnC,CAAC,CAACsG,KAAF,KAAY,CAAxC,EAA2C;AACzC9I,UAAAA,IAAI,IAAI,CAAR;AACD;;AAEDgK,QAAAA,MAAM,CAACxH,CAAD,EAAI;AACRxC,UAAAA,IAAI,EAAEA,IADE;AAER8I,UAAAA,KAAK,EAAE0P,OAAO,CAACjT,GAAD,CAAP,CAAa9D,CAAb,EAAgB,CAAhB,CAFC;AAGRoH,UAAAA,IAAI,EAAE2P,OAAO,CAACjT,GAAD,CAAP,CAAa9D,CAAb,EAAgB,CAAhB,CAHE;AAIRkH,UAAAA,IAAI,EAAE,CAJE;AAKRD,UAAAA,MAAM,EAAE,CALA;AAMRD,UAAAA,MAAM,EAAE,CANA;AAORD,UAAAA,WAAW,EAAE;AAPL,SAAJ,CAAN;AASA,eAAOhG,CAAP;AACD;AACF;;AAED,WAAOA,CAAP;AACD,GArHW;AAsHZxC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcwC,CAAd,EAAiB;AACrBwH,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRsG,MAAAA,KAAK,EAAE,CADC;AAERD,MAAAA,IAAI,EAAE,CAFE;AAGRF,MAAAA,IAAI,EAAE,CAHE;AAIRD,MAAAA,MAAM,EAAE,CAJA;AAKRD,MAAAA,MAAM,EAAE,CALA;AAMRD,MAAAA,WAAW,EAAE;AANL,KAAJ,CAAN;AAQA,WAAOhG,CAAP;AACD,GAhIW;AAiIZyW,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBzW,CAAhB,EAAmB;AACzBA,IAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,MAAV,CAAJ;AACA,QAAIhL,IAAI,GAAGwC,CAAC,CAACxC,IAAF,EAAX;AACA,QAAIiZ,MAAM,GAAGlX,QAAQ,CAAC/B,IAAI,GAAG,EAAR,EAAY,EAAZ,CAAR,GAA0B,EAAvC;AACAwC,IAAAA,CAAC,GAAGA,CAAC,CAACxC,IAAF,CAAOiZ,MAAP,CAAJ;AACA,WAAOzW,CAAP;AACD,GAvIW;AAwIZ0W,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1W,CAAjB,EAAoB;AAC3BA,IAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,MAAV,CAAJ;AACA,QAAIhL,IAAI,GAAGwC,CAAC,CAACxC,IAAF,EAAX,CAF2B,CAEN;;AAErB,QAAIiZ,MAAM,GAAGlX,QAAQ,CAAC/B,IAAI,GAAG,GAAR,EAAa,EAAb,CAAR,GAA2B,GAAxC;AACAwC,IAAAA,CAAC,GAAGA,CAAC,CAACxC,IAAF,CAAOiZ,MAAP,CAAJ;AACA,WAAOzW,CAAP;AACD;AA/IW,CAAd;AAiJAoW,OAAO,CAAC/P,IAAR,GAAe+P,OAAO,CAAChQ,GAAvB;;AAEA,IAAIoC,OAAO,GAAG,SAASA,OAAT,CAAiBsI,CAAjB,EAAoBpK,IAApB,EAA0B;AACtC,MAAI1G,CAAC,GAAG8Q,CAAC,CAAC7Q,KAAF,EAAR;AACAyG,EAAAA,IAAI,GAAGpJ,GAAG,CAACkC,SAAJ,CAAckH,IAAd,CAAP;;AAEA,MAAI0P,OAAO,CAAC1P,IAAD,CAAX,EAAmB;AACjB,WAAO0P,OAAO,CAAC1P,IAAD,CAAP,CAAc1G,CAAd,CAAP;AACD;;AAED,MAAI0G,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAAlC,EAA4C;AAC1C1G,IAAAA,CAAC,GAAGA,CAAC,CAACgN,MAAF,CAAStG,IAAT,CAAJ;AACA,WAAO0P,OAAO,CAACpJ,MAAR,CAAehN,CAAf,CAAP;AACD;;AAED,SAAOA,CAAP;AACD,CAdD,EAcG;;;AAGH,IAAI+S,KAAK,GAAG,SAASA,KAAT,CAAejC,CAAf,EAAkBpK,IAAlB,EAAwB;AAClC,MAAI1G,CAAC,GAAG8Q,CAAC,CAAC7Q,KAAF,EAAR;AACAyG,EAAAA,IAAI,GAAGpJ,GAAG,CAACkC,SAAJ,CAAckH,IAAd,CAAP;;AAEA,MAAI0P,OAAO,CAAC1P,IAAD,CAAX,EAAmB;AACjB1G,IAAAA,CAAC,GAAGoW,OAAO,CAAC1P,IAAD,CAAP,CAAc1G,CAAd,CAAJ;AACAA,IAAAA,CAAC,GAAGA,CAAC,CAAClD,GAAF,CAAM,CAAN,EAAS4J,IAAT,CAAJ;AACA1G,IAAAA,CAAC,GAAGA,CAAC,CAACkK,QAAF,CAAW,CAAX,EAAc,cAAd,CAAJ;AACA,WAAOlK,CAAP;AACD;;AAED,SAAOA,CAAP;AACD,CAZD;;AAcA,IAAI2W,SAAS,GAAG;AACdnO,EAAAA,OAAO,EAAEA,OADK;AAEduK,EAAAA,KAAK,EAAEA;AAFO,CAAhB;;AAKA,IAAI6D,KAAK,GAAG,SAASA,KAAT,CAAelQ,IAAf,EAAqB;AAC/B,MAAIwE,IAAI,CAAC,OAAD,CAAJ,GAAgBpF,IAAhB,CAAqB,UAAU9F,CAAV,EAAa;AACpC,WAAOA,CAAC,KAAK0G,IAAb;AACD,GAFG,CAAJ,EAEI;AACF,WAAO,IAAP;AACD;;AAED,MAAIwE,IAAI,CAAC,MAAD,CAAJ,GAAepF,IAAf,CAAoB,UAAU9F,CAAV,EAAa;AACnC,WAAOA,CAAC,KAAK0G,IAAb;AACD,GAFG,CAAJ,EAEI;AACF,WAAO,IAAP;AACD;;AAED,SAAO,KAAP;AACD,CAdD,EAcG;AACH;;;AAGA,IAAI4O,KAAK,GAAG,SAASA,KAAT,CAAe1T,KAAf,EAAsB;AAChC,MAAI8E,IAAI,GAAGnI,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;AACA,MAAIsD,GAAG,GAAGtD,SAAS,CAACC,MAAV,GAAmB,CAAnB,GAAuBD,SAAS,CAAC,CAAD,CAAhC,GAAsCE,SAAhD;;AAEA,MAAI,CAACiI,IAAD,IAAS,CAAC7E,GAAd,EAAmB;AACjB,WAAO,EAAP;AACD,GAN+B,CAM9B;;;AAGF6E,EAAAA,IAAI,GAAGpJ,GAAG,CAACkC,SAAJ,CAAckH,IAAd,CAAP,CATgC,CASJ;;AAE5B7E,EAAAA,GAAG,GAAGD,KAAK,CAAC3B,KAAN,GAAcC,GAAd,CAAkB2B,GAAlB,CAAN,CAXgC,CAWF;;AAE9B,MAAID,KAAK,CAAC+R,OAAN,CAAc9R,GAAd,CAAJ,EAAwB;AACtB,QAAIjC,GAAG,GAAGgC,KAAV;AACAA,IAAAA,KAAK,GAAGC,GAAR;AACAA,IAAAA,GAAG,GAAGjC,GAAN;AACD,GAjB+B,CAiB9B;;;AAGF,MAAIlC,CAAC,GAAGkE,KAAK,CAAC3B,KAAN,EAAR;;AAEA,MAAI2W,KAAK,CAAClQ,IAAD,CAAT,EAAiB;AACfhJ,IAAAA,CAAC,GAAGA,CAAC,CAACmZ,IAAF,CAAOnQ,IAAP,CAAJ;AACAA,IAAAA,IAAI,GAAG,MAAP;AACD,GAHD,MAGO;AACLhJ,IAAAA,CAAC,GAAGA,CAAC,CAACmZ,IAAF,CAAOnQ,IAAP,CAAJ;AACD,GA3B+B,CA2B9B;;;AAGF,MAAIoQ,MAAM,GAAG,EAAb;;AAEA,SAAOpZ,CAAC,CAACgW,QAAF,CAAW7R,GAAX,CAAP,EAAwB;AACtBiV,IAAAA,MAAM,CAACrE,IAAP,CAAY/U,CAAZ;AACAA,IAAAA,CAAC,GAAGA,CAAC,CAACZ,GAAF,CAAM,CAAN,EAAS4J,IAAT,CAAJ;AACD;;AAED,SAAOoQ,MAAP;AACD,CAtCD;;AAwCA,IAAIC,OAAO,GAAGzB,KAAd;;AAEA,IAAI0B,QAAQ,GAAG,SAASA,QAAT,CAAkBpU,GAAlB,EAAuB;AACpC,MAAI,CAACA,GAAL,EAAU;AACR,WAAO,EAAP;AACD;;AAED,SAAOA,GAAG,CAACI,KAAJ,CAAU,IAAV,CAAP;AACD,CAND;;AAQA,IAAInE,SAAS,GAAG,SAASA,SAAT,CAAmBR,GAAnB,EAAwB;AACtCA,EAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAH,CAAOS,WAAP,KAAuBT,GAAG,CAACU,MAAJ,CAAW,CAAX,CAA7B;AACAV,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,OAAZ,EAAqB,MAArB,CAAN;AACAjB,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,gBAAZ,EAA8B,UAAUU,CAAV,EAAa;AAC/C,WAAOA,CAAC,CAAClB,WAAF,EAAP;AACD,GAFK,CAAN;AAGA,SAAOT,GAAP;AACD,CAPD,EAOG;;;AAGH,IAAIkG,QAAQ,GAAG,SAASA,QAAT,CAAkBvE,CAAlB,EAAqB;AAClC,MAAIsC,KAAK,GAAGtC,CAAC,CAACuC,SAAd;AACA,MAAIE,EAAE,GAAGzC,CAAC,CAACyC,EAAX;;AAEA,MAAIH,KAAK,CAACoD,cAAN,CAAqBjD,EAArB,MAA6B,KAAjC,EAAwC;AACtCA,IAAAA,EAAE,GAAGqD,IAAI,CAAC9F,CAAC,CAACyC,EAAH,EAAOH,KAAP,CAAT;AACD;;AAED,MAAIG,EAAE,KAAK,IAAX,EAAiB;AACf,QAAIzC,CAAC,CAACuH,MAAF,KAAa,KAAjB,EAAwB;AACtB7E,MAAAA,OAAO,CAACC,IAAR,CAAa,qDAAqD3C,CAAC,CAACyC,EAAvD,GAA4D,GAAzE;AACD;;AAED,WAAO;AACLN,MAAAA,OAAO,EAAE;AACP8U,QAAAA,UAAU,EAAE;AADL;AADJ,KAAP;AAKD;;AAED,MAAIC,KAAK,GAAG5U,KAAK,CAACG,EAAD,CAAjB;AACA,MAAIqU,MAAM,GAAG;AACX/S,IAAAA,IAAI,EAAElF,SAAS,CAAC4D,EAAD,CADJ;AAEX0U,IAAAA,MAAM,EAAEC,OAAO,CAACF,KAAK,CAACtU,GAAP,CAFJ;AAGXyU,IAAAA,cAAc,EAAEH,KAAK,CAAC9W,MAHX;AAIX;AACAoW,IAAAA,UAAU,EAAEU,KAAK,CAACnU,GAAN,KAAc,GAAd,GAAoB,OAApB,GAA8B,OAL/B;AAMXZ,IAAAA,OAAO,EAAE;AANE,GAAb;;AASA,MAAI2U,MAAM,CAACK,MAAX,EAAmB;AACjB,QAAI5O,GAAG,GAAGyO,QAAQ,CAACE,KAAK,CAACtU,GAAP,CAAlB;AACAkU,IAAAA,MAAM,CAACQ,MAAP,GAAgB;AACd1V,MAAAA,KAAK,EAAE2G,GAAG,CAAC,CAAD,CADI;AAEdgP,MAAAA,IAAI,EAAEhP,GAAG,CAAC,CAAD;AAFK,KAAhB;AAID,GApCiC,CAoChC;AACF;;;AAGA,MAAIiP,MAAM,GAAGN,KAAK,CAAC9W,MAAnB,CAxCkC,CAwCP;;AAE3B,MAAIqX,MAAM,GAAGD,MAAb,CA1CkC,CA0Cb;;AAErB,MAAIV,MAAM,CAACK,MAAP,KAAkB,IAAtB,EAA4B;AAC1B,QAAIL,MAAM,CAACN,UAAP,KAAsB,OAA1B,EAAmC;AACjCiB,MAAAA,MAAM,GAAGD,MAAM,GAAG,CAAlB;AACD,KAFD,MAEO;AACL;AACAC,MAAAA,MAAM,GAAGP,KAAK,CAAC9W,MAAN,GAAe,CAAxB;AACD;AACF,GAnDiC,CAmDhC;AACF;;;AAGA,MAAI0W,MAAM,CAACK,MAAP,KAAkB,KAAtB,EAA6B;AAC3BL,IAAAA,MAAM,CAAC3U,OAAP,CAAe/B,MAAf,GAAwBoX,MAAxB;AACAV,IAAAA,MAAM,CAAC3U,OAAP,CAAeuV,KAAf,GAAuB,KAAvB;AACD,GAHD,MAGO,IAAItV,UAAU,CAACpC,CAAC,CAACF,KAAH,EAAUgX,MAAM,CAACQ,MAAP,CAAc1V,KAAxB,EAA+BkV,MAAM,CAACQ,MAAP,CAAcC,IAA7C,EAAmDC,MAAnD,CAAV,KAAyE,IAA7E,EAAmF;AACxFV,IAAAA,MAAM,CAAC3U,OAAP,CAAe/B,MAAf,GAAwBoX,MAAxB;AACAV,IAAAA,MAAM,CAAC3U,OAAP,CAAeuV,KAAf,GAAuBZ,MAAM,CAACN,UAAP,KAAsB,OAA7C,CAFwF,CAElC;AACvD,GAHM,MAGA;AACL;AACAM,IAAAA,MAAM,CAAC3U,OAAP,CAAe/B,MAAf,GAAwBqX,MAAxB;AACAX,IAAAA,MAAM,CAAC3U,OAAP,CAAeuV,KAAf,GAAuBZ,MAAM,CAACN,UAAP,KAAsB,OAA7C,CAHK,CAGiD;AACvD;;AAED,SAAOM,MAAP;AACD,CApED;;AAsEA,IAAIa,UAAU,GAAGpT,QAAjB;AAEA,IAAIqT,OAAO,GAAG,CAAC,SAAD,EAAY,QAAZ,EAAsB,MAAtB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,MAAtD,EAA8D,QAA9D,EAAwE,QAAxE,EAAkF,aAAlF,CAAd,EAAgH;;AAEhH,IAAIC,OAAO,GAAG;AACZ3X,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa4X,OAAb,EAAsBrV,EAAtB,EAA0B;AAC7B,QAAIzC,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,IAAAA,CAAC,GAAG9B,KAAK,CAAC8B,CAAD,EAAI8X,OAAJ,EAAa,IAAb,CAAT;;AAEA,QAAIrV,EAAJ,EAAQ;AACN,WAAKA,EAAL,GAAUqD,IAAI,CAACrD,EAAD,CAAd;AACD;;AAED,WAAOzC,CAAP;AACD,GAVW;AAWZuE,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;AAC5B,WAAOoT,UAAU,CAAC,IAAD,CAAjB;AACD,GAbW;AAcZD,EAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;AACtB,WAAOC,UAAU,CAAC,IAAD,CAAV,CAAiBxV,OAAjB,CAAyBuV,KAAhC;AACD,GAhBW;AAiBZK,EAAAA,MAAM,EAAE,SAASA,MAAT,GAAkB;AACxB,WAAOJ,UAAU,CAAC,IAAD,CAAV,CAAiBR,MAAxB;AACD,GAnBW;AAoBZ/W,EAAAA,MAAM,EAAE,SAASA,MAAT,GAAkB;AACxB,WAAOuX,UAAU,CAAC,IAAD,CAAV,CAAiBxV,OAAjB,CAAyB/B,MAAzB,GAAkC,EAAzC;AACD,GAtBW;AAuBZoW,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;AAChC,WAAOmB,UAAU,CAAC,IAAD,CAAV,CAAiBnB,UAAxB;AACD,GAzBW;AA0BZnS,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBqK,GAAhB,EAAqB;AAC3B,WAAOC,QAAQ,CAAC,IAAD,EAAOD,GAAP,CAAf;AACD,GA5BW;AA6BZ4D,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB5D,GAAjB,EAAsB;AAC7B,WAAOkE,SAAS,CAAC,IAAD,EAAOlE,GAAP,CAAhB;AACD,GA/BW;AAgCZlG,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB9B,IAAjB,EAAuB;AAC9B,WAAOiQ,SAAS,CAACnO,OAAV,CAAkB,IAAlB,EAAwB9B,IAAxB,CAAP;AACD,GAlCW;AAmCZqM,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAerM,IAAf,EAAqB;AAC1B,WAAOiQ,SAAS,CAAC5D,KAAV,CAAgB,IAAhB,EAAsBrM,IAAtB,CAAP;AACD,GArCW;AAsCZsR,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;AAC5B,QAAIxa,IAAI,GAAG,KAAKA,IAAL,EAAX;AACA,WAAOF,GAAG,CAACC,UAAJ,CAAeC,IAAf,CAAP;AACD,GAzCW;AA0CZ2V,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBzM,IAAlB,EAAwB;AAChC,WAAO0M,UAAU,CAAC,IAAD,EAAO1M,IAAP,CAAjB;AACD,GA5CW;AA6CZ2M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB3M,IAAjB,EAAuB;AAC9B,WAAO6M,SAAS,CAAC,IAAD,EAAO7M,IAAP,CAAhB;AACD,GA/CW;AAgDZI,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcpJ,CAAd,EAAiBgJ,IAAjB,EAAuB;AAC3B,WAAO8N,MAAM,CAAC,IAAD,EAAO9W,CAAP,EAAUgJ,IAAV,CAAb;AACD,GAlDW;AAmDZ0O,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe1X,CAAf,EAAkB;AACvB,QAAI,CAACA,CAAL,EAAQ;AACNA,MAAAA,CAAC,GAAG,KAAKuC,KAAL,GAAaC,GAAb,EAAJ;AACD;;AAED,WAAO6V,OAAO,CAAC,IAAD,EAAOrY,CAAP,CAAd;AACD,GAzDW;AA0DZmZ,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcnQ,IAAd,EAAoB;AACxB,QAAI1G,CAAC,GAAG,KAAKlD,GAAL,CAAS,CAAT,EAAY4J,IAAZ,CAAR;AACA,WAAO1G,CAAC,CAACwI,OAAF,CAAU9B,IAAV,CAAP;AACD,GA7DW;AA8DZ;AACAuR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvR,IAAd,EAAoB;AACxB,QAAI1G,CAAC,GAAG,KAAKkK,QAAL,CAAc,CAAd,EAAiBxD,IAAjB,CAAR;AACA,WAAO1G,CAAC,CAACwI,OAAF,CAAU9B,IAAV,CAAP;AACD,GAlEW;AAmEZoE,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;AAC1B;AACA,QAAI,CAAC,KAAKhL,KAAN,IAAe,KAAKA,KAAL,KAAe,CAAlC,EAAqC;AACnC,aAAO,KAAP;AACD;;AAED,WAAO,CAAC/B,KAAK,CAAC,KAAKL,CAAL,CAAOmC,OAAP,EAAD,CAAb;AACD,GA1EW;AA2EZ;AACA,UAAQ,SAASqY,IAAT,CAAczV,EAAd,EAAkB;AACxB,QAAIzC,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,IAAAA,CAAC,CAACyC,EAAF,GAAOqD,IAAI,CAACrD,EAAD,EAAKzC,CAAC,CAACuC,SAAP,CAAX,CAFwB,CAEM;;AAE9B,WAAOvC,CAAP;AACD,GAjFW;AAkFZ;AACAsV,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe5O,IAAf,EAAqB0L,EAArB,EAAyB;AAC9B,WAAO2E,OAAO,CAAC,IAAD,EAAOrQ,IAAP,EAAa0L,EAAb,CAAd;AACD,GArFW;AAsFZ+F,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;AAC1B,QAAIhS,IAAI,GAAG,KAAKA,IAAL,EAAX,CAD0B,CACF;;AAExB,QAAIA,IAAI,GAAG,CAAP,IAAYA,IAAI,GAAG,EAAvB,EAA2B;AACzB,aAAO,KAAP;AACD;;AAED,WAAO,IAAP;AACD,GA9FW;AA+FZiS,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;AAC5B,WAAO,CAAC,KAAKD,OAAL,EAAR;AACD,GAjGW;AAkGZ;AACAE,EAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;AAClB3V,IAAAA,OAAO,CAAC2V,GAAR,CAAY,EAAZ;AACA3V,IAAAA,OAAO,CAAC2V,GAAR,CAAY1J,QAAQ,CAAC,IAAD,EAAO,YAAP,CAApB;AACA,WAAO,IAAP;AACD,GAvGW;AAwGZ2J,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;AAC1B5V,IAAAA,OAAO,CAAC2V,GAAR,CAAY,EAAZ;AACA3V,IAAAA,OAAO,CAAC2V,GAAR,CAAY1J,QAAQ,CAAC,IAAD,EAAO,YAAP,CAApB;AACA,WAAO,IAAP;AACD,GA5GW;AA6GZzB,EAAAA,IAAI,EAAE,SAASA,IAAT,GAAgB;AACpB,QAAIqL,KAAK,GAAG,IAAZ;;AAEA,WAAOX,OAAO,CAACtS,MAAR,CAAe,UAAUC,CAAV,EAAamB,IAAb,EAAmB;AACvCnB,MAAAA,CAAC,CAACmB,IAAD,CAAD,GAAU6R,KAAK,CAAC7R,IAAD,CAAL,EAAV;AACA,aAAOnB,CAAP;AACD,KAHM,EAGJ,EAHI,CAAP;AAID,GApHW;AAqHZiT,EAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;AACtB,QAAI/V,EAAE,GAAG,KAAK8B,QAAL,EAAT;AACA,QAAI8B,IAAI,GAAG,KAAKhC,MAAL,CAAY,IAAZ,IAAoB,GAApB,GAA0B,KAAKA,MAAL,CAAY,cAAZ,CAA1B,GAAwD,GAAxD,GAA8D,KAAK7G,IAAL,EAAzE;AACA6I,IAAAA,IAAI,IAAI,cAAc,KAAKhC,MAAL,CAAY,MAAZ,CAAtB;AACA3B,IAAAA,OAAO,CAAC2V,GAAR,CAAY,MAAZ,EAAoBhS,IAAI,GAAG,WAAP,GAAqB5D,EAAE,CAACsB,IAAxB,GAA+B,IAA/B,GAAsCtB,EAAE,CAACN,OAAH,CAAW/B,MAAjD,GAA0D,GAA9E;AACA,WAAO,IAAP;AACD,GA3HW;AA4HZ;AACAqY,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/a,CAAd,EAAiB;AACrBA,IAAAA,CAAC,GAAG,KAAKuC,KAAL,GAAaC,GAAb,CAAiBxC,CAAjB,CAAJ;AACA,WAAOA,CAAC,CAAC0X,KAAF,CAAQ,IAAR,CAAP;AACD,GAhIW;AAiIZsD,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;AAC1B,QAAIhb,CAAC,GAAG,KAAKuC,KAAL,GAAaC,GAAb,CAAiB6B,IAAI,CAAC8H,GAAL,EAAjB,CAAR;AACA,WAAOnM,CAAC,CAAC0X,KAAF,CAAQ,IAAR,CAAP;AACD,GApIW;AAqIZuD,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBza,KAAnB,EAA0B;AACnC;AACA,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,WAAKoY,UAAL,GAAkBpY,KAAlB;AACA,aAAO,IAAP;AACD;;AAED,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B;AACAA,MAAAA,KAAK,GAAGA,KAAK,CAACuB,WAAN,GAAoBC,IAApB,EAAR;AACA,UAAIoE,GAAG,GAAGoH,IAAI,CAAC,OAAD,CAAJ,GAAgBqD,OAAhB,CAAwBrQ,KAAxB,CAAV;;AAEA,UAAI4F,GAAG,KAAK,CAAC,CAAb,EAAgB;AACdA,QAAAA,GAAG,GAAGoH,IAAI,CAAC,MAAD,CAAJ,GAAeqD,OAAf,CAAuBrQ,KAAvB,CAAN;AACD;;AAED,UAAI4F,GAAG,KAAK,CAAC,CAAb,EAAgB;AACdA,QAAAA,GAAG,GAAG,CAAN,CADc,CACL;AACV;;AAED,WAAKwS,UAAL,GAAkBxS,GAAlB;AACD,KAdD,MAcO;AACLpB,MAAAA,OAAO,CAACC,IAAR,CAAa,wDAAb,EAAuEzE,KAAvE;AACD;;AAED,WAAO,IAAP;AACD;AA/JW,CAAd,EAgKG;;AAEH2Z,OAAO,CAACe,KAAR,GAAgBf,OAAO,CAACH,KAAxB;AACAG,OAAO,CAACgB,KAAR,GAAgBhB,OAAO,CAACxE,OAAxB;AACAwE,OAAO,CAACiB,IAAR,GAAejB,OAAO,CAACvC,KAAvB;AACA,IAAIyD,SAAS,GAAGlB,OAAhB,EAEA;;AAEA,IAAImB,YAAY,GAAG1b,GAAG,CAACC,UAAvB;;AAEA,IAAI0b,QAAQ,GAAG,SAASA,QAAT,CAAkB5b,CAAlB,EAAqB;AAClC;AACA,MAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzBA,IAAAA,CAAC,GAAGkC,QAAQ,CAAClC,CAAD,EAAI,EAAJ,CAAZ;AACD;;AAED,SAAOA,CAAP;AACD,CAPD;;AASA,IAAIoN,KAAK,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,QAAlC,EAA4C,QAA5C,EAAsD,aAAtD,CAAZ,EAAkF;;AAElF,IAAIyO,OAAO,GAAG,SAASA,OAAT,CAAiBlZ,CAAjB,EAAoBJ,GAApB,EAAyB8G,IAAzB,EAA+B;AAC3C,MAAIrJ,CAAC,GAAGoN,KAAK,CAAC8D,OAAN,CAAc7H,IAAd,CAAR;AACA,MAAI6B,GAAG,GAAGkC,KAAK,CAAC0K,KAAN,CAAY9X,CAAZ,EAAeoN,KAAK,CAACjM,MAArB,CAAV;;AAEA,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsJ,GAAG,CAAC/J,MAAxB,EAAgCS,CAAC,EAAjC,EAAqC;AACnC,QAAIka,IAAI,GAAGvZ,GAAG,CAAC2I,GAAG,CAACtJ,CAAD,CAAJ,CAAH,EAAX;AACAe,IAAAA,CAAC,CAACuI,GAAG,CAACtJ,CAAD,CAAJ,CAAD,CAAUka,IAAV;AACD;;AAED,SAAOnZ,CAAP;AACD,CAVD;;AAYA,IAAIE,GAAG,GAAG;AACRsG,EAAAA,YAAY,EAAE,SAASA,YAAT,CAAsBxG,CAAtB,EAAyB3C,CAAzB,EAA4B;AACxCA,IAAAA,CAAC,GAAG4b,QAAQ,CAAC5b,CAAD,CAAZ;AACA,QAAI8E,OAAO,GAAGnC,CAAC,CAACgG,WAAF,EAAd;AACA,QAAIc,IAAI,GAAG3E,OAAO,GAAG9E,CAArB,CAHwC,CAGhB;;AAExB,WAAO2C,CAAC,CAACF,KAAF,GAAUgH,IAAjB;AACD,GAPO;AAQRM,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBpH,CAAjB,EAAoB3C,CAApB,EAAuB;AAC9BA,IAAAA,CAAC,GAAG4b,QAAQ,CAAC5b,CAAD,CAAZ;AACA,QAAIyJ,IAAI,GAAG9G,CAAC,CAACiG,MAAF,KAAa5I,CAAxB;AACA,QAAI6E,KAAK,GAAG4E,IAAI,GAAGN,YAAY,CAACP,MAAhC;AACA,WAAOjG,CAAC,CAACF,KAAF,GAAUoC,KAAjB;AACD,GAbO;AAcR+R,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBjU,CAAjB,EAAoB3C,CAApB,EAAuB;AAC9BA,IAAAA,CAAC,GAAG4b,QAAQ,CAAC5b,CAAD,CAAZ;AACA,QAAIiK,GAAG,GAAGtH,CAAC,CAACC,KAAF,EAAV;AACA,QAAI6G,IAAI,GAAG9G,CAAC,CAACkG,MAAF,KAAa7I,CAAxB;AACA,QAAI6E,KAAK,GAAG4E,IAAI,GAAGN,YAAY,CAACN,MAAhC;AACAlG,IAAAA,CAAC,CAACF,KAAF,IAAWoC,KAAX,CAL8B,CAKZ;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEAgX,IAAAA,OAAO,CAAClZ,CAAD,EAAIsH,GAAJ,EAAS,QAAT,CAAP;AACA,WAAOtH,CAAC,CAACF,KAAT;AACD,GA7BO;AA8BRoU,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAelU,CAAf,EAAkB3C,CAAlB,EAAqB;AAC1BA,IAAAA,CAAC,GAAG4b,QAAQ,CAAC5b,CAAD,CAAZ;;AAEA,QAAIA,CAAC,IAAI,EAAT,EAAa;AACXA,MAAAA,CAAC,GAAG,EAAJ;AACD,KAFD,MAEO,IAAIA,CAAC,GAAG,CAAR,EAAW;AAChBA,MAAAA,CAAC,GAAG,CAAJ;AACD;;AAED,QAAIiK,GAAG,GAAGtH,CAAC,CAACC,KAAF,EAAV;AACA,QAAI6G,IAAI,GAAG9G,CAAC,CAACmG,IAAF,KAAW9I,CAAtB;AACA,QAAI6E,KAAK,GAAG4E,IAAI,GAAGN,YAAY,CAACL,IAAhC;AACAnG,IAAAA,CAAC,CAACF,KAAF,IAAWoC,KAAX;AACAsF,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRmG,MAAAA,IAAI,EAAE9I;AADE,KAAJ,CAAN;AAGA6b,IAAAA,OAAO,CAAClZ,CAAD,EAAIsH,GAAJ,EAAS,QAAT,CAAP;AACA,WAAOtH,CAAC,CAACF,KAAT;AACD,GAhDO;AAiDR;AACAyM,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvM,CAAd,EAAiB3B,GAAjB,EAAsB;AAC1B,QAAI4G,CAAC,GAAG5G,GAAG,CAAC6G,KAAJ,CAAU,mCAAV,CAAR;;AAEA,QAAI,CAACD,CAAL,EAAQ;AACN;AACAA,MAAAA,CAAC,GAAG5G,GAAG,CAAC6G,KAAJ,CAAU,qBAAV,CAAJ;;AAEA,UAAI,CAACD,CAAL,EAAQ;AACN,eAAOjF,CAAC,CAACF,KAAT;AACD;;AAEDmF,MAAAA,CAAC,CAAC6Q,MAAF,CAAS,CAAT,EAAY,CAAZ,EAAe,GAAf,EARM,CAQe;AACtB;;AAED,QAAItI,GAAG,GAAG,KAAV;AACA,QAAIrH,IAAI,GAAG5G,QAAQ,CAAC0F,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;AACA,QAAIiB,MAAM,GAAG3G,QAAQ,CAAC0F,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAArB;;AAEA,QAAIkB,IAAI,GAAG,EAAX,EAAe;AACbqH,MAAAA,GAAG,GAAG,IAAN;AACD,KApByB,CAoBxB;;;AAGF,QAAIA,GAAG,KAAK,KAAZ,EAAmB;AACjB,UAAIvI,CAAC,CAAC,CAAD,CAAD,KAAS,IAAT,IAAiBkB,IAAI,KAAK,EAA9B,EAAkC;AAChC;AACAA,QAAAA,IAAI,GAAG,CAAP;AACD;;AAED,UAAIlB,CAAC,CAAC,CAAD,CAAD,KAAS,IAAT,IAAiBkB,IAAI,GAAG,EAA5B,EAAgC;AAC9B;AACAA,QAAAA,IAAI,IAAI,EAAR;AACD;AACF;;AAEDnG,IAAAA,CAAC,GAAGA,CAAC,CAACmG,IAAF,CAAOA,IAAP,CAAJ;AACAnG,IAAAA,CAAC,GAAGA,CAAC,CAACkG,MAAF,CAASA,MAAT,CAAJ;AACAlG,IAAAA,CAAC,GAAGA,CAAC,CAACiG,MAAF,CAAS,CAAT,CAAJ;AACAjG,IAAAA,CAAC,GAAGA,CAAC,CAACgG,WAAF,CAAc,CAAd,CAAJ;AACA,WAAOhG,CAAC,CAACF,KAAT;AACD,GA1FO;AA2FRuG,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrG,CAAd,EAAiB3C,CAAjB,EAAoB;AACxBA,IAAAA,CAAC,GAAG4b,QAAQ,CAAC5b,CAAD,CAAZ,CADwB,CACP;;AAEjB,QAAIA,CAAC,GAAG,EAAR,EAAY;AACV,UAAIiJ,KAAK,GAAGtG,CAAC,CAACsG,KAAF,EAAZ;AACA,UAAIyC,GAAG,GAAGF,cAAc,CAACvC,KAAD,CAAxB,CAFU,CAEuB;;AAEjC,UAAIA,KAAK,KAAK,CAAV,IAAejJ,CAAC,KAAK,EAArB,IAA2B2b,YAAY,CAAChZ,CAAC,CAACxC,IAAF,EAAD,CAA3C,EAAuD;AACrDuL,QAAAA,GAAG,GAAG,EAAN;AACD;;AAED,UAAI1L,CAAC,GAAG0L,GAAR,EAAa;AACX1L,QAAAA,CAAC,GAAG0L,GAAJ;AACD;AACF,KAduB,CActB;;;AAGF,QAAI1L,CAAC,IAAI,CAAT,EAAY;AACVA,MAAAA,CAAC,GAAG,CAAJ;AACD;;AAEDmK,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRqG,MAAAA,IAAI,EAAEhJ;AADE,KAAJ,CAAN;AAGA,WAAO2C,CAAC,CAACF,KAAT;AACD,GApHO;AAqHR;AACAwG,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetG,CAAf,EAAkB3C,CAAlB,EAAqB;AAC1B,QAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzBA,MAAAA,CAAC,GAAGyK,MAAM,CAACG,OAAP,GAAiB5K,CAAC,CAACoC,WAAF,EAAjB,CAAJ;AACD;;AAEDpC,IAAAA,CAAC,GAAG4b,QAAQ,CAAC5b,CAAD,CAAZ,CAL0B,CAKT;;AAEjB,QAAIA,CAAC,IAAI,EAAT,EAAa;AACXA,MAAAA,CAAC,GAAG,EAAJ;AACD;;AAED,QAAIA,CAAC,IAAI,CAAT,EAAY;AACVA,MAAAA,CAAC,GAAG,CAAJ;AACD;;AAED,QAAIgJ,IAAI,GAAGrG,CAAC,CAACqG,IAAF,EAAX,CAf0B,CAeL;;AAErB,QAAIA,IAAI,GAAGwC,cAAc,CAACxL,CAAD,CAAzB,EAA8B;AAC5B;AACAgJ,MAAAA,IAAI,GAAGwC,cAAc,CAACxL,CAAD,CAArB;AACD;;AAEDmK,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRsG,MAAAA,KAAK,EAAEjJ,CADC;AAERgJ,MAAAA,IAAI,EAAEA;AAFE,KAAJ,CAAN;AAIA,WAAOrG,CAAC,CAACF,KAAT;AACD,GAjJO;AAkJRtC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcwC,CAAd,EAAiB3C,CAAjB,EAAoB;AACxBA,IAAAA,CAAC,GAAG4b,QAAQ,CAAC5b,CAAD,CAAZ;AACAmK,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRxC,MAAAA,IAAI,EAAEH;AADE,KAAJ,CAAN;AAGA,WAAO2C,CAAC,CAACF,KAAT;AACD,GAxJO;AAyJRmQ,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBjQ,CAAnB,EAAsB3C,CAAtB,EAAyB;AAClCA,IAAAA,CAAC,GAAG4b,QAAQ,CAAC5b,CAAD,CAAZ;AACA,QAAIiK,GAAG,GAAGtH,CAAC,CAACC,KAAF,EAAV;AACA5C,IAAAA,CAAC,IAAI,CAAL,CAHkC,CAG1B;;AAER,QAAIA,CAAC,IAAI,CAAT,EAAY;AACVA,MAAAA,CAAC,GAAG,CAAJ;AACD,KAFD,MAEO,IAAIA,CAAC,IAAI,GAAT,EAAc;AACnBA,MAAAA,CAAC,GAAG,GAAJ;AACD;;AAED2C,IAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,MAAV,CAAJ;AACAxI,IAAAA,CAAC,GAAGA,CAAC,CAAClD,GAAF,CAAMO,CAAN,EAAS,KAAT,CAAJ;AACA6b,IAAAA,OAAO,CAAClZ,CAAD,EAAIsH,GAAJ,EAAS,MAAT,CAAP;AACA,WAAOtH,CAAC,CAACF,KAAT;AACD;AAxKO,CAAV;AA2KA,IAAIsZ,SAAS,GAAG;AACdpT,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqBlC,GAArB,EAA0B;AACrC,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACsG,YAAJ,CAAiBxG,CAAjB,EAAoB8D,GAApB,CAAV;AACA,aAAO9D,CAAP;AACD;;AAED,WAAO,KAAKtC,CAAL,CAAO2b,eAAP,EAAP;AACD,GATa;AAUdpT,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBnC,GAAhB,EAAqB;AAC3B,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACkH,OAAJ,CAAYpH,CAAZ,EAAe8D,GAAf,CAAV;AACA,aAAO9D,CAAP;AACD;;AAED,WAAO,KAAKtC,CAAL,CAAO4b,UAAP,EAAP;AACD,GAlBa;AAmBdpT,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBpC,GAAhB,EAAqB;AAC3B,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC+T,OAAJ,CAAYjU,CAAZ,EAAe8D,GAAf,CAAV;AACA,aAAO9D,CAAP;AACD;;AAED,WAAO,KAAKtC,CAAL,CAAO6b,UAAP,EAAP;AACD,GA3Ba;AA4BdpT,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrC,GAAd,EAAmB;AACvB,QAAIpG,CAAC,GAAG,KAAKA,CAAb;;AAEA,QAAIoG,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACgU,KAAJ,CAAUlU,CAAV,EAAa8D,GAAb,CAAV;AACA,aAAO9D,CAAP;AACD;;AAED,WAAOtC,CAAC,CAACgE,QAAF,EAAP;AACD,GAtCa;AAuCd;AACA8X,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB1V,GAAnB,EAAwB;AACjC,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;;AAEA,UAAIwZ,OAAO,GAAG3V,GAAG,GAAG,CAApB;;AAEA2V,MAAAA,OAAO,GAAGA,OAAO,GAAG,EAApB;;AAEA,UAAIC,KAAK,GAAGna,QAAQ,CAACuE,GAAD,EAAM,EAAN,CAApB;;AAEA9D,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACgU,KAAJ,CAAUlU,CAAV,EAAa0Z,KAAb,CAAV;AACA1Z,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC+T,OAAJ,CAAYjU,CAAZ,EAAeyZ,OAAf,CAAV;AACA,aAAOzZ,CAAP;AACD;;AAED,QAAItC,CAAC,GAAG,KAAKA,CAAb;AACA,QAAIyI,IAAI,GAAGzI,CAAC,CAACgE,QAAF,EAAX;AACA,QAAIwE,MAAM,GAAGxI,CAAC,CAAC6b,UAAF,EAAb;AACArT,IAAAA,MAAM,GAAGA,MAAM,GAAG,EAAlB;AACA,WAAOC,IAAI,GAAGD,MAAd;AACD,GA5Da;AA6Dd;AACAwG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBrO,GAAhB,EAAqB;AAC3B,QAAIX,CAAC,GAAG,KAAKA,CAAb;;AAEA,QAAIW,GAAG,KAAKI,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACA5B,MAAAA,GAAG,GAAG,KAAKA,GAAX;AACA,UAAI4G,CAAC,GAAG5G,GAAG,CAAC6G,KAAJ,CAAU,mBAAV,CAAR;;AAEA,UAAID,CAAJ,EAAO;AACL,YAAIkB,IAAI,GAAG5G,QAAQ,CAAC0F,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;;AAEA,YAAIA,CAAC,CAAC,CAAD,CAAD,KAAS,IAAb,EAAmB;AACjBkB,UAAAA,IAAI,IAAI,EAAR;AACD;;AAEDnG,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACgU,KAAJ,CAAUlU,CAAV,EAAamG,IAAb,CAAV;AACD;;AAED,aAAOnG,CAAP;AACD,KAnB0B,CAmBzB;;;AAGF,QAAI0M,MAAM,GAAGhP,CAAC,CAACgE,QAAF,EAAb;;AAEA,QAAIgL,MAAM,GAAG,EAAb,EAAiB;AACfA,MAAAA,MAAM,GAAGA,MAAM,GAAG,EAAlB;AACD;;AAED,QAAIA,MAAM,KAAK,CAAf,EAAkB;AAChBA,MAAAA,MAAM,GAAG,EAAT;AACD;;AAED,WAAOA,MAAP;AACD,GA/Fa;AAgGd;AACAH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclO,GAAd,EAAmB;AACvB,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACqM,IAAJ,CAASvM,CAAT,EAAY3B,GAAZ,CAAV;AACA,aAAO2B,CAAP;AACD;;AAED,WAAO,GAAGU,MAAH,CAAU,KAAKwQ,GAAL,EAAV,EAAsB,GAAtB,EAA2BxQ,MAA3B,CAAkCpD,GAAG,CAACc,OAAJ,CAAY,KAAK8H,MAAL,EAAZ,CAAlC,EAA8DxF,MAA9D,CAAqE,KAAK+H,IAAL,EAArE,CAAP;AACD,GAzGa;AA0Gd;AACAA,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvK,KAAd,EAAqB;AACzB,QAAIyb,KAAK,GAAG,IAAZ;AACA,QAAIxT,IAAI,GAAG,KAAKA,IAAL,EAAX;;AAEA,QAAIA,IAAI,IAAI,EAAZ,EAAgB;AACdwT,MAAAA,KAAK,GAAG,IAAR;AACD;;AAED,QAAI,OAAOzb,KAAP,KAAiB,QAArB,EAA+B;AAC7B,aAAOyb,KAAP;AACD,KAVwB,CAUvB;;;AAGF,QAAI3Z,CAAC,GAAG,KAAKC,KAAL,EAAR;AACA/B,IAAAA,KAAK,GAAGA,KAAK,CAACuB,WAAN,GAAoBC,IAApB,EAAR,CAdyB,CAcW;AACpC;;AAEA,QAAIyG,IAAI,IAAI,EAAR,IAAcjI,KAAK,KAAK,IAA5B,EAAkC;AAChC;AACAiI,MAAAA,IAAI,IAAI,EAAR;AACA,aAAOnG,CAAC,CAACmG,IAAF,CAAOA,IAAP,CAAP;AACD;;AAED,QAAIA,IAAI,GAAG,EAAP,IAAajI,KAAK,KAAK,IAA3B,EAAiC;AAC/BiI,MAAAA,IAAI,IAAI,EAAR;AACA,aAAOnG,CAAC,CAACmG,IAAF,CAAOA,IAAP,CAAP;AACD;;AAED,WAAOnG,CAAP;AACD,GAxIa;AAyId;AACA4Z,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBvb,GAAjB,EAAsB;AAC7B,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;AACrB,UAAIob,KAAK,GAAG;AACVC,QAAAA,OAAO,EAAE,QADC;AAEVC,QAAAA,SAAS,EAAE,QAFD;AAGVC,QAAAA,IAAI,EAAE,SAHI;AAIVC,QAAAA,KAAK,EAAE,SAJG;AAKVC,QAAAA,SAAS,EAAE,QALD;AAMVC,QAAAA,OAAO,EAAE,QANC;AAOVC,QAAAA,MAAM,EAAE,QAPE;AAQVC,QAAAA,KAAK,EAAE,SARG;AASVC,QAAAA,QAAQ,EAAE;AATA,OAAZ;AAWA,UAAIta,CAAC,GAAG,KAAKC,KAAL,EAAR;AACA5B,MAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;AACAA,MAAAA,GAAG,GAAGA,GAAG,CAACoB,WAAJ,EAAN;;AAEA,UAAIoa,KAAK,CAACnU,cAAN,CAAqBrH,GAArB,MAA8B,IAAlC,EAAwC;AACtC2B,QAAAA,CAAC,GAAGA,CAAC,CAACuM,IAAF,CAAOsN,KAAK,CAACxb,GAAD,CAAZ,CAAJ;AACD;;AAED,aAAO2B,CAAP;AACD;;AAED,QAAIuF,CAAC,GAAG,KAAKY,IAAL,EAAR;;AAEA,QAAIZ,CAAC,GAAG,CAAR,EAAW;AACT,aAAO,OAAP;AACD;;AAED,QAAIA,CAAC,GAAG,EAAR,EAAY;AACV;AACA,aAAO,SAAP;AACD;;AAED,QAAIA,CAAC,GAAG,EAAR,EAAY;AACV;AACA,aAAO,WAAP;AACD;;AAED,QAAIA,CAAC,GAAG,EAAR,EAAY;AACV;AACA,aAAO,SAAP;AACD;;AAED,WAAO,OAAP;AACD,GAxLa;AAyLd;AACAgI,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAazJ,GAAb,EAAkB;AACrB,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,aAAO,KAAKyB,GAAL,CAAS4D,GAAT,CAAP;AACD;;AAED,WAAO,KAAKO,MAAL,CAAY,KAAZ,CAAP;AACD;AAhMa,CAAhB;AAkMA,IAAIkW,OAAO,GAAGnB,SAAd;AAEA,IAAIoB,SAAS,GAAG;AACd;AACAnU,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvC,GAAd,EAAmB;AACvB,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACmG,IAAJ,CAASrG,CAAT,EAAY8D,GAAZ,CAAV;AACA,aAAO9D,CAAP;AACD;;AAED,WAAO,KAAKtC,CAAL,CAAO+D,OAAP,EAAP;AACD,GAVa;AAWd;AACA2E,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAalI,KAAb,EAAoB;AACvB,QAAIA,KAAK,KAAKO,SAAd,EAAyB;AACvB,aAAO,KAAKf,CAAL,CAAO+c,MAAP,EAAP;AACD;;AAED,QAAI5T,QAAQ,GAAG,KAAK5G,KAAL,EAAf;AACA,QAAIkZ,IAAI,GAAGjb,KAAX,CANuB,CAML;;AAElB,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7BA,MAAAA,KAAK,GAAGA,KAAK,CAACuB,WAAN,EAAR;AACA0Z,MAAAA,IAAI,GAAGjO,IAAI,CAAC,OAAD,CAAJ,GAAgBqD,OAAhB,CAAwBrQ,KAAxB,CAAP;;AAEA,UAAIib,IAAI,KAAK,CAAC,CAAd,EAAiB;AACfA,QAAAA,IAAI,GAAGjO,IAAI,CAAC,MAAD,CAAJ,GAAeqD,OAAf,CAAuBrQ,KAAvB,CAAP;AACD;AACF,KAfsB,CAerB;;;AAGF,QAAIkI,GAAG,GAAG,KAAK1I,CAAL,CAAO+c,MAAP,EAAV;AACA,QAAI3T,IAAI,GAAGV,GAAG,GAAG+S,IAAjB;AACA,QAAInZ,CAAC,GAAG,KAAKkK,QAAL,CAAcpD,IAAI,GAAG,EAArB,EAAyB,OAAzB,CAAR,CApBuB,CAoBoB;;AAE3CU,IAAAA,MAAM,CAACxH,CAAD,EAAI;AACRmG,MAAAA,IAAI,EAAEU,QAAQ,CAACV,IAAT,EADE;AAERD,MAAAA,MAAM,EAAEW,QAAQ,CAACX,MAAT,EAFA;AAGRD,MAAAA,MAAM,EAAEY,QAAQ,CAACZ,MAAT;AAHA,KAAJ,CAAN;AAKA,WAAOjG,CAAP;AACD,GAxCa;AAyCd;AACAwL,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBtN,KAAjB,EAAwB;AAC/B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;AACvB,aAAOyM,IAAI,CAAC,MAAD,CAAJ,GAAe,KAAK9E,GAAL,EAAf,CAAP;AACD;;AAED,QAAIpG,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,IAAAA,CAAC,GAAGA,CAAC,CAACoG,GAAF,CAAMlI,KAAN,CAAJ;AACA,WAAO8B,CAAP;AACD,GAlDa;AAmDd;AACAsG,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAepI,KAAf,EAAsB;AAC3B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;AACvB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACoG,KAAJ,CAAUtG,CAAV,EAAa9B,KAAb,CAAV;AACA,aAAO8B,CAAP;AACD;;AAED,WAAO,KAAKtC,CAAL,CAAO8D,QAAP,EAAP;AACD;AA5Da,CAAhB;AA8DA,IAAIkZ,OAAO,GAAGF,SAAd;;AAEA,IAAIG,YAAY,GAAG,SAASA,YAAT,CAAsB3a,CAAtB,EAAyB;AAC1CA,EAAAA,CAAC,GAAGA,CAAC,CAACkG,MAAF,CAAS,CAAT,CAAJ;AACAlG,EAAAA,CAAC,GAAGA,CAAC,CAACiG,MAAF,CAAS,CAAT,CAAJ;AACAjG,EAAAA,CAAC,GAAGA,CAAC,CAACgG,WAAF,CAAc,CAAd,CAAJ;AACA,SAAOhG,CAAP;AACD,CALD;;AAOA,IAAI4a,SAAS,GAAG;AACd;AACA3K,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBnM,GAAnB,EAAwB;AACjC,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC+P,SAAJ,CAAcjQ,CAAd,EAAiB8D,GAAjB,CAAV;AACA,aAAO9D,CAAP;AACD,KALgC,CAK/B;;;AAGF,QAAI6a,GAAG,GAAG,CAAV;AACA,QAAIvU,KAAK,GAAG,KAAK5I,CAAL,CAAO8D,QAAP,EAAZ;AACA,QAAI5B,GAAJ,CAViC,CAUxB;;AAET,SAAK,IAAIX,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIqH,KAArB,EAA4BrH,CAAC,EAA7B,EAAiC;AAC/BW,MAAAA,GAAG,GAAG,IAAImC,IAAJ,EAAN;AACAnC,MAAAA,GAAG,CAACkb,OAAJ,CAAY,CAAZ;AACAlb,MAAAA,GAAG,CAACmb,WAAJ,CAAgB,KAAKrd,CAAL,CAAOyJ,WAAP,EAAhB,EAH+B,CAGQ;;AAEvCvH,MAAAA,GAAG,CAACob,QAAJ,CAAa,CAAb;AACApb,MAAAA,GAAG,CAACqb,UAAJ,CAAe,CAAf;AACArb,MAAAA,GAAG,CAACsb,QAAJ,CAAajc,CAAb;AACAW,MAAAA,GAAG,CAACob,QAAJ,CAAa,CAAC,CAAd,EAR+B,CAQb;;AAElBH,MAAAA,GAAG,IAAIjb,GAAG,CAAC6B,OAAJ,EAAP;AACD;;AAED,WAAOoZ,GAAG,GAAG,KAAKnd,CAAL,CAAO+D,OAAP,EAAb;AACD,GA5Ba;AA6Bd;AACA8E,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAczC,GAAd,EAAmB;AACvB;AACA,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,GAAGA,CAAC,CAACsG,KAAF,CAAQ,CAAR,CAAJ;AACAtG,MAAAA,CAAC,GAAGA,CAAC,CAACqG,IAAF,CAAO,CAAP,CAAJ;AACArG,MAAAA,CAAC,GAAGA,CAAC,CAACoG,GAAF,CAAM,QAAN,CAAJ;AACApG,MAAAA,CAAC,GAAG2a,YAAY,CAAC3a,CAAD,CAAhB,CALqB,CAKA;;AAErB,UAAIA,CAAC,CAAC+L,SAAF,OAAkB,UAAtB,EAAkC;AAChC/L,QAAAA,CAAC,GAAGA,CAAC,CAAClD,GAAF,CAAM,CAAN,EAAS,MAAT,CAAJ;AACD;;AAEDgH,MAAAA,GAAG,IAAI,CAAP,CAXqB,CAWX;;AAEV9D,MAAAA,CAAC,GAAGA,CAAC,CAAClD,GAAF,CAAMgH,GAAN,EAAW,OAAX,CAAJ;AACA,aAAO9D,CAAP;AACD,KAjBsB,CAiBrB;;;AAGF,QAAIJ,GAAG,GAAG,KAAKK,KAAL,EAAV;AACAL,IAAAA,GAAG,GAAGA,GAAG,CAAC0G,KAAJ,CAAU,CAAV,CAAN;AACA1G,IAAAA,GAAG,GAAGA,GAAG,CAACyG,IAAJ,CAAS,CAAT,CAAN;AACAzG,IAAAA,GAAG,GAAG+a,YAAY,CAAC/a,GAAD,CAAlB;AACAA,IAAAA,GAAG,GAAGA,GAAG,CAACwG,GAAJ,CAAQ,QAAR,CAAN,CAxBuB,CAwBE;;AAEzB,QAAIxG,GAAG,CAACmM,SAAJ,OAAoB,UAAxB,EAAoC;AAClCnM,MAAAA,GAAG,GAAGA,GAAG,CAAC9C,GAAJ,CAAQ,CAAR,EAAW,MAAX,CAAN;AACD,KA5BsB,CA4BrB;;;AAGF,QAAIqe,KAAK,GAAG,CAAZ;;AAEA,QAAIvb,GAAG,CAACyG,IAAJ,OAAe,CAAnB,EAAsB;AACpB8U,MAAAA,KAAK,GAAG,CAAR;AACD;;AAEDvb,IAAAA,GAAG,GAAGA,GAAG,CAACwb,KAAJ,CAAU,CAAV,EAAa,QAAb,CAAN;AACA,QAAIC,OAAO,GAAG,KAAKvb,KAAnB,CAtCuB,CAsCG;;AAE1B,QAAIF,GAAG,CAACE,KAAJ,GAAYub,OAAhB,EAAyB;AACvB,aAAO,CAAP;AACD,KA1CsB,CA0CrB;;;AAGF,QAAIpc,CAAC,GAAG,CAAR;AACA,QAAIqc,SAAS,GAAG,KAAKhV,KAAL,KAAe,CAA/B;AACA1G,IAAAA,GAAG,CAACE,KAAJ,IAAa0G,YAAY,CAACD,IAAb,GAAoB+U,SAAjC;AACArc,IAAAA,CAAC,IAAIqc,SAAL;;AAEA,WAAOrc,CAAC,GAAG,EAAX,EAAeA,CAAC,EAAhB,EAAoB;AAClB,UAAIW,GAAG,CAACE,KAAJ,GAAYub,OAAhB,EAAyB;AACvB,eAAOpc,CAAC,GAAGkc,KAAX;AACD;;AAEDvb,MAAAA,GAAG,GAAGA,GAAG,CAAC9C,GAAJ,CAAQ,CAAR,EAAW,MAAX,CAAN;AACD;;AAED,WAAO,EAAP;AACD,GAzFa;AA0Fd;AACAiP,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB7N,KAAnB,EAA0B;AACnC,QAAIA,KAAK,KAAKO,SAAd,EAAyB;AACvB,aAAOqJ,MAAM,CAAC,MAAD,CAAN,GAAiB,KAAKxB,KAAL,EAAjB,CAAP;AACD;;AAED,QAAItG,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,IAAAA,CAAC,GAAGA,CAAC,CAACsG,KAAF,CAAQpI,KAAR,CAAJ;AACA,WAAO8B,CAAP;AACD,GAnGa;AAoGd;AACA+M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBjJ,GAAjB,EAAsB;AAC7B,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAI,OAAOqF,GAAP,KAAe,QAAnB,EAA6B;AAC3BA,QAAAA,GAAG,GAAGA,GAAG,CAACxE,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;AACAwE,QAAAA,GAAG,GAAGvE,QAAQ,CAACuE,GAAD,EAAM,EAAN,CAAd;AACD;;AAED,UAAIqS,QAAQ,CAACrS,GAAD,CAAZ,EAAmB;AACjB,YAAI9D,CAAC,GAAG,KAAKC,KAAL,EAAR;AACA,YAAIsb,MAAM,GAAGpF,QAAQ,CAACrS,GAAD,CAAR,CAAc,CAAd,CAAb;AACA9D,QAAAA,CAAC,GAAGA,CAAC,CAACsG,KAAF,CAAQiV,MAAR,CAAJ;AACAvb,QAAAA,CAAC,GAAGA,CAAC,CAACqG,IAAF,CAAO,CAAP,CAAJ;AACArG,QAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAJ;AACA,eAAOxI,CAAP;AACD;AACF;;AAED,QAAIsG,KAAK,GAAG,KAAK5I,CAAL,CAAO8D,QAAP,EAAZ;;AAEA,SAAK,IAAIvC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkX,QAAQ,CAAC3X,MAA7B,EAAqCS,CAAC,EAAtC,EAA0C;AACxC,UAAIqH,KAAK,GAAG6P,QAAQ,CAAClX,CAAD,CAAR,CAAY,CAAZ,CAAZ,EAA4B;AAC1B,eAAOA,CAAC,GAAG,CAAX;AACD;AACF;;AAED,WAAO,CAAP;AACD,GA/Ha;AAgId;AACA+N,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB9O,KAAhB,EAAuB;AAC7B,QAAI6E,GAAG,GAAG,OAAV;;AAEA,QAAI,KAAKyT,UAAL,OAAsB,OAA1B,EAAmC;AACjCzT,MAAAA,GAAG,GAAG,OAAN;AACD;;AAED,QAAI7E,KAAK,KAAKO,SAAd,EAAyB;AACvB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;;AAEA,WAAK,IAAIhB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+W,OAAO,CAACjT,GAAD,CAAP,CAAavE,MAAjC,EAAyCS,CAAC,EAA1C,EAA8C;AAC5C,YAAIf,KAAK,KAAK8X,OAAO,CAACjT,GAAD,CAAP,CAAa9D,CAAb,EAAgB,CAAhB,CAAd,EAAkC;AAChCe,UAAAA,CAAC,GAAGA,CAAC,CAACsG,KAAF,CAAQ0P,OAAO,CAACjT,GAAD,CAAP,CAAa9D,CAAb,EAAgB,CAAhB,CAAR,CAAJ;AACAe,UAAAA,CAAC,GAAGA,CAAC,CAACqG,IAAF,CAAO,CAAP,CAAJ;AACArG,UAAAA,CAAC,GAAGA,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAJ;AACD;AACF;;AAED,aAAOxI,CAAP;AACD;;AAED,QAAIsG,KAAK,GAAG,KAAK5I,CAAL,CAAO8D,QAAP,EAAZ;;AAEA,SAAK,IAAIqG,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGmO,OAAO,CAACjT,GAAD,CAAP,CAAavE,MAAb,GAAsB,CAA5C,EAA+CqJ,EAAE,EAAjD,EAAqD;AACnD,UAAIvB,KAAK,IAAI0P,OAAO,CAACjT,GAAD,CAAP,CAAa8E,EAAb,EAAiB,CAAjB,CAAT,IAAgCvB,KAAK,GAAG0P,OAAO,CAACjT,GAAD,CAAP,CAAa8E,EAAE,GAAG,CAAlB,EAAqB,CAArB,CAA5C,EAAqE;AACnE,eAAOmO,OAAO,CAACjT,GAAD,CAAP,CAAa8E,EAAb,EAAiB,CAAjB,CAAP;AACD;AACF;;AAED,WAAO,QAAP;AACD,GA/Ja;AAgKd;AACArK,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsG,GAAd,EAAmB;AACvB,QAAIA,GAAG,KAAKrF,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC1C,IAAJ,CAASwC,CAAT,EAAY8D,GAAZ,CAAV;AACA,aAAO9D,CAAP;AACD;;AAED,WAAO,KAAKtC,CAAL,CAAOyJ,WAAP,EAAP;AACD,GAzKa;AA0Kd;AACA8F,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa5O,GAAb,EAAkB;AACrB,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;AACrB,UAAIuB,CAAC,GAAG,KAAKC,KAAL,EAAR;AACA5B,MAAAA,GAAG,GAAGA,GAAG,CAACoB,WAAJ,EAAN,CAFqB,CAEI;;AAEzB,UAAIjC,IAAI,GAAGwC,CAAC,CAACtC,CAAF,CAAIyJ,WAAJ,EAAX,CAJqB,CAIS;;AAE9B,UAAI9I,GAAG,KAAK,IAAR,IAAgBb,IAAI,GAAG,CAA3B,EAA8B;AAC5BwC,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC1C,IAAJ,CAASwC,CAAT,EAAYxC,IAAI,GAAG,CAAC,CAApB,CAAV;AACD,OARoB,CAQnB;;;AAGF,UAAIa,GAAG,KAAK,IAAR,IAAgBb,IAAI,GAAG,CAA3B,EAA8B;AAC5BwC,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC1C,IAAJ,CAASwC,CAAT,EAAYxC,IAAI,GAAG,CAAC,CAApB,CAAV;AACD;;AAED,aAAOwC,CAAP;AACD;;AAED,QAAI,KAAKtC,CAAL,CAAOyJ,WAAP,KAAuB,CAA3B,EAA8B;AAC5B,aAAO,IAAP;AACD;;AAED,WAAO,IAAP;AACD,GAnMa;AAoMd;AACAsP,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBvY,KAAhB,EAAuB;AAC7B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;AACvBP,MAAAA,KAAK,GAAGmB,MAAM,CAACnB,KAAD,CAAd;AACAA,MAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,aAAd,EAA6B,IAA7B,CAAR,CAFuB,CAEqB;;AAE5CpB,MAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAJuB,CAI8B;;AAErD,UAAI,CAACpB,KAAL,EAAY;AACVwE,QAAAA,OAAO,CAACC,IAAR,CAAa,iCAAb;AACA,eAAO,IAAP;AACD,OATsB,CASrB;;;AAGF,UAAIzE,KAAK,CAACM,MAAN,KAAiB,CAAjB,IAAsB,aAAamH,IAAb,CAAkBzH,KAAlB,CAA1B,EAAoD;AAClDA,QAAAA,KAAK,GAAG,OAAOA,KAAf;AACD;;AAED,UAAIV,IAAI,GAAGmG,MAAM,CAACzF,KAAD,CAAjB;;AAEA,UAAIH,KAAK,CAACP,IAAD,CAAT,EAAiB;AACf,eAAO,IAAP;AACD,OApBsB,CAoBrB;;;AAGFA,MAAAA,IAAI,GAAG+C,IAAI,CAAC8K,KAAL,CAAW7N,IAAI,GAAG,EAAlB,IAAwB,EAA/B;AACA,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP,CAxBuB,CAwBC;AACzB;;AAED,WAAO,KAAKgL,OAAL,CAAa,QAAb,EAAuBhL,IAAvB,EAAP;AACD,GAlOa;AAmOd;AACAkZ,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBxY,KAAjB,EAAwB;AAC/B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;AACvB,UAAI,OAAOP,KAAP,KAAiB,QAArB,EAA+B;AAC7BA,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAD6B,CACwB;;AAErDpB,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,gCAAd,EAAgD,UAAUwR,CAAV,EAAa2C,CAAb,EAAgBd,CAAhB,EAAmB;AACzE,cAAIA,CAAC,CAACzN,KAAF,CAAQ,WAAR,CAAJ,EAA0B;AACxBuO,YAAAA,CAAC,GAAG,MAAMA,CAAV;AACD;;AAED,iBAAOA,CAAP;AACD,SANO,CAAR;AAOAvV,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR,CAV6B,CAUI;AAClC;;AAED,UAAI9B,IAAI,GAAGmG,MAAM,CAACzF,KAAD,CAAjB;;AAEA,UAAIH,KAAK,CAACG,KAAD,CAAT,EAAkB;AAChBwE,QAAAA,OAAO,CAACC,IAAR,CAAa,kCAAb;AACA,eAAO,IAAP;AACD,OAnBsB,CAmBrB;;;AAGF,UAAInF,IAAI,KAAK,CAAb,EAAgB;AACdA,QAAAA,IAAI,GAAG,CAAP;AACD;;AAED,UAAIA,IAAI,IAAI,CAAZ,EAAe;AACbA,QAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAa,GAApB;AACD,OAFD,MAEO;AACLA,QAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAa,GAApB;AACD;;AAED,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;AACD,KAlC8B,CAkC7B;;;AAGF,QAAIsG,GAAG,GAAG,KAAK0E,OAAL,CAAa,SAAb,EAAwBhL,IAAxB,EAAV;AACAsG,IAAAA,GAAG,GAAGvD,IAAI,CAAC8K,KAAL,CAAWvH,GAAG,GAAG,GAAjB,CAAN;;AAEA,QAAIA,GAAG,GAAG,CAAV,EAAa;AACX,aAAOA,GAAG,GAAG,CAAb;AACD;;AAED,WAAOA,GAAG,GAAG,CAAb;AACD,GAjRa;AAkRd;AACA0X,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBtd,KAAnB,EAA0B;AACnC,QAAIA,KAAK,KAAKO,SAAd,EAAyB;AACvB,UAAI,OAAOP,KAAP,KAAiB,QAArB,EAA+B;AAC7BA,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAD6B,CACwB;;AAErDpB,QAAAA,KAAK,GAAGyF,MAAM,CAACzF,KAAD,CAAd;;AAEA,YAAIH,KAAK,CAACG,KAAD,CAAT,EAAkB;AAChBwE,UAAAA,OAAO,CAACC,IAAR,CAAa,oCAAb;AACA,iBAAO,IAAP;AACD;AACF;;AAED,UAAIzE,KAAK,GAAG,CAAZ,EAAe;AACbA,QAAAA,KAAK,IAAI,CAAT;AACD;;AAED,UAAIV,IAAI,GAAGU,KAAK,GAAG,IAAnB,CAhBuB,CAgBE;;AAEzB,UAAIV,IAAI,KAAK,CAAb,EAAgB;AACdA,QAAAA,IAAI,GAAG,CAAP;AACD;;AAED,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;AACD,KAxBkC,CAwBjC;;;AAGF,QAAIsG,GAAG,GAAGvD,IAAI,CAAC8K,KAAL,CAAW,KAAK7N,IAAL,KAAc,IAAzB,CAAV;;AAEA,QAAIsG,GAAG,IAAI,CAAX,EAAc;AACZA,MAAAA,GAAG,IAAI,CAAP;AACD;;AAED,WAAOA,GAAP;AACD;AArTa,CAAhB;AAuTA,IAAI2X,OAAO,GAAGb,SAAd;AAEA,IAAIc,SAAS,GAAG/d,MAAM,CAACgN,MAAP,CAAc,EAAd,EAAkB4P,OAAlB,EAA2BG,OAA3B,EAAoCe,OAApC,CAAhB,EAA8D;;AAE9DC,SAAS,CAAClV,YAAV,GAAyBkV,SAAS,CAAC1V,WAAnC;AACA0V,SAAS,CAACtU,OAAV,GAAoBsU,SAAS,CAACzV,MAA9B;AACAyV,SAAS,CAACzH,OAAV,GAAoByH,SAAS,CAACxV,MAA9B;AACAwV,SAAS,CAACxH,KAAV,GAAkBwH,SAAS,CAACvV,IAA5B;AACAuV,SAAS,CAACjP,MAAV,GAAmBiP,SAAS,CAACvV,IAA7B;AACAuV,SAAS,CAACxK,GAAV,GAAgBwK,SAAS,CAAChP,MAA1B;AACAgP,SAAS,CAAClO,GAAV,GAAgBkO,SAAS,CAACjP,MAA1B;AACAiP,SAAS,CAACxQ,IAAV,GAAiBwQ,SAAS,CAACtV,GAA3B;;AAEA,IAAIuV,UAAU,GAAG,SAASA,UAAT,CAAoBC,KAApB,EAA2B;AAC1C;AACAje,EAAAA,MAAM,CAAC+F,IAAP,CAAYgY,SAAZ,EAAuBhf,OAAvB,CAA+B,UAAUyC,CAAV,EAAa;AAC1Cyc,IAAAA,KAAK,CAAChe,SAAN,CAAgBuB,CAAhB,IAAqBuc,SAAS,CAACvc,CAAD,CAA9B;AACD,GAFD;AAGD,CALD;;AAOA,IAAI0c,KAAK,GAAGF,UAAZ;AAEA,IAAIG,YAAY,GAAGxe,GAAG,CAACC,UAAvB;;AAEA,IAAIwe,cAAc,GAAG,SAASA,cAAT,CAAwBzV,KAAxB,EAA+B9I,IAA/B,EAAqC;AACxD,MAAI8I,KAAK,KAAK,CAAV,IAAewV,YAAY,CAACte,IAAD,CAA/B,EAAuC;AACrC,WAAO,EAAP;AACD;;AAED,SAAOqL,cAAc,CAACvC,KAAD,CAArB;AACD,CAND,EAMG;AACH;;;AAGA,IAAI0V,SAAS,GAAG,SAASA,SAAT,CAAmB7C,IAAnB,EAAyB7R,GAAzB,EAA8B;AAC5C;AACA,MAAI6R,IAAI,CAAC7S,KAAL,GAAa,CAAjB,EAAoB;AAClB,QAAIyN,KAAK,GAAGxU,QAAQ,CAAC4Z,IAAI,CAAC7S,KAAL,GAAa,EAAd,EAAkB,EAAlB,CAApB;AACA6S,IAAAA,IAAI,CAAC3b,IAAL,GAAY8J,GAAG,CAAC9J,IAAJ,KAAauW,KAAzB;AACAoF,IAAAA,IAAI,CAAC7S,KAAL,GAAa6S,IAAI,CAAC7S,KAAL,GAAa,EAA1B;AACD,GAJD,MAIO,IAAI6S,IAAI,CAAC7S,KAAL,GAAa,CAAjB,EAAoB;AACzB;AACA,QAAI2V,MAAM,GAAG1b,IAAI,CAAC8K,KAAL,CAAW9K,IAAI,CAACC,GAAL,CAAS2Y,IAAI,CAAC7S,KAAd,IAAuB,EAAlC,EAAsC,EAAtC,CAAb;;AAEA2V,IAAAA,MAAM,GAAG1b,IAAI,CAACC,GAAL,CAASyb,MAAT,IAAmB,CAA5B;AACA9C,IAAAA,IAAI,CAAC3b,IAAL,GAAY8J,GAAG,CAAC9J,IAAJ,KAAaye,MAAzB,CALyB,CAKQ;;AAEjC9C,IAAAA,IAAI,CAAC7S,KAAL,GAAa6S,IAAI,CAAC7S,KAAL,GAAa,EAA1B;AACA6S,IAAAA,IAAI,CAAC7S,KAAL,GAAa6S,IAAI,CAAC7S,KAAL,GAAa,EAA1B;;AAEA,QAAI6S,IAAI,CAAC7S,KAAL,KAAe,EAAnB,EAAuB;AACrB6S,MAAAA,IAAI,CAAC7S,KAAL,GAAa,CAAb;AACD;AACF;;AAED,SAAO6S,IAAP;AACD,CAtBD,EAsBG;;;AAGH,IAAI+C,YAAY,GAAG,SAASA,YAAT,CAAsB/C,IAAtB,EAA4B7R,GAA5B,EAAiCuT,GAAjC,EAAsC;AACvD1B,EAAAA,IAAI,CAAC3b,IAAL,GAAY8J,GAAG,CAAC9J,IAAJ,EAAZ;AACA2b,EAAAA,IAAI,CAAC7S,KAAL,GAAagB,GAAG,CAAChB,KAAJ,EAAb;AACA,MAAID,IAAI,GAAGiB,GAAG,CAACjB,IAAJ,EAAX;AACA8S,EAAAA,IAAI,CAAC9S,IAAL,GAAYA,IAAI,GAAG9F,IAAI,CAACC,GAAL,CAASqa,GAAT,CAAnB;;AAEA,SAAO1B,IAAI,CAAC9S,IAAL,GAAY,CAAnB,EAAsB;AACpB8S,IAAAA,IAAI,CAAC7S,KAAL,IAAc,CAAd;;AAEA,QAAI6S,IAAI,CAAC7S,KAAL,GAAa,CAAjB,EAAoB;AAClB6S,MAAAA,IAAI,CAAC7S,KAAL,GAAa,EAAb;AACA6S,MAAAA,IAAI,CAAC3b,IAAL,IAAa,CAAb;AACD;;AAED,QAAIuL,GAAG,GAAGgT,cAAc,CAAC5C,IAAI,CAAC7S,KAAN,EAAa6S,IAAI,CAAC3b,IAAlB,CAAxB;AACA2b,IAAAA,IAAI,CAAC9S,IAAL,IAAa0C,GAAb;AACD;;AAED,SAAOoQ,IAAP;AACD,CAnBD,EAmBG;;;AAGH,IAAIgD,UAAU,GAAG,SAASA,UAAT,CAAoBhD,IAApB,EAA0B7R,GAA1B,EAA+BuT,GAA/B,EAAoC;AACnD,MAAIrd,IAAI,GAAG8J,GAAG,CAAC9J,IAAJ,EAAX;AACA,MAAI8I,KAAK,GAAGgB,GAAG,CAAChB,KAAJ,EAAZ;AACA,MAAIyC,GAAG,GAAGgT,cAAc,CAACzV,KAAD,EAAQ9I,IAAR,CAAxB;;AAEA,SAAOqd,GAAG,GAAG9R,GAAb,EAAkB;AAChB8R,IAAAA,GAAG,IAAI9R,GAAP;AACAzC,IAAAA,KAAK,IAAI,CAAT;;AAEA,QAAIA,KAAK,IAAI,EAAb,EAAiB;AACfA,MAAAA,KAAK,IAAI,EAAT;AACA9I,MAAAA,IAAI,IAAI,CAAR;AACD;;AAEDuL,IAAAA,GAAG,GAAGgT,cAAc,CAACzV,KAAD,EAAQ9I,IAAR,CAApB;AACD;;AAED2b,EAAAA,IAAI,CAAC7S,KAAL,GAAaA,KAAb;AACA6S,EAAAA,IAAI,CAAC9S,IAAL,GAAYwU,GAAZ;AACA,SAAO1B,IAAP;AACD,CApBD;;AAsBA,IAAIiD,MAAM,GAAG;AACXtU,EAAAA,MAAM,EAAEkU,SADG;AAEX9Q,EAAAA,IAAI,EAAEiR,UAFK;AAGXE,EAAAA,QAAQ,EAAEH;AAHC,CAAb,EAMA;AACA;AACA;AACA;;AAEA,IAAII,OAAO,GAAG,CAAC,aAAD,EAAgB,QAAhB,EAA0B,QAA1B,EAAoC,MAApC,EAA4C,MAA5C,EAAoD,OAApD,CAAd;AACA,IAAIC,IAAI,GAAG;AACTtW,EAAAA,MAAM,EAAEqW,OAAO,CAACnH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CADC;AAETjP,EAAAA,MAAM,EAAEoW,OAAO,CAACnH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAFC;AAGTkB,EAAAA,WAAW,EAAEiG,OAAO,CAACnH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAHJ;AAIThP,EAAAA,IAAI,EAAEmW,OAAO,CAACnH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAJG;AAKT9O,EAAAA,IAAI,EAAEiW,OAAO,CAACnH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CALG;AAMT7O,EAAAA,KAAK,EAAEgW,OAAO,CAACnH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CANE;AAOTpI,EAAAA,OAAO,EAAEuP,OAAO,CAACnH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAPA;AAQTnI,EAAAA,MAAM,EAAEsP,OAAO,CAACnH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CARC;AAST3X,EAAAA,IAAI,EAAE8e,OATG;AAUT7F,EAAAA,MAAM,EAAE6F,OAVC;AAWT5F,EAAAA,OAAO,EAAE4F;AAXA,CAAX;AAaAC,IAAI,CAAChW,IAAL,GAAYgW,IAAI,CAACpW,IAAjB;AACAoW,IAAI,CAACvP,MAAL,GAAcuP,IAAI,CAAClW,IAAnB;AACAkW,IAAI,CAACxP,OAAL,GAAewP,IAAI,CAAClW,IAApB,EAA0B;;AAE1B,IAAImW,aAAa,GAAG;AAClBhf,EAAAA,IAAI,EAAE,IADY;AAElBuP,EAAAA,OAAO,EAAE,IAFS;AAGlBC,EAAAA,MAAM,EAAE,IAHU;AAIlB1G,EAAAA,KAAK,EAAE,IAJW;AAKlBC,EAAAA,IAAI,EAAE,IALY;AAMlBH,EAAAA,GAAG,EAAE;AANa,CAApB;AAQA,IAAIqW,QAAQ,GAAG;AACbnW,EAAAA,KAAK,EAAE,IADM;AAEbyG,EAAAA,OAAO,EAAE,IAFI;AAGbC,EAAAA,MAAM,EAAE,IAHK;AAIbxP,EAAAA,IAAI,EAAE;AAJO,CAAf;;AAOA,IAAIkf,YAAY,GAAG,SAASf,UAAT,CAAoBgB,SAApB,EAA+B;AAChDA,EAAAA,SAAS,CAAC/e,SAAV,CAAoBd,GAApB,GAA0B,UAAUgH,GAAV,EAAe4C,IAAf,EAAqB;AAC7C,QAAI1G,CAAC,GAAG,KAAKC,KAAL,EAAR;;AAEA,QAAI,CAACyG,IAAD,IAAS5C,GAAG,KAAK,CAArB,EAAwB;AACtB,aAAO9D,CAAP,CADsB,CACZ;AACX;;AAED,QAAIsH,GAAG,GAAG,KAAKrH,KAAL,EAAV;AACAyG,IAAAA,IAAI,GAAGpJ,GAAG,CAACkC,SAAJ,CAAckH,IAAd,CAAP,CAR6C,CAQjB;;AAE5B,QAAIF,YAAY,CAACE,IAAD,CAAhB,EAAwB;AACtB1G,MAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACE,IAAD,CAAZ,GAAqB5C,GAAhC;AACD,KAFD,MAEO,IAAI4C,IAAI,KAAK,MAAb,EAAqB;AAC1B1G,MAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACJ,GAAb,IAAoBtC,GAAG,GAAG,CAA1B,CAAX;AACD,KAFM,MAEA,IAAI4C,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,QAAnC,EAA6C;AAClD1G,MAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACF,KAAb,IAAsBxC,GAAG,GAAG,CAA5B,CAAX;AACD,KAFM,MAEA,IAAI4C,IAAI,KAAK,QAAb,EAAuB;AAC5B1G,MAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACF,KAAb,IAAsBxC,GAAG,GAAG,CAA5B,CAAX;AACD,KAFM,MAEA,IAAI4C,IAAI,KAAK,aAAb,EAA4B;AACjC1G,MAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACN,MAAb,GAAsB,EAAtB,GAA2BpC,GAAtC;AACD,KApB4C,CAoB3C;;;AAGF,QAAIqV,IAAI,GAAG,EAAX;;AAEA,QAAIoD,IAAI,CAAC7V,IAAD,CAAR,EAAgB;AACd6V,MAAAA,IAAI,CAAC7V,IAAD,CAAJ,CAAWhK,OAAX,CAAmB,UAAUsY,CAAV,EAAa;AAC9BmE,QAAAA,IAAI,CAACnE,CAAD,CAAJ,GAAU1N,GAAG,CAAC0N,CAAD,CAAH,EAAV;AACD,OAFD;AAGD;;AAED,QAAIwH,aAAa,CAAC9V,IAAD,CAAjB,EAAyB;AACvB,UAAII,IAAI,GAAGQ,GAAG,CAAC/C,QAAJ,GAAepC,OAAf,CAAuB/B,MAAvB,GAAgCJ,CAAC,CAACuE,QAAF,GAAapC,OAAb,CAAqB/B,MAAhE;AACAJ,MAAAA,CAAC,CAACF,KAAF,IAAWgH,IAAI,GAAG,IAAP,GAAc,IAAzB;AACD,KAlC4C,CAkC3C;;;AAGF,QAAIJ,IAAI,KAAK,OAAb,EAAsB;AACpByS,MAAAA,IAAI,CAAC7S,KAAL,GAAagB,GAAG,CAAChB,KAAJ,KAAcxC,GAA3B,CADoB,CACY;;AAEhCqV,MAAAA,IAAI,GAAGiD,MAAM,CAACtU,MAAP,CAAcqR,IAAd,EAAoB7R,GAApB,CAAP;AACD,KAzC4C,CAyC3C;;;AAGF,QAAIZ,IAAI,KAAK,MAAb,EAAqB;AACnB,UAAImU,GAAG,GAAGvT,GAAG,CAACjB,IAAJ,KAAavC,GAAG,GAAG,CAA7B;;AAEA,UAAI+W,GAAG,IAAI,EAAP,IAAaA,GAAG,GAAG,CAAvB,EAA0B;AACxB1B,QAAAA,IAAI,CAAC9S,IAAL,GAAYwU,GAAZ;AACD;AACF,KAND,CAME;AANF,SAOK,IAAInU,IAAI,KAAK,MAAb,EAAqB;AACtB,YAAI5C,GAAG,GAAG,CAAV,EAAa;AACXqV,UAAAA,IAAI,GAAGiD,MAAM,CAACC,QAAP,CAAgBlD,IAAhB,EAAsB7R,GAAtB,EAA2BxD,GAA3B,CAAP;AACD,SAFD,MAEO;AACL;AACA,cAAI8Y,IAAI,GAAGtV,GAAG,CAACjB,IAAJ,KAAavC,GAAxB,CAFK,CAEwB;;;AAG7BqV,UAAAA,IAAI,GAAGiD,MAAM,CAAClR,IAAP,CAAYiO,IAAZ,EAAkB7R,GAAlB,EAAuBsV,IAAvB,CAAP;AACD,SATqB,CASpB;;;AAGF,YAAI9Y,GAAG,KAAK,CAAR,IAAawD,GAAG,CAACyN,MAAJ,CAAW/U,CAAX,EAAc,KAAd,CAAjB,EAAuC;AACrCmZ,UAAAA,IAAI,CAAC9S,IAAL,GAAYiB,GAAG,CAACjB,IAAJ,KAAavC,GAAzB;AACD;AACF,OAfE,CAeD;AAfC,WAgBE,IAAI4C,IAAI,KAAK,MAAT,IAAmB1G,CAAC,CAACxC,IAAF,OAAa8J,GAAG,CAAC9J,IAAJ,EAApC,EAAgD;AACjDwC,UAAAA,CAAC,CAACF,KAAF,IAAW0G,YAAY,CAACD,IAAxB;AACD,SAFE,CAED;AAFC,aAGE,IAAIG,IAAI,KAAK,QAAb,EAAuB;AACxByS,YAAAA,IAAI,CAAC3b,IAAL,GAAYwC,CAAC,CAACxC,IAAF,KAAW,EAAvB;AACD,WAFE,MAEI,IAAIkJ,IAAI,KAAK,SAAb,EAAwB;AAC7ByS,YAAAA,IAAI,CAAC3b,IAAL,GAAYwC,CAAC,CAACxC,IAAF,KAAW,GAAvB;AACD,WA1EsC,CA0ErC;;;AAGR,QAAIif,QAAQ,CAAC/V,IAAD,CAAZ,EAAoB;AAClB,UAAIqC,GAAG,GAAGF,cAAc,CAACsQ,IAAI,CAAC7S,KAAN,CAAxB;AACA6S,MAAAA,IAAI,CAAC9S,IAAL,GAAYiB,GAAG,CAACjB,IAAJ,EAAZ;;AAEA,UAAI8S,IAAI,CAAC9S,IAAL,GAAY0C,GAAhB,EAAqB;AACnBoQ,QAAAA,IAAI,CAAC9S,IAAL,GAAY0C,GAAZ;AACD;AACF;;AAEDvB,IAAAA,MAAM,CAACxH,CAAD,EAAImZ,IAAJ,CAAN;AACA,WAAOnZ,CAAP;AACD,GAxFD,CADgD,CAyF7C;;;AAGH2c,EAAAA,SAAS,CAAC/e,SAAV,CAAoBsM,QAApB,GAA+B,UAAUpG,GAAV,EAAe4C,IAAf,EAAqB;AAClD,QAAI1G,CAAC,GAAG,KAAKC,KAAL,EAAR;AACA,WAAOD,CAAC,CAAClD,GAAF,CAAMgH,GAAG,GAAG,CAAC,CAAb,EAAgB4C,IAAhB,CAAP;AACD,GAHD,CA5FgD,CA+F7C;;;AAGHiW,EAAAA,SAAS,CAAC/e,SAAV,CAAoBwd,KAApB,GAA4BuB,SAAS,CAAC/e,SAAV,CAAoBsM,QAAhD;AACAyS,EAAAA,SAAS,CAAC/e,SAAV,CAAoBif,IAApB,GAA2BF,SAAS,CAAC/e,SAAV,CAAoBd,GAA/C;AACD,CApGD;;AAsGA,IAAIA,GAAG,GAAG4f,YAAV,EAEA;;AACA,IAAII,KAAK,GAAG;AACV9W,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqBhG,CAArB,EAAwB;AACnC,WAAOA,CAAC,CAACF,KAAT;AACD,GAHS;AAIVmG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBjG,CAAhB,EAAmB;AACzB,WAAO,CAACA,CAAC,CAACxC,IAAF,EAAD,EAAWwC,CAAC,CAACsG,KAAF,EAAX,EAAsBtG,CAAC,CAACqG,IAAF,EAAtB,EAAgCrG,CAAC,CAACmG,IAAF,EAAhC,EAA0CnG,CAAC,CAACkG,MAAF,EAA1C,EAAsDlG,CAAC,CAACiG,MAAF,EAAtD,EAAkErH,IAAlE,CAAuE,GAAvE,CAAP;AACD,GANS;AAOVsH,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBlG,CAAhB,EAAmB;AACzB,WAAO,CAACA,CAAC,CAACxC,IAAF,EAAD,EAAWwC,CAAC,CAACsG,KAAF,EAAX,EAAsBtG,CAAC,CAACqG,IAAF,EAAtB,EAAgCrG,CAAC,CAACmG,IAAF,EAAhC,EAA0CnG,CAAC,CAACkG,MAAF,EAA1C,EAAsDtH,IAAtD,CAA2D,GAA3D,CAAP;AACD,GATS;AAUVuH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcnG,CAAd,EAAiB;AACrB,WAAO,CAACA,CAAC,CAACxC,IAAF,EAAD,EAAWwC,CAAC,CAACsG,KAAF,EAAX,EAAsBtG,CAAC,CAACqG,IAAF,EAAtB,EAAgCrG,CAAC,CAACmG,IAAF,EAAhC,EAA0CvH,IAA1C,CAA+C,GAA/C,CAAP;AACD,GAZS;AAaVwH,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAapG,CAAb,EAAgB;AACnB,WAAO,CAACA,CAAC,CAACxC,IAAF,EAAD,EAAWwC,CAAC,CAACsG,KAAF,EAAX,EAAsBtG,CAAC,CAACqG,IAAF,EAAtB,EAAgCzH,IAAhC,CAAqC,GAArC,CAAP;AACD,GAfS;AAgBV2H,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvG,CAAd,EAAiB;AACrB,WAAO,CAACA,CAAC,CAACxC,IAAF,EAAD,EAAWwC,CAAC,CAACuG,IAAF,EAAX,EAAqB3H,IAArB,CAA0B,GAA1B,CAAP;AACD,GAlBS;AAmBV0H,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetG,CAAf,EAAkB;AACvB,WAAO,CAACA,CAAC,CAACxC,IAAF,EAAD,EAAWwC,CAAC,CAACsG,KAAF,EAAX,EAAsB1H,IAAtB,CAA2B,GAA3B,CAAP;AACD,GArBS;AAsBVmO,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB/M,CAAjB,EAAoB;AAC3B,WAAO,CAACA,CAAC,CAACxC,IAAF,EAAD,EAAWwC,CAAC,CAAC+M,OAAF,EAAX,EAAwBnO,IAAxB,CAA6B,GAA7B,CAAP;AACD,GAxBS;AAyBVpB,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcwC,CAAd,EAAiB;AACrB,WAAOA,CAAC,CAACxC,IAAF,EAAP;AACD;AA3BS,CAAZ;AA6BAsf,KAAK,CAACzW,IAAN,GAAayW,KAAK,CAAC1W,GAAnB;;AAEA,IAAI2W,YAAY,GAAG,SAASpB,UAAT,CAAoBgB,SAApB,EAA+B;AAChDA,EAAAA,SAAS,CAAC/e,SAAV,CAAoBmX,MAApB,GAA6B,UAAUtB,CAAV,EAAa/M,IAAb,EAAmB;AAC9C,QAAIoK,CAAC,GAAG,IAAR;;AAEA,QAAI,CAACpK,IAAL,EAAW;AACT,aAAO,IAAP;AACD;;AAED,QAAI,OAAO+M,CAAP,KAAa,QAAb,IAAyB,OAAOA,CAAP,KAAa,QAA1C,EAAoD;AAClDA,MAAAA,CAAC,GAAG,IAAIkJ,SAAJ,CAAclJ,CAAd,EAAiB,KAAKlP,QAAL,CAAcR,IAA/B,CAAJ;AACD,KAT6C,CAS5C;;;AAGF2C,IAAAA,IAAI,GAAGA,IAAI,CAACpH,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAP;;AAEA,QAAIwd,KAAK,CAACpW,IAAD,CAAT,EAAiB;AACf,aAAOoW,KAAK,CAACpW,IAAD,CAAL,CAAYoK,CAAZ,MAAmBgM,KAAK,CAACpW,IAAD,CAAL,CAAY+M,CAAZ,CAA1B;AACD;;AAED,WAAO,IAAP;AACD,GAnBD;AAoBD,CArBD;;AAuBA,IAAIuJ,IAAI,GAAGD,YAAX;;AAEA,IAAIE,YAAY,GAAG,SAAStB,UAAT,CAAoBgB,SAApB,EAA+B;AAChD,MAAI9E,OAAO,GAAG;AACZlE,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBjW,CAAjB,EAAoB;AAC3BA,MAAAA,CAAC,GAAGJ,GAAG,CAACyC,OAAJ,CAAYrC,CAAZ,EAAe,IAAf,CAAJ;AACA,UAAIoC,KAAK,GAAGxC,GAAG,CAACqC,QAAJ,CAAajC,CAAb,CAAZ;;AAEA,UAAIoC,KAAK,KAAK,IAAd,EAAoB;AAClB,eAAO,IAAP;AACD;;AAED,aAAO,KAAKA,KAAL,GAAaA,KAApB;AACD,KAVW;AAWZ4T,IAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBhW,CAAlB,EAAqB;AAC7BA,MAAAA,CAAC,GAAGJ,GAAG,CAACyC,OAAJ,CAAYrC,CAAZ,EAAe,IAAf,CAAJ;AACA,UAAIoC,KAAK,GAAGxC,GAAG,CAACqC,QAAJ,CAAajC,CAAb,CAAZ;;AAEA,UAAIoC,KAAK,KAAK,IAAd,EAAoB;AAClB,eAAO,IAAP;AACD;;AAED,aAAO,KAAKA,KAAL,GAAaA,KAApB;AACD,KApBW;AAqBZod,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBxf,CAAjB,EAAoB;AAC3BA,MAAAA,CAAC,GAAGJ,GAAG,CAACyC,OAAJ,CAAYrC,CAAZ,EAAe,IAAf,CAAJ;AACA,UAAIoC,KAAK,GAAGxC,GAAG,CAACqC,QAAJ,CAAajC,CAAb,CAAZ;;AAEA,UAAIoC,KAAK,KAAK,IAAd,EAAoB;AAClB,eAAO,IAAP;AACD;;AAED,aAAO,KAAKA,KAAL,KAAeA,KAAtB;AACD,KA9BW;AA+BZqd,IAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBvb,KAAnB,EAA0BC,GAA1B,EAA+B;AACxC,UAAIub,WAAW,GAAG7e,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,KAAtF;AACAqD,MAAAA,KAAK,GAAGtE,GAAG,CAACyC,OAAJ,CAAY6B,KAAZ,EAAmB,IAAnB,CAAR;AACAC,MAAAA,GAAG,GAAGvE,GAAG,CAACyC,OAAJ,CAAY8B,GAAZ,EAAiB,IAAjB,CAAN;AACA,UAAIwb,UAAU,GAAG/f,GAAG,CAACqC,QAAJ,CAAaiC,KAAb,CAAjB;;AAEA,UAAIyb,UAAU,KAAK,IAAnB,EAAyB;AACvB,eAAO,IAAP;AACD;;AAED,UAAIC,QAAQ,GAAGhgB,GAAG,CAACqC,QAAJ,CAAakC,GAAb,CAAf;;AAEA,UAAIyb,QAAQ,KAAK,IAAjB,EAAuB;AACrB,eAAO,IAAP;AACD;;AAED,UAAIF,WAAJ,EAAiB;AACf,eAAO,KAAKD,SAAL,CAAevb,KAAf,EAAsBC,GAAtB,KAA8B,KAAKqb,OAAL,CAAatb,KAAb,CAA9B,IAAqD,KAAKsb,OAAL,CAAarb,GAAb,CAA5D;AACD;;AAED,aAAOwb,UAAU,GAAG,KAAKvd,KAAlB,IAA2B,KAAKA,KAAL,GAAawd,QAA/C;AACD;AApDW,GAAd,CADgD,CAsD7C;;AAEH3f,EAAAA,MAAM,CAAC+F,IAAP,CAAYmU,OAAZ,EAAqBnb,OAArB,CAA6B,UAAUyC,CAAV,EAAa;AACxCwd,IAAAA,SAAS,CAAC/e,SAAV,CAAoBuB,CAApB,IAAyB0Y,OAAO,CAAC1Y,CAAD,CAAhC;AACD,GAFD;AAGD,CA3DD;;AA6DA,IAAIoe,OAAO,GAAGN,YAAd;;AAEA,IAAIO,YAAY,GAAG,SAAS7B,UAAT,CAAoBgB,SAApB,EAA+B;AAChD,MAAI9E,OAAO,GAAG;AACZ3P,IAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1E,IAAd,EAAoB;AACxB;AACA,UAAIlG,GAAG,CAACa,QAAJ,CAAaqF,IAAI,CAAC0H,IAAlB,CAAJ,EAA6B;AAC3BA,QAAAA,IAAI,CAAChL,GAAL,CAASsD,IAAI,CAAC0H,IAAd;AACD,OAJuB,CAItB;;;AAGF,UAAI5N,GAAG,CAACa,QAAJ,CAAaqF,IAAI,CAACsE,MAAlB,CAAJ,EAA+B;AAC7BA,QAAAA,MAAM,CAAC5H,GAAP,CAAWsD,IAAI,CAACsE,MAAhB;AACD;AACF;AAXW,GAAd,CADgD,CAa7C;;AAEHnK,EAAAA,MAAM,CAAC+F,IAAP,CAAYmU,OAAZ,EAAqBnb,OAArB,CAA6B,UAAUyC,CAAV,EAAa;AACxCwd,IAAAA,SAAS,CAAC/e,SAAV,CAAoBuB,CAApB,IAAyB0Y,OAAO,CAAC1Y,CAAD,CAAhC;AACD,GAFD;AAGD,CAlBD;;AAoBA,IAAI+I,IAAI,GAAGsV,YAAX;AAEA,IAAIjb,SAAS,GAAGyB,MAAhB,EAAwB;;AAExB,IAAI2Y,SAAS,GAAG,SAASA,SAAT,CAAmB7E,OAAnB,EAA4BrV,EAA5B,EAAgC;AAC9C,MAAI+G,OAAO,GAAGjL,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF,CAD8C,CAE9C;;AACA,OAAKuB,KAAL,GAAa,IAAb,CAH8C,CAG3B;;AAEnB,OAAK2C,EAAL,GAAUqD,IAAI,CAACrD,EAAD,EAAKF,SAAL,CAAd,CAL8C,CAKf;;AAE/B,OAAKgF,MAAL,GAAciC,OAAO,CAACjC,MAAR,IAAkB,IAAhC,CAP8C,CAOR;;AAEtC,OAAKkC,OAAL,GAAeD,OAAO,CAAC2E,GAAR,IAAe3E,OAAO,CAACC,OAAtC,CAT8C,CASC;;AAE/C,OAAK6M,UAAL,GAAkB,CAAlB,CAX8C,CAWzB;;AAErB,MAAI9M,OAAO,CAACmP,SAAR,KAAsBla,SAA1B,EAAqC;AACnC,SAAK6X,UAAL,GAAkB9M,OAAO,CAACmP,SAA1B;AACD,GAf6C,CAe5C;;;AAGF,OAAKjP,MAAL,GAAc,EAAd;;AAEA,MAAIF,OAAO,CAACL,KAAR,KAAkB1K,SAAtB,EAAiC;AAC/B,SAAKiL,MAAL,GAAcF,OAAO,CAACL,KAAtB;AACD,GAtB6C,CAsB5C;;;AAGFxL,EAAAA,MAAM,CAAC8f,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC;AAC/B;AACAC,IAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;AAClB,UAAItd,MAAM,GAAG8C,KAAK,CAAC,IAAD,CAAlB,CADkB,CACQ;;AAE1B,UAAIlB,IAAI,GAAG,IAAID,IAAJ,CAAS,KAAKjC,KAAd,EAAqBmC,iBAArB,MAA4C,CAAvD,CAHkB,CAGwC;;AAE1D,UAAIC,KAAK,GAAGF,IAAI,GAAG5B,MAAM,GAAG,EAA5B,CALkB,CAKc;;AAEhC8B,MAAAA,KAAK,GAAGA,KAAK,GAAG,EAAR,GAAa,IAArB,CAPkB,CAOS;AAC3B;;AAEA,UAAIpC,KAAK,GAAG,KAAKA,KAAL,GAAaoC,KAAzB;AACA,UAAIxE,CAAC,GAAG,IAAIqE,IAAJ,CAASjC,KAAT,CAAR;AACA,aAAOpC,CAAP;AACD;AAf8B,GAAjC,EAzB8C,CAyC1C;;AAEJC,EAAAA,MAAM,CAAC8f,cAAP,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC;AACvCC,IAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;AAClB,aAAOnb,SAAP;AACD,KAHsC;AAIvCrC,IAAAA,GAAG,EAAE,SAASA,GAAT,CAAasC,GAAb,EAAkB;AACrBD,MAAAA,SAAS,GAAGC,GAAZ;AACA,aAAOA,GAAP;AACD;AAPsC,GAAzC,EA3C8C,CAmD1C;;AAEJ,MAAI5C,GAAG,GAAG1B,KAAK,CAAC,IAAD,EAAO4Z,OAAP,EAAgBrV,EAAhB,CAAf;AACA,OAAK3C,KAAL,GAAaF,GAAG,CAACE,KAAjB;AACD,CAvDD,EAuDG;;;AAGHnC,MAAM,CAAC+F,IAAP,CAAYqV,SAAZ,EAAuBrc,OAAvB,CAA+B,UAAUyC,CAAV,EAAa;AAC1Cwd,EAAAA,SAAS,CAAC/e,SAAV,CAAoBuB,CAApB,IAAyB4Z,SAAS,CAAC5Z,CAAD,CAAlC;AACD,CAFD,GAEI;;AAEJwd,SAAS,CAAC/e,SAAV,CAAoBqC,KAApB,GAA4B,YAAY;AACtC,SAAO,IAAI0c,SAAJ,CAAc,KAAK7c,KAAnB,EAA0B,KAAK2C,EAA/B,EAAmC;AACxC8E,IAAAA,MAAM,EAAE,KAAKA,MAD2B;AAExCoR,IAAAA,SAAS,EAAE,KAAKrC,UAFwB;AAGxCnN,IAAAA,KAAK,EAAE,KAAKO;AAH4B,GAAnC,CAAP;AAKD,CAND,EAMG;;;AAGHiT,SAAS,CAAC/e,SAAV,CAAoB+f,WAApB,GAAkC,YAAY;AAC5C,SAAO,IAAI5b,IAAJ,CAAS,KAAKjC,KAAd,CAAP;AACD,CAFD,EAEG;;;AAGH+b,KAAK,CAACc,SAAD,CAAL;AACA7f,GAAG,CAAC6f,SAAD,CAAH;AACAK,IAAI,CAACL,SAAD,CAAJ;AACAY,OAAO,CAACZ,SAAD,CAAP;AACAzU,IAAI,CAACyU,SAAD,CAAJ;AACA,IAAIiB,SAAS,GAAGjB,SAAhB;;AAEA,IAAIkB,QAAQ,GAAG,SAASA,QAAT,CAAkB/M,CAAlB,EAAqB2C,CAArB,EAAwB;AACrC,MAAI7R,KAAK,GAAG,IAAIgc,SAAJ,CAAc,IAAd,CAAZ;AACA,MAAI/b,GAAG,GAAG,IAAI+b,SAAJ,CAAc,IAAd,CAAV;AACAhc,EAAAA,KAAK,GAAGA,KAAK,CAAC2K,IAAN,CAAWuE,CAAX,CAAR,CAHqC,CAGd;;AAEvB,MAAI2C,CAAJ,EAAO;AACL5R,IAAAA,GAAG,GAAGA,GAAG,CAAC0K,IAAJ,CAASkH,CAAT,CAAN;AACD,GAFD,MAEO;AACL5R,IAAAA,GAAG,GAAGD,KAAK,CAAC9E,GAAN,CAAU,EAAV,EAAc,SAAd,CAAN;AACD;;AAED,MAAIghB,SAAS,GAAGlc,KAAK,CAACuE,IAAN,EAAhB;AACA,MAAI4X,OAAO,GAAGlc,GAAG,CAACsE,IAAJ,EAAd;AACA,MAAI6X,GAAG,GAAGrgB,MAAM,CAAC+F,IAAP,CAAY9B,KAAK,CAACW,SAAlB,EAA6B0b,MAA7B,CAAoC,UAAUxb,EAAV,EAAc;AAC1D,QAAIA,EAAE,CAAC8L,OAAH,CAAW,GAAX,MAAoB,CAAC,CAAzB,EAA4B;AAC1B,aAAO,KAAP;AACD;;AAED,QAAItJ,CAAC,GAAG,IAAI2Y,SAAJ,CAAc,IAAd,EAAoBnb,EAApB,CAAR;AACA,QAAI0D,IAAI,GAAGlB,CAAC,CAACkB,IAAF,EAAX,CAN0D,CAMrC;;AAErB,QAAIA,IAAI,IAAI2X,SAAR,IAAqB3X,IAAI,IAAI4X,OAAjC,EAA0C;AACxC;AACA,UAAI5X,IAAI,KAAK2X,SAAT,IAAsB7Y,CAAC,CAACiB,MAAF,KAAatE,KAAK,CAACsE,MAAN,EAAvC,EAAuD;AACrD,eAAO,KAAP;AACD;;AAED,UAAIC,IAAI,KAAK4X,OAAT,IAAoB9Y,CAAC,CAACiB,MAAF,KAAarE,GAAG,CAACqE,MAAJ,EAArC,EAAmD;AACjD,eAAO,KAAP;AACD;;AAED,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD,GAtBS,CAAV;AAuBA,SAAO8X,GAAP;AACD,CArCD;;AAuCA,IAAIE,UAAU,GAAGL,QAAjB;AAEA,IAAIM,QAAQ,GAAG,OAAf;;AAEA,IAAIC,MAAM,GAAG,SAAS9J,IAAT,CAAcpW,KAAd,EAAqBuE,EAArB,EAAyB+G,OAAzB,EAAkC;AAC7C,SAAO,IAAIoU,SAAJ,CAAc1f,KAAd,EAAqBuE,EAArB,EAAyB+G,OAAzB,CAAP;AACD,CAFD,EAEG;;;AAGH,IAAI6U,QAAQ,GAAG,SAASA,QAAT,CAAkBre,CAAlB,EAAqB;AAClC,MAAImJ,KAAK,GAAGnJ,CAAC,CAAC0J,MAAF,IAAY,EAAxB;AACA/L,EAAAA,MAAM,CAAC+F,IAAP,CAAYyF,KAAZ,EAAmBzM,OAAnB,CAA2B,UAAUyC,CAAV,EAAa;AACtCa,IAAAA,CAAC,GAAGA,CAAC,CAACb,CAAD,CAAD,CAAKgK,KAAK,CAAChK,CAAD,CAAV,CAAJ;AACD,GAFD;AAGA,SAAOa,CAAP;AACD,CAND,EAMG;;;AAGHoe,MAAM,CAACvU,GAAP,GAAa,UAAUpH,EAAV,EAAc+G,OAAd,EAAuB;AAClC,MAAIxJ,CAAC,GAAG,IAAI4d,SAAJ,CAAc,IAAI7b,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC+G,OAAxC,CAAR;AACAxJ,EAAAA,CAAC,GAAGqe,QAAQ,CAACre,CAAD,CAAZ;AACA,SAAOA,CAAP;AACD,CAJD;;AAMAoe,MAAM,CAACjV,KAAP,GAAe,UAAU1G,EAAV,EAAc+G,OAAd,EAAuB;AACpC,MAAIxJ,CAAC,GAAG,IAAI4d,SAAJ,CAAc,IAAI7b,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC+G,OAAxC,CAAR;AACAxJ,EAAAA,CAAC,GAAGqe,QAAQ,CAACre,CAAD,CAAZ;AACA,SAAOA,CAAC,CAACwI,OAAF,CAAU,KAAV,CAAP;AACD,CAJD;;AAMA4V,MAAM,CAACpU,QAAP,GAAkB,UAAUvH,EAAV,EAAc+G,OAAd,EAAuB;AACvC,MAAIxJ,CAAC,GAAG,IAAI4d,SAAJ,CAAc,IAAI7b,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC+G,OAAxC,CAAR;AACAxJ,EAAAA,CAAC,GAAGqe,QAAQ,CAACre,CAAD,CAAZ;AACA,SAAOA,CAAC,CAAClD,GAAF,CAAM,CAAN,EAAS,KAAT,EAAgB0L,OAAhB,CAAwB,KAAxB,CAAP;AACD,CAJD;;AAMA4V,MAAM,CAACnU,SAAP,GAAmB,UAAUxH,EAAV,EAAc+G,OAAd,EAAuB;AACxC,MAAIxJ,CAAC,GAAG,IAAI4d,SAAJ,CAAc,IAAI7b,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC+G,OAAxC,CAAR;AACAxJ,EAAAA,CAAC,GAAGqe,QAAQ,CAACre,CAAD,CAAZ;AACA,SAAOA,CAAC,CAACkK,QAAF,CAAW,CAAX,EAAc,KAAd,EAAqB1B,OAArB,CAA6B,KAA7B,CAAP;AACD,CAJD;;AAMA4V,MAAM,CAACE,MAAP,GAAgB,UAAU9b,GAAV,EAAe;AAC7B7E,EAAAA,MAAM,CAAC+F,IAAP,CAAYlB,GAAZ,EAAiB9F,OAAjB,CAAyB,UAAUyC,CAAV,EAAa;AACpCye,IAAAA,SAAS,CAAChgB,SAAV,CAAoBuB,CAApB,IAAyBqD,GAAG,CAACrD,CAAD,CAA5B;AACD,GAFD;AAGA,SAAO,IAAP;AACD,CALD,EAKG;;;AAGHif,MAAM,CAACP,QAAP,GAAkBK,UAAlB;AACAE,MAAM,CAACG,OAAP,GAAiBJ,QAAjB,EAA2B;;AAE3BC,MAAM,CAACI,MAAP,GAAgBJ,MAAM,CAACE,MAAvB;AACA,IAAIG,GAAG,GAAGL,MAAV;eAEeK;;;;;;;;;;AC1hIf;;;;AAEA,IAAMC,cAAc,GAAGriB,QAAQ,CAACsiB,aAAT,CAAuB,UAAvB,CAAvB;;AAEA,IAAM9e,OAAO,GAAG,SAAVA,OAAU,GAAM;AACpB,MAAMnC,CAAC,GAAG,wBAAU,IAAIqE,IAAJ,EAAV,EAAsB,eAAtB,CAAV;AACA,SAAOrE,CAAC,CAAC2G,MAAF,CAAS,yCAAT,CAAP;AACD,CAHD;;AAKA,IAAMua,OAAO,GAAG,SAAVA,OAAU,GAAM;AACpBF,EAAAA,cAAc,CAACG,SAAf,kCAAiDhf,OAAO,EAAxD;AACD,CAFD;;AAIA,IAAMif,KAAK,GAAG,SAARA,KAAQ,GAAM;AAClB,MAAIJ,cAAJ,EACA;AACEE,IAAAA,OAAO;AACPG,IAAAA,WAAW,CAACH,OAAD,EAAU,IAAV,CAAX;AACD;AACF,CAND;;eAQeE;;;;;;;;;ACrBf,IAAME,MAAM,GAAG3iB,QAAQ,CAAC4iB,cAAT,CAAwB,aAAxB,CAAf;AACA,IAAMC,MAAM,GAAGF,MAAH,aAAGA,MAAH,uBAAGA,MAAM,CAAEL,aAAR,CAAsB,UAAtB,CAAf;AAEA,IAAMQ,UAAU,GAAG,IAAIpd,IAAJ,CAAS,kEAAT,CAAnB;;AAGA,SAASqd,cAAT,GAA0B;AACxB,MAAMC,UAAU,GAAG,CAAC,IAAItd,IAAJ,CAASod,UAAT,CAAD,GAAwB,CAAC,IAAIpd,IAAJ,EAA5C;AACA,MAAIud,SAAS,GAAG,EAAhB;;AAEA,MAAID,UAAU,GAAG,CAAjB,EAAoB;AAClB,QAAME,KAAK,GAAG;AACZrU,MAAAA,IAAI,EAAE3K,IAAI,CAAC8K,KAAL,CAAWgU,UAAU,IAAI,OAAO,EAAP,GAAY,EAAZ,GAAiB,EAArB,CAArB,CADM;AAEZnL,MAAAA,KAAK,EAAE3T,IAAI,CAAC8K,KAAL,CAAYgU,UAAU,IAAI,OAAO,EAAP,GAAY,EAAhB,CAAX,GAAkC,EAA7C,CAFK;AAGZpL,MAAAA,OAAO,EAAE1T,IAAI,CAAC8K,KAAL,CAAYgU,UAAU,GAAG,IAAb,GAAoB,EAArB,GAA2B,EAAtC,CAHG;AAIZjY,MAAAA,OAAO,EAAE7G,IAAI,CAAC8K,KAAL,CAAYgU,UAAU,GAAG,IAAd,GAAsB,EAAjC;AAJG,KAAd;AAOAC,IAAAA,SAAS,GAAG3hB,MAAM,CAAC+F,IAAP,CAAY6b,KAAZ,EACTC,GADS,CACL,UAACC,IAAD,EAAU;AACb,UAAI,CAACF,KAAK,CAACE,IAAD,CAAV,EAAkB;AAClB,uBAAUF,KAAK,CAACE,IAAD,CAAf,cAAyBA,IAAzB;AACD,KAJS,EAKT7gB,IALS,CAKJ,GALI,CAAZ;AAOEsgB,IAAAA,MAAM,CAACQ,SAAP,GAAmBJ,SAAnB;AACH,GAhBD,MAgBO;AACHN,IAAAA,MAAM,CAACL,aAAP,CAAqB,IAArB,EAA2BE,SAA3B;AACH;AACF;;eAEcO;;;;;AC/Bf;;AACA;;AACA;;;;AAEA,IAAMO,GAAG,GAAG,SAANA,GAAM,GAAM;AAChB;AACA;AAEA;AACAZ,EAAAA,WAAW,CAACK,kBAAD,EAAiB,IAAjB,CAAX;AACD,CAND;;AAQAO,GAAG;;;ACZH,IAAIC,UAAU,GAAG,4BAAjB;AAEA,IAAIC,SAAS,GAAG3iB,MAAM,CAAC4iB,MAAP,CAAcC,MAA9B;;AAEA,SAASA,MAAT,CAAgBC,UAAhB,EAA4B;AAC1BH,EAAAA,SAAS,CAAC/hB,IAAV,CAAe,IAAf,EAAqBkiB,UAArB;AACA,OAAKC,GAAL,GAAW;AACTzc,IAAAA,IAAI,EAAEtG,MAAM,CAAC4iB,MAAP,CAAcI,OADX;AAETC,IAAAA,gBAAgB,EAAE,EAFT;AAGTC,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,MAAM,EAAE,UAAUpjB,EAAV,EAAc;AACpB,WAAKkjB,gBAAL,CAAsB1N,IAAtB,CAA2BxV,EAAE,IAAI,YAAY,CAAE,CAA/C;AACD,KANQ;AAOTqjB,IAAAA,OAAO,EAAE,UAAUrjB,EAAV,EAAc;AACrB,WAAKmjB,iBAAL,CAAuB3N,IAAvB,CAA4BxV,EAA5B;AACD;AATQ,GAAX;AAYAC,EAAAA,MAAM,CAAC4iB,MAAP,CAAcI,OAAd,GAAwB,IAAxB;AACD;;AAEDhjB,MAAM,CAAC4iB,MAAP,CAAcC,MAAd,GAAuBA,MAAvB;AACA,IAAIQ,aAAJ,EAAmBC,cAAnB;AAEA,IAAIC,MAAM,GAAGvjB,MAAM,CAAC4iB,MAAP,CAAcW,MAA3B;;AACA,IAAI,CAAC,CAACA,MAAD,IAAW,CAACA,MAAM,CAACC,eAApB,KAAwC,OAAOC,SAAP,KAAqB,WAAjE,EAA8E;AAC5E,MAAIC,QAAQ,GAAG,MAA4BC,QAAQ,CAACD,QAApD;AACA,MAAIE,QAAQ,GAAGD,QAAQ,CAACC,QAAT,KAAsB,QAAtB,GAAiC,KAAjC,GAAyC,IAAxD;AACA,MAAIC,EAAE,GAAG,IAAIJ,SAAJ,CAAcG,QAAQ,GAAG,KAAX,GAAmBF,QAAnB,GAA8B,GAA9B,aAA2D,GAAzE,CAAT;;AACAG,EAAAA,EAAE,CAACC,SAAH,GAAe,UAASC,KAAT,EAAgB;AAC7BV,IAAAA,aAAa,GAAG,EAAhB;AACAC,IAAAA,cAAc,GAAG,EAAjB;AAEA,QAAIhd,IAAI,GAAG0d,IAAI,CAAC5X,KAAL,CAAW2X,KAAK,CAACzd,IAAjB,CAAX;;AAEA,QAAIA,IAAI,CAAC2d,IAAL,KAAc,QAAlB,EAA4B;AAC1B,UAAIC,OAAO,GAAG,KAAd;AACA5d,MAAAA,IAAI,CAAC6d,MAAL,CAAY3kB,OAAZ,CAAoB,UAAS4kB,KAAT,EAAgB;AAClC,YAAI,CAACA,KAAK,CAACC,KAAX,EAAkB;AAChB,cAAIC,SAAS,GAAGC,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBL,KAAK,CAAC1b,EAA7B,CAA9B;;AACA,cAAI4b,SAAJ,EAAe;AACbJ,YAAAA,OAAO,GAAG,IAAV;AACD;AACF;AACF,OAPD,EAF0B,CAW1B;;AACAA,MAAAA,OAAO,GAAGA,OAAO,IAAI5d,IAAI,CAAC6d,MAAL,CAAY/L,KAAZ,CAAkB,UAASgM,KAAT,EAAgB;AACrD,eAAOA,KAAK,CAACH,IAAN,KAAe,KAAf,IAAwBG,KAAK,CAACM,SAAN,CAAgBC,EAA/C;AACD,OAFoB,CAArB;;AAIA,UAAIT,OAAJ,EAAa;AACX1e,QAAAA,OAAO,CAACof,KAAR;AAEAte,QAAAA,IAAI,CAAC6d,MAAL,CAAY3kB,OAAZ,CAAoB,UAAU4kB,KAAV,EAAiB;AACnCS,UAAAA,QAAQ,CAACL,MAAM,CAACC,aAAR,EAAuBL,KAAvB,CAAR;AACD,SAFD;AAIAd,QAAAA,cAAc,CAAC9jB,OAAf,CAAuB,UAAUslB,CAAV,EAAa;AAClCC,UAAAA,YAAY,CAACD,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,CAAZ;AACD,SAFD;AAGD,OAVD,MAUO,IAAInB,QAAQ,CAACqB,MAAb,EAAqB;AAAE;AAC5BrB,QAAAA,QAAQ,CAACqB,MAAT;AACD;AACF;;AAED,QAAI1e,IAAI,CAAC2d,IAAL,KAAc,QAAlB,EAA4B;AAC1BJ,MAAAA,EAAE,CAACoB,KAAH;;AACApB,MAAAA,EAAE,CAACqB,OAAH,GAAa,YAAY;AACvBvB,QAAAA,QAAQ,CAACqB,MAAT;AACD,OAFD;AAGD;;AAED,QAAI1e,IAAI,CAAC2d,IAAL,KAAc,gBAAlB,EAAoC;AAClCze,MAAAA,OAAO,CAAC2V,GAAR,CAAY,2BAAZ;AAEAgK,MAAAA,kBAAkB;AACnB;;AAED,QAAI7e,IAAI,CAAC2d,IAAL,KAAc,OAAlB,EAA2B;AACzBze,MAAAA,OAAO,CAAC4f,KAAR,CAAc,kBAAkB9e,IAAI,CAAC8e,KAAL,CAAWC,OAA7B,GAAuC,IAAvC,GAA8C/e,IAAI,CAAC8e,KAAL,CAAWE,KAAvE;AAEAH,MAAAA,kBAAkB;AAElB,UAAII,OAAO,GAAGC,kBAAkB,CAAClf,IAAD,CAAhC;AACAnH,MAAAA,QAAQ,CAACsmB,IAAT,CAAcC,WAAd,CAA0BH,OAA1B;AACD;AACF,GA1DD;AA2DD;;AAED,SAASJ,kBAAT,GAA8B;AAC5B,MAAII,OAAO,GAAGpmB,QAAQ,CAAC4iB,cAAT,CAAwBW,UAAxB,CAAd;;AACA,MAAI6C,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAAC5lB,MAAR;AACD;AACF;;AAED,SAAS6lB,kBAAT,CAA4Blf,IAA5B,EAAkC;AAChC,MAAIif,OAAO,GAAGpmB,QAAQ,CAACwmB,aAAT,CAAuB,KAAvB,CAAd;AACAJ,EAAAA,OAAO,CAAC7c,EAAR,GAAaga,UAAb,CAFgC,CAIhC;;AACA,MAAI2C,OAAO,GAAGlmB,QAAQ,CAACwmB,aAAT,CAAuB,KAAvB,CAAd;AACA,MAAIC,UAAU,GAAGzmB,QAAQ,CAACwmB,aAAT,CAAuB,KAAvB,CAAjB;AACAN,EAAAA,OAAO,CAAC7C,SAAR,GAAoBlc,IAAI,CAAC8e,KAAL,CAAWC,OAA/B;AACAO,EAAAA,UAAU,CAACpD,SAAX,GAAuBlc,IAAI,CAAC8e,KAAL,CAAWE,KAAlC;AAEAC,EAAAA,OAAO,CAAC5D,SAAR,GACE,2NACE,mFADF,GAEE,yEAFF,GAGE,qEAHF,GAG0E0D,OAAO,CAAC1D,SAHlF,GAG8F,QAH9F,GAIE,OAJF,GAIYiE,UAAU,CAACjE,SAJvB,GAImC,QAJnC,GAKA,QANF;AASA,SAAO4D,OAAP;AAED;;AAED,SAASM,UAAT,CAAoBjD,MAApB,EAA4Bla,EAA5B,EAAgC;AAC9B,MAAIod,OAAO,GAAGlD,MAAM,CAACkD,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AAED,MAAIC,OAAO,GAAG,EAAd;AACA,MAAI9jB,CAAJ,EAAOzB,CAAP,EAAUwlB,GAAV;;AAEA,OAAK/jB,CAAL,IAAU6jB,OAAV,EAAmB;AACjB,SAAKtlB,CAAL,IAAUslB,OAAO,CAAC7jB,CAAD,CAAP,CAAW,CAAX,CAAV,EAAyB;AACvB+jB,MAAAA,GAAG,GAAGF,OAAO,CAAC7jB,CAAD,CAAP,CAAW,CAAX,EAAczB,CAAd,CAAN;;AACA,UAAIwlB,GAAG,KAAKtd,EAAR,IAAejH,KAAK,CAACV,OAAN,CAAcilB,GAAd,KAAsBA,GAAG,CAACA,GAAG,CAAC1kB,MAAJ,GAAa,CAAd,CAAH,KAAwBoH,EAAjE,EAAsE;AACpEqd,QAAAA,OAAO,CAACxQ,IAAR,CAAatT,CAAb;AACD;AACF;AACF;;AAED,MAAI2gB,MAAM,CAACW,MAAX,EAAmB;AACjBwC,IAAAA,OAAO,GAAGA,OAAO,CAACviB,MAAR,CAAeqiB,UAAU,CAACjD,MAAM,CAACW,MAAR,EAAgB7a,EAAhB,CAAzB,CAAV;AACD;;AAED,SAAOqd,OAAP;AACD;;AAED,SAASlB,QAAT,CAAkBjC,MAAlB,EAA0BwB,KAA1B,EAAiC;AAC/B,MAAI0B,OAAO,GAAGlD,MAAM,CAACkD,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAIA,OAAO,CAAC1B,KAAK,CAAC1b,EAAP,CAAP,IAAqB,CAACka,MAAM,CAACW,MAAjC,EAAyC;AACvC,QAAIxjB,EAAE,GAAG,IAAIkmB,QAAJ,CAAa,SAAb,EAAwB,QAAxB,EAAkC,SAAlC,EAA6C7B,KAAK,CAACM,SAAN,CAAgBC,EAA7D,CAAT;AACAP,IAAAA,KAAK,CAACC,KAAN,GAAc,CAACyB,OAAO,CAAC1B,KAAK,CAAC1b,EAAP,CAAtB;AACAod,IAAAA,OAAO,CAAC1B,KAAK,CAAC1b,EAAP,CAAP,GAAoB,CAAC3I,EAAD,EAAKqkB,KAAK,CAAC8B,IAAX,CAApB;AACD,GAJD,MAIO,IAAItD,MAAM,CAACW,MAAX,EAAmB;AACxBsB,IAAAA,QAAQ,CAACjC,MAAM,CAACW,MAAR,EAAgBa,KAAhB,CAAR;AACD;AACF;;AAED,SAASG,cAAT,CAAwB3B,MAAxB,EAAgCla,EAAhC,EAAoC;AAClC,MAAIod,OAAO,GAAGlD,MAAM,CAACkD,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAI,CAACA,OAAO,CAACpd,EAAD,CAAR,IAAgBka,MAAM,CAACW,MAA3B,EAAmC;AACjC,WAAOgB,cAAc,CAAC3B,MAAM,CAACW,MAAR,EAAgB7a,EAAhB,CAArB;AACD;;AAED,MAAI2a,aAAa,CAAC3a,EAAD,CAAjB,EAAuB;AACrB;AACD;;AACD2a,EAAAA,aAAa,CAAC3a,EAAD,CAAb,GAAoB,IAApB;AAEA,MAAIyd,MAAM,GAAGvD,MAAM,CAACwD,KAAP,CAAa1d,EAAb,CAAb;AAEA4a,EAAAA,cAAc,CAAC/N,IAAf,CAAoB,CAACqN,MAAD,EAASla,EAAT,CAApB;;AAEA,MAAIyd,MAAM,IAAIA,MAAM,CAACpD,GAAjB,IAAwBoD,MAAM,CAACpD,GAAP,CAAWE,gBAAX,CAA4B3hB,MAAxD,EAAgE;AAC9D,WAAO,IAAP;AACD;;AAED,SAAOukB,UAAU,CAACrB,MAAM,CAACC,aAAR,EAAuB/b,EAAvB,CAAV,CAAqC2d,IAArC,CAA0C,UAAU3d,EAAV,EAAc;AAC7D,WAAO6b,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuB/b,EAAvB,CAArB;AACD,GAFM,CAAP;AAGD;;AAED,SAASqc,YAAT,CAAsBnC,MAAtB,EAA8Bla,EAA9B,EAAkC;AAChC,MAAIyd,MAAM,GAAGvD,MAAM,CAACwD,KAAP,CAAa1d,EAAb,CAAb;AACAka,EAAAA,MAAM,CAACI,OAAP,GAAiB,EAAjB;;AACA,MAAImD,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAACpD,GAAP,CAAWzc,IAAX,GAAkBsc,MAAM,CAACI,OAAzB;AACD;;AAED,MAAImD,MAAM,IAAIA,MAAM,CAACpD,GAAjB,IAAwBoD,MAAM,CAACpD,GAAP,CAAWG,iBAAX,CAA6B5hB,MAAzD,EAAiE;AAC/D6kB,IAAAA,MAAM,CAACpD,GAAP,CAAWG,iBAAX,CAA6B1jB,OAA7B,CAAqC,UAAU8mB,EAAV,EAAc;AACjDA,MAAAA,EAAE,CAAC1D,MAAM,CAACI,OAAR,CAAF;AACD,KAFD;AAGD;;AAED,SAAOJ,MAAM,CAACwD,KAAP,CAAa1d,EAAb,CAAP;AACAka,EAAAA,MAAM,CAACla,EAAD,CAAN;AAEAyd,EAAAA,MAAM,GAAGvD,MAAM,CAACwD,KAAP,CAAa1d,EAAb,CAAT;;AACA,MAAIyd,MAAM,IAAIA,MAAM,CAACpD,GAAjB,IAAwBoD,MAAM,CAACpD,GAAP,CAAWE,gBAAX,CAA4B3hB,MAAxD,EAAgE;AAC9D6kB,IAAAA,MAAM,CAACpD,GAAP,CAAWE,gBAAX,CAA4BzjB,OAA5B,CAAoC,UAAU8mB,EAAV,EAAc;AAChDA,MAAAA,EAAE;AACH,KAFD;;AAGA,WAAO,IAAP;AACD;AACF","file":"index.js","sourceRoot":"../../src","sourcesContent":["export default () => {\n if (window && document) {\n const sideTitles = document.querySelectorAll('.side-title');\n\n const handleScroll = function handleScroll() {\n if (window.scrollY > 100) {\n sideTitles.forEach((title) => title.classList.remove('hidden'));\n } else {\n sideTitles.forEach((title) => title.classList.add('hidden'));\n }\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n }\n};\n","/* spencermountain/spacetime 6.6.3 Apache 2.0 */\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar fns = createCommonjsModule(function (module, exports) {\n //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html\n exports.isLeapYear = function (year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }; // unsurprisingly-nasty `typeof date` call\n\n\n exports.isDate = function (d) {\n return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf());\n };\n\n exports.isArray = function (input) {\n return Object.prototype.toString.call(input) === '[object Array]';\n };\n\n exports.isObject = function (input) {\n return Object.prototype.toString.call(input) === '[object Object]';\n };\n\n exports.zeroPad = function (str) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var pad = '0';\n str = str + '';\n return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str;\n };\n\n exports.titleCase = function (str) {\n if (!str) {\n return '';\n }\n\n return str[0].toUpperCase() + str.substr(1);\n };\n\n exports.ordinal = function (i) {\n var j = i % 10;\n var k = i % 100;\n\n if (j === 1 && k !== 11) {\n return i + 'st';\n }\n\n if (j === 2 && k !== 12) {\n return i + 'nd';\n }\n\n if (j === 3 && k !== 13) {\n return i + 'rd';\n }\n\n return i + 'th';\n }; //strip 'st' off '1st'..\n\n\n exports.toCardinal = function (str) {\n str = String(str);\n str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1');\n return parseInt(str, 10);\n }; //used mostly for cleanup of unit names, like 'months'\n\n\n exports.normalize = function () {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n str = str.toLowerCase().trim();\n str = str.replace(/ies$/, 'y'); //'centuries'\n\n str = str.replace(/s$/, '');\n str = str.replace(/-/g, '');\n\n if (str === 'day') {\n return 'date';\n }\n\n return str;\n };\n\n exports.getEpoch = function (tmp) {\n //support epoch\n if (typeof tmp === 'number') {\n return tmp;\n } //suport date objects\n\n\n if (exports.isDate(tmp)) {\n return tmp.getTime();\n }\n\n if (tmp.epoch) {\n return tmp.epoch;\n }\n\n return null;\n }; //make sure this input is a spacetime obj\n\n\n exports.beADate = function (d, s) {\n if (exports.isObject(d) === false) {\n return s.clone().set(d);\n }\n\n return d;\n };\n\n exports.formatTimezone = function (offset) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var absOffset = Math.abs(offset);\n var sign = offset > 0 ? '+' : '-';\n return \"\".concat(sign).concat(exports.zeroPad(absOffset)).concat(delimiter, \"00\");\n };\n});\nvar fns_1 = fns.isLeapYear;\nvar fns_2 = fns.isDate;\nvar fns_3 = fns.isArray;\nvar fns_4 = fns.isObject;\nvar fns_5 = fns.zeroPad;\nvar fns_6 = fns.titleCase;\nvar fns_7 = fns.ordinal;\nvar fns_8 = fns.toCardinal;\nvar fns_9 = fns.normalize;\nvar fns_10 = fns.getEpoch;\nvar fns_11 = fns.beADate;\nvar fns_12 = fns.formatTimezone;\n\nvar zeroPad = fns.zeroPad;\n\nvar serialize = function serialize(d) {\n return zeroPad(d.getMonth() + 1) + '/' + zeroPad(d.getDate()) + ':' + zeroPad(d.getHours());\n}; // a timezone will begin with a specific offset in january\n// then some will switch to something else between november-march\n\n\nvar shouldChange = function shouldChange(epoch, start, end, defaultOffset) {\n //note: this has a cray order-of-operations issue\n //we can't get the date, without knowing the timezone, and vice-versa\n //it's possible that we can miss a dst-change by a few hours.\n var d = new Date(epoch); //(try to mediate this a little?)\n\n var bias = d.getTimezoneOffset() || 0;\n var shift = bias + defaultOffset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n\n d = new Date(epoch + shift);\n var current = serialize(d); //eg. is it after ~november?\n\n if (current >= start) {\n //eg. is it before ~march~ too?\n if (current < end) {\n return true;\n }\n }\n\n return false;\n};\n\nvar summerTime = shouldChange;\n\n// it reproduces some things in ./index.js, but speeds up spacetime considerably\n\nvar quickOffset = function quickOffset(s) {\n var zones = s.timezones;\n var obj = zones[s.tz];\n\n if (obj === undefined) {\n console.warn(\"Warning: couldn't find timezone \" + s.tz);\n return 0;\n }\n\n if (obj.dst === undefined) {\n return obj.offset;\n } //get our two possible offsets\n\n\n var jul = obj.offset;\n var dec = obj.offset + 1; // assume it's the same for now\n\n if (obj.hem === 'n') {\n dec = jul - 1;\n }\n\n var split = obj.dst.split('->');\n var inSummer = summerTime(s.epoch, split[0], split[1], jul);\n\n if (inSummer === true) {\n return jul;\n }\n\n return dec;\n};\n\nvar quick = quickOffset;\n\nvar _build = {\n\t\"9|s\": \"2/dili,2/jayapura\",\n\t\"9|n\": \"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau\",\n\t\"9.5|s|04/05:03->10/04:02\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n\t\"9.5|s\": \"4/darwin,4/north\",\n\t\"8|s\": \"12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west\",\n\t\"8|n|03/25:03->09/29:23\": \"2/ulan_bator\",\n\t\"8|n\": \"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar\",\n\t\"8.75|s\": \"4/eucla\",\n\t\"7|s\": \"12/davis,2/jakarta,9/christmas\",\n\t\"7|n\": \"2/bangkok,2/barnaul,2/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane\",\n\t\"6|s\": \"12/vostok\",\n\t\"6|n\": \"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos\",\n\t\"6.5|n\": \"2/rangoon,2/yangon,9/cocos\",\n\t\"5|s\": \"12/mawson,9/kerguelen\",\n\t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives\",\n\t\"5.75|n\": \"2/kathmandu,2/katmandu\",\n\t\"5.5|n\": \"2/calcutta,2/colombo,2/kolkata\",\n\t\"4|s\": \"9/reunion\",\n\t\"4|n\": \"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius\",\n\t\"4.5|n|03/21:00->09/20:24\": \"2/tehran\",\n\t\"4.5|n\": \"2/kabul\",\n\t\"3|s\": \"12/syowa,9/antananarivo\",\n\t\"3|n|03/29:03->10/25:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye\",\n\t\"3|n|03/29:02->10/25:03\": \"8/chisinau,8/tiraspol\",\n\t\"3|n|03/29:00->10/24:24\": \"2/beirut\",\n\t\"3|n|03/27:02->10/25:02\": \"2/jerusalem,2/tel_aviv\",\n\t\"3|n|03/27:00->10/31:01\": \"2/gaza,2/hebron\",\n\t\"3|n|03/27:00->10/30:01\": \"2/amman\",\n\t\"3|n|03/27:00->10/29:24\": \"2/damascus\",\n\t\"3|n\": \"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte\",\n\t\"2|s|03/29:02->10/25:02\": \"12/troll\",\n\t\"2|s\": \"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\n\t\"2|n|03/29:02->10/25:03\": \"0/ceuta,arctic/longyearbyen,3/jan_mayen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich\",\n\t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n\t\"1|s|04/02:01->09/03:03\": \"0/windhoek\",\n\t\"1|s\": \"0/kinshasa,0/luanda\",\n\t\"1|n|04/19:03->05/31:02\": \"0/casablanca,0/el_aaiun\",\n\t\"1|n|03/29:01->10/25:02\": \"3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london\",\n\t\"1|n\": \"0/algiers,0/bangui,0/brazzaville,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\n\t\"14|n\": \"11/kiritimati\",\n\t\"13|s|04/05:04->09/27:03\": \"11/apia\",\n\t\"13|s|01/15:02->11/05:03\": \"11/tongatapu\",\n\t\"13|n\": \"11/enderbury,11/fakaofo\",\n\t\"12|s|04/05:03->09/27:02\": \"12/mcmurdo,12/south_pole,11/auckland\",\n\t\"12|s|01/12:03->11/08:02\": \"11/fiji\",\n\t\"12|n\": \"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis\",\n\t\"12.75|s|04/05:03->04/05:02\": \"11/chatham\",\n\t\"11|s\": \"12/macquarie,11/bougainville\",\n\t\"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape\",\n\t\"11.5|n|04/05:03->10/04:02\": \"11/norfolk\",\n\t\"10|s|04/05:03->10/04:02\": \"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria\",\n\t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,4/queensland\",\n\t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap\",\n\t\"10.5|s|04/05:01->10/04:02\": \"4/lhi,4/lord_howe\",\n\t\"0|n|03/29:00->10/25:01\": \"1/scoresbysund,3/azores\",\n\t\"0|n\": \"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu\",\n\t\"-9|n|03/08:02->11/01:02\": \"1/adak,1/atka\",\n\t\"-9|n\": \"11/gambier\",\n\t\"-9.5|n\": \"11/marquesas\",\n\t\"-8|n|03/08:02->11/01:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat\",\n\t\"-8|n\": \"11/pitcairn\",\n\t\"-7|n|03/08:02->11/01:02\": \"1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte\",\n\t\"-7|n\": \"1/creston,1/dawson_creek,1/hermosillo,1/phoenix\",\n\t\"-6|s|04/04:22->09/05:22\": \"7/easterisland,11/easter\",\n\t\"-6|n|04/05:02->10/25:02\": \"1/chihuahua,1/mazatlan,10/bajasur\",\n\t\"-6|n|03/08:02->11/01:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain\",\n\t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos\",\n\t\"-5|s\": \"1/lima,1/rio_branco,5/acre\",\n\t\"-5|n|04/05:02->10/25:02\": \"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general\",\n\t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n\t\"-5|n|03/08:02->11/01:02\": \"1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central\",\n\t\"-5|n\": \"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre\",\n\t\"-4|s|05/13:23->08/13:01\": \"12/palmer\",\n\t\"-4|s|04/04:24->09/06:00\": \"1/santiago,7/continental\",\n\t\"-4|s|03/21:24->10/04:00\": \"1/asuncion\",\n\t\"-4|s|02/16:24->11/03:00\": \"1/campo_grande,1/cuiaba\",\n\t\"-4|s\": \"1/la_paz,1/manaus,5/west\",\n\t\"-4|n|03/12:03->11/05:01\": \"1/indiana,1/kentucky\",\n\t\"-4|n|03/08:02->11/01:02\": \"1/detroit,1/fort_wayne,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,6/eastern\",\n\t\"-4|n|03/08:00->11/01:01\": \"1/havana\",\n\t\"-4|n\": \"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\n\t\"-3|s\": \"1/argentina,1/buenos_aires,1/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east\",\n\t\"-3|n|03/08:02->11/01:02\": \"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\n\t\"-3|n\": \"1/araguaina,1/bahia,1/belem,1/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem\",\n\t\"-2|s\": \"5/denoronha\",\n\t\"-2|n|03/28:22->10/24:23\": \"1/godthab\",\n\t\"-2|n|03/08:02->11/01:02\": \"1/miquelon\",\n\t\"-2|n\": \"1/noronha,3/south_georgia\",\n\t\"-2.5|n|03/08:02->11/01:02\": \"1/st_johns,6/newfoundland\",\n\t\"-1|n\": \"3/cape_verde\",\n\t\"-11|n\": \"11/midway,11/niue,11/pago_pago,11/samoa\",\n\t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti\"\n};\n\nvar _build$1 = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\t'default': _build\n});\n\n//prefixes for iana names..\nvar _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc'];\n\nvar data = getCjsExportFromNamespace(_build$1);\n\nvar all = {};\nObject.keys(data).forEach(function (k) {\n var split = k.split('|');\n var obj = {\n offset: Number(split[0]),\n hem: split[1]\n };\n\n if (split[2]) {\n obj.dst = split[2];\n }\n\n var names = data[k].split(',');\n names.forEach(function (str) {\n str = str.replace(/(^[0-9]+)\\//, function (before, num) {\n num = Number(num);\n return _prefixes[num] + '/';\n });\n all[str] = obj;\n });\n});\nall['utc'] = {\n offset: 0,\n hem: 'n' //(sorry)\n\n}; //add etc/gmt+n\n\nfor (var i = -14; i <= 14; i += 0.5) {\n var num = i;\n\n if (num > 0) {\n num = '+' + num;\n }\n\n var name = 'etc/gmt' + num;\n all[name] = {\n offset: i * -1,\n //they're negative!\n hem: 'n' //(sorry)\n\n };\n name = 'utc/gmt' + num; //this one too, why not.\n\n all[name] = {\n offset: i * -1,\n hem: 'n'\n };\n} // console.log(all)\n// console.log(Object.keys(all).length)\n\n\nvar unpack = all;\n\n//find the implicit iana code for this machine.\n//safely query the Intl object\n//based on - https://bitbucket.org/pellepim/jstimezonedetect/src\nvar fallbackTZ = 'utc'; //\n//this Intl object is not supported often, yet\n\nvar safeIntl = function safeIntl() {\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return null;\n }\n\n var format = Intl.DateTimeFormat();\n\n if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n return null;\n }\n\n var timezone = format.resolvedOptions().timeZone;\n\n if (!timezone) {\n return null;\n }\n\n return timezone.toLowerCase();\n};\n\nvar guessTz = function guessTz() {\n var timezone = safeIntl();\n\n if (timezone === null) {\n return fallbackTZ;\n }\n\n return timezone;\n}; //do it once per computer\n\n\nvar guessTz_1 = guessTz;\n\nvar isOffset = /(\\-?[0-9]+)h(rs)?/i;\nvar isNumber = /(\\-?[0-9]+)/;\nvar utcOffset = /utc([\\-+]?[0-9]+)/i;\nvar gmtOffset = /gmt([\\-+]?[0-9]+)/i;\n\nvar toIana = function toIana(num) {\n num = Number(num);\n\n if (num > -13 && num < 13) {\n num = num * -1; //it's opposite!\n\n num = (num > 0 ? '+' : '') + num; //add plus sign\n\n return 'etc/gmt' + num;\n }\n\n return null;\n};\n\nvar parseOffset = function parseOffset(tz) {\n // '+5hrs'\n var m = tz.match(isOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'utc+5'\n\n\n m = tz.match(utcOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'GMT-5' (not opposite)\n\n\n m = tz.match(gmtOffset);\n\n if (m !== null) {\n var num = Number(m[1]) * -1;\n return toIana(num);\n } // '+5'\n\n\n m = tz.match(isNumber);\n\n if (m !== null) {\n return toIana(m[1]);\n }\n\n return null;\n};\n\nvar parseOffset_1 = parseOffset;\n\nvar local = guessTz_1(); //add all the city names by themselves\n\nvar cities = Object.keys(unpack).reduce(function (h, k) {\n var city = k.split('/')[1] || '';\n city = city.replace(/_/g, ' ');\n h[city] = k;\n return h;\n}, {}); //try to match these against iana form\n\nvar normalize = function normalize(tz) {\n tz = tz.replace(/ time/g, '');\n tz = tz.replace(/ (standard|daylight|summer)/g, '');\n tz = tz.replace(/\\b(east|west|north|south)ern/g, '$1');\n tz = tz.replace(/\\b(africa|america|australia)n/g, '$1');\n tz = tz.replace(/\\beuropean/g, 'europe');\n tz = tz.replace(/\\islands/g, 'island');\n return tz;\n}; // try our best to reconcile the timzone to this given string\n\n\nvar lookupTz = function lookupTz(str, zones) {\n if (!str) {\n return local;\n }\n\n var tz = str.trim();\n var split = str.split('/'); //support long timezones like 'America/Argentina/Rio_Gallegos'\n\n if (split.length > 2 && zones.hasOwnProperty(tz) === false) {\n tz = split[0] + '/' + split[1];\n }\n\n tz = tz.toLowerCase();\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //lookup more loosely..\n\n\n tz = normalize(tz);\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //try city-names\n\n\n if (cities.hasOwnProperty(tz) === true) {\n return cities[tz];\n } // //try to parse '-5h'\n\n\n if (/[0-9]/.test(tz) === true) {\n var id = parseOffset_1(tz);\n\n if (id) {\n return id;\n }\n }\n\n throw new Error(\"Spacetime: Cannot find timezone named: '\" + str + \"'. Please enter an IANA timezone id.\");\n};\n\nvar find = lookupTz;\n\nvar o = {\n millisecond: 1\n};\no.second = 1000;\no.minute = 60000;\no.hour = 3.6e6; // dst is supported post-hoc\n\no.day = 8.64e7; //\n\no.date = o.day;\no.month = 8.64e7 * 29.5; //(average)\n\no.week = 6.048e8;\no.year = 3.154e10; // leap-years are supported post-hoc\n//add plurals\n\nObject.keys(o).forEach(function (k) {\n o[k + 's'] = o[k];\n});\nvar milliseconds = o;\n\nvar walk = function walk(s, n, fn, unit, previous) {\n var current = s.d[fn]();\n\n if (current === n) {\n return; //already there\n }\n\n var startUnit = previous === null ? null : s.d[previous]();\n var original = s.epoch; //try to get it as close as we can\n\n var diff = n - current;\n s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative\n // console.log(unit, diff)\n\n if (unit === 'day') {\n // s.epoch -= ms.minute\n //but don't push it over a month\n if (Math.abs(diff) > 28 && n < 28) {\n s.epoch += milliseconds.hour;\n }\n } // 1st time: oops, did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...?\n } //repair it if we've gone too far or something\n //(go by half-steps, just in case)\n\n\n var halfStep = milliseconds[unit] / 2;\n\n while (s.d[fn]() < n) {\n s.epoch += halfStep;\n }\n\n while (s.d[fn]() > n) {\n s.epoch -= halfStep;\n } // 2nd time: did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original;\n }\n}; //find the desired date by a increment/check while loop\n\n\nvar units = {\n year: {\n valid: function valid(n) {\n return n > -4000 && n < 4000;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getFullYear', 'year', null);\n }\n },\n month: {\n valid: function valid(n) {\n return n >= 0 && n <= 11;\n },\n walkTo: function walkTo(s, n) {\n var d = s.d;\n var current = d.getMonth();\n var original = s.epoch;\n var startUnit = d.getFullYear();\n\n if (current === n) {\n return;\n } //try to get it as close as we can..\n\n\n var diff = n - current;\n s.epoch += milliseconds.day * (diff * 28); //special case\n //oops, did we change the year? revert it.\n\n if (startUnit !== s.d.getFullYear()) {\n s.epoch = original;\n } //incriment by day\n\n\n while (s.d.getMonth() < n) {\n s.epoch += milliseconds.day;\n }\n\n while (s.d.getMonth() > n) {\n s.epoch -= milliseconds.day;\n }\n }\n },\n date: {\n valid: function valid(n) {\n return n > 0 && n <= 31;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getDate', 'day', 'getMonth');\n }\n },\n hour: {\n valid: function valid(n) {\n return n >= 0 && n < 24;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getHours', 'hour', 'getDate');\n }\n },\n minute: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getMinutes', 'minute', 'getHours');\n }\n },\n second: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.seconds(n).epoch;\n }\n },\n millisecond: {\n valid: function valid(n) {\n return n >= 0 && n < 1000;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.milliseconds(n).epoch;\n }\n }\n};\n\nvar walkTo = function walkTo(s, wants) {\n var keys = Object.keys(units);\n var old = s.clone();\n\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n var n = wants[k];\n\n if (n === undefined) {\n n = old[k]();\n }\n\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n } //make-sure it's valid\n\n\n if (!units[k].valid(n)) {\n s.epoch = null;\n\n if (s.silent === false) {\n console.warn('invalid ' + k + ': ' + n);\n }\n\n return;\n }\n\n units[k].walkTo(s, n);\n }\n\n return;\n};\n\nvar walk_1 = walkTo;\n\nvar shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec'];\nvar longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\nfunction buildMapping() {\n var obj = {\n sep: 8 //support this format\n\n };\n\n for (var i = 0; i < shortMonths.length; i++) {\n obj[shortMonths[i]] = i;\n }\n\n for (var _i = 0; _i < longMonths.length; _i++) {\n obj[longMonths[_i]] = _i;\n }\n\n return obj;\n}\n\nvar months = {\n \"short\": function short() {\n return shortMonths;\n },\n \"long\": function long() {\n return longMonths;\n },\n mapping: function mapping() {\n return buildMapping();\n },\n set: function set(i18n) {\n shortMonths = i18n[\"short\"] || shortMonths;\n longMonths = i18n[\"long\"] || longMonths;\n }\n};\n\n//pull-apart ISO offsets, like \"+0100\"\nvar parseOffset$1 = function parseOffset(s, offset) {\n if (!offset) {\n return s;\n } //this is a fancy-move\n\n\n if (offset === 'Z') {\n offset = '+0000';\n } // according to ISO8601, tz could be hh:mm, hhmm or hh\n // so need few more steps before the calculation.\n\n\n var num = 0; // for (+-)hh:mm\n\n if (/^[\\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) {\n //support \"+01:00\"\n if (/:00/.test(offset) === true) {\n offset = offset.replace(/:00/, '');\n } //support \"+01:30\"\n\n\n if (/:30/.test(offset) === true) {\n offset = offset.replace(/:30/, '.5');\n }\n } // for (+-)hhmm\n\n\n if (/^[\\+-]?[0-9]{4}$/.test(offset)) {\n offset = offset.replace(/30$/, '.5');\n }\n\n num = parseFloat(offset); //divide by 100 or 10 - , \"+0100\", \"+01\"\n\n if (Math.abs(num) > 100) {\n num = num / 100;\n } //okay, try to match it to a utc timezone\n //remember - this is opposite! a -5 offset maps to Etc/GMT+5 ¯\\_(:/)_/¯\n //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem\n\n\n num *= -1;\n\n if (num >= 0) {\n num = '+' + num;\n }\n\n var tz = 'etc/gmt' + num;\n var zones = s.timezones;\n\n if (zones[tz]) {\n // log a warning if we're over-writing a given timezone?\n // console.log('changing timezone to: ' + tz)\n s.tz = tz;\n }\n\n return s;\n};\n\nvar parseOffset_1$1 = parseOffset$1;\n\nvar parseTime = function parseTime(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n str = str.replace(/^\\s+/, '').toLowerCase(); //trim\n //formal time formats - 04:30.23\n\n var arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\\.]?([0-9]{1,4})?/);\n\n if (arr !== null) {\n //validate it a little\n var h = Number(arr[1]);\n\n if (h < 0 || h > 24) {\n return s.startOf('day');\n }\n\n var m = Number(arr[2]); //don't accept '5:3pm'\n\n if (arr[2].length < 2 || m < 0 || m > 59) {\n return s.startOf('day');\n }\n\n s = s.hour(h);\n s = s.minute(m);\n s = s.seconds(arr[3] || 0);\n s = s.millisecond(arr[4] || 0); //parse-out am/pm\n\n var ampm = str.match(/[\\b0-9](am|pm)\\b/);\n\n if (ampm !== null && ampm[1]) {\n s = s.ampm(ampm[1]);\n }\n\n return s;\n } //try an informal form - 5pm (no minutes)\n\n\n arr = str.match(/([0-9]+) ?(am|pm)/);\n\n if (arr !== null && arr[1]) {\n var _h = Number(arr[1]); //validate it a little..\n\n\n if (_h > 12 || _h < 1) {\n return s.startOf('day');\n }\n\n s = s.hour(arr[1] || 0);\n s = s.ampm(arr[2]);\n s = s.startOf('hour');\n return s;\n } //no time info found, use start-of-day\n\n\n s = s.startOf('day');\n return s;\n};\n\nvar parseTime_1 = parseTime;\n\nvar monthLengths = [31, // January - 31 days\n28, // February - 28 days in a common year and 29 days in leap years\n31, // March - 31 days\n30, // April - 30 days\n31, // May - 31 days\n30, // June - 30 days\n31, // July - 31 days\n31, // August - 31 days\n30, // September - 30 days\n31, // October - 31 days\n30, // November - 30 days\n31 // December - 31 days\n];\nvar monthLengths_1 = monthLengths; // 28 - feb\n\nvar isLeapYear = fns.isLeapYear; //given a month, return whether day number exists in it\n\nvar hasDate = function hasDate(obj) {\n //invalid values\n if (monthLengths_1.hasOwnProperty(obj.month) !== true) {\n return false;\n } //support leap-year in february\n\n\n if (obj.month === 1) {\n if (isLeapYear(obj.year) && obj.date <= 29) {\n return true;\n } else {\n return obj.date <= 28;\n }\n } //is this date too-big for this month?\n\n\n var max = monthLengths_1[obj.month] || 0;\n\n if (obj.date <= max) {\n return true;\n }\n\n return false;\n};\n\nvar hasDate_1 = hasDate;\n\nvar months$1 = months.mapping();\n\nvar parseYear = function parseYear() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var today = arguments.length > 1 ? arguments[1] : undefined;\n var year = parseInt(str.trim(), 10); // use a given year from options.today\n\n if (!year && today) {\n year = today.year;\n } // fallback to this year\n\n\n year = year || new Date().getFullYear();\n return year;\n};\n\nvar strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700\n{\n reg: /^(\\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\\-\\+:]+)?$/,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: arr[3]\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1$1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //iso \"2015-03-25\" or \"2015/03/25\" or \"2015/03/25 12:26:14 PM\"\n{\n reg: /^([0-9]{4})[\\-\\/]([0-9]{1,2})[\\-\\/]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var obj = {\n year: arr[1],\n month: parseInt(arr[2], 10) - 1,\n date: parseInt(arr[3], 10)\n };\n\n if (obj.month >= 12) {\n //support yyyy/dd/mm (weird, but ok)\n obj.date = parseInt(arr[2], 10);\n obj.month = parseInt(arr[3], 10) - 1;\n }\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //mm/dd/yyyy - uk/canada \"6/28/2019, 12:26:14 PM\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([0-9]{1,2})[\\-\\/]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = parseInt(arr[1], 10) - 1;\n var date = parseInt(arr[2], 10); //support dd/mm/yyy\n\n if (s.british || month >= 12) {\n date = parseInt(arr[1], 10);\n month = parseInt(arr[2], 10) - 1;\n }\n\n var year = arr[3] || new Date().getFullYear();\n var obj = {\n year: year,\n month: month,\n date: date\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //common british format - \"25-feb-2015\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([a-z]+)[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[2].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"Mar 25 2015\"\n//February 22, 2017 15:30:00\n{\n reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //February 2017 (implied date)\n{\n reg: /^([a-z]+) ([0-9]{4})$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[1].toLowerCase()];\n var year = parseYear(arr[2], s._today);\n var obj = {\n year: year,\n month: month,\n date: s._today.date || 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"25 Mar 2015\"\n{\n reg: /^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[2].toLowerCase()];\n\n if (!month) {\n return null;\n }\n\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1])\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, {\n // '200bc'\n reg: /^[0-9,]+ ?b\\.?c\\.?$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //make negative-year\n\n str = str.replace(/^([0-9,]+) ?b\\.?c\\.?$/i, '-$1'); //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '200ad'\n reg: /^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '1992'\n reg: /^[0-9]{4}( ?a\\.?d\\.?)?$/i,\n parse: function parse(s, arr) {\n var today = s._today;\n var year = parseYear(arr[0], today);\n var d = new Date(); // using today's date, but a new month is awkward.\n\n if (today.month && !today.date) {\n today.date = 1;\n }\n\n var obj = {\n year: year,\n month: today.month || d.getMonth(),\n date: today.date || d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}];\nvar strParse = strFmt;\n\n// pull in 'today' data for the baseline moment\nvar getNow = function getNow(s) {\n s.epoch = Date.now();\n Object.keys(s._today || {}).forEach(function (k) {\n if (typeof s[k] === 'function') {\n s = s[k](s._today[k]);\n }\n });\n return s;\n};\n\nvar dates = {\n now: function now(s) {\n return getNow(s);\n },\n today: function today(s) {\n return getNow(s);\n },\n tonight: function tonight(s) {\n s = getNow(s);\n s = s.hour(18); //6pm\n\n return s;\n },\n tomorrow: function tomorrow(s) {\n s = getNow(s);\n s = s.add(1, 'day');\n s = s.startOf('day');\n return s;\n },\n yesterday: function yesterday(s) {\n s = getNow(s);\n s = s.subtract(1, 'day');\n s = s.startOf('day');\n return s;\n },\n christmas: function christmas(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25\n\n return s;\n },\n 'new years': function newYears(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31\n\n return s;\n }\n};\ndates['new years eve'] = dates['new years'];\nvar namedDates = dates;\n\n// - can't use built-in js parser ;(\n//=========================================\n// ISO Date\t \"2015-03-25\"\n// Short Date\t\"03/25/2015\" or \"2015/03/25\"\n// Long Date\t\"Mar 25 2015\" or \"25 Mar 2015\"\n// Full Date\t\"Wednesday March 25 2015\"\n//=========================================\n//-- also -\n// if the given epoch is really small, they've probably given seconds and not milliseconds\n// anything below this number is likely (but not necessarily) a mistaken input.\n// this may seem like an arbitrary number, but it's 'within jan 1970'\n// this is only really ambiguous until 2054 or so\n\nvar minimumEpoch = 2500000000;\nvar defaults = {\n year: new Date().getFullYear(),\n month: 0,\n date: 1\n}; //support [2016, 03, 01] format\n\nvar handleArray = function handleArray(s, arr, today) {\n var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond'];\n\n for (var i = 0; i < order.length; i++) {\n var num = arr[i] || today[order[i]] || defaults[order[i]] || 0;\n s = s[order[i]](num);\n }\n\n return s;\n}; //support {year:2016, month:3} format\n\n\nvar handleObject = function handleObject(s, obj, today) {\n obj = Object.assign({}, defaults, today, obj);\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var unit = keys[i]; //make sure we have this method\n\n if (s[unit] === undefined || typeof s[unit] !== 'function') {\n continue;\n } //make sure the value is a number\n\n\n if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') {\n continue;\n }\n\n var num = obj[unit] || today[unit] || defaults[unit] || 0;\n s = s[unit](num);\n }\n\n return s;\n}; //find the epoch from different input styles\n\n\nvar parseInput = function parseInput(s, input, givenTz) {\n var today = s._today || defaults; //if we've been given a epoch number, it's easy\n\n if (typeof input === 'number') {\n if (input > 0 && input < minimumEpoch && s.silent === false) {\n console.warn(' - Warning: You are setting the date to January 1970.');\n console.warn(' - did input seconds instead of milliseconds?');\n }\n\n s.epoch = input;\n return s;\n } //set tmp time\n\n\n s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists\n\n if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) {\n var res = handleObject(s, today, defaults);\n\n if (res.isValid()) {\n s.epoch = res.epoch;\n }\n } // null input means 'now'\n\n\n if (input === null || input === undefined || input === '') {\n return s; //k, we're good.\n } //support input of Date() object\n\n\n if (fns.isDate(input) === true) {\n s.epoch = input.getTime();\n return s;\n } //support [2016, 03, 01] format\n\n\n if (fns.isArray(input) === true) {\n s = handleArray(s, input, today);\n return s;\n } //support {year:2016, month:3} format\n\n\n if (fns.isObject(input) === true) {\n //support spacetime object as input\n if (input.epoch) {\n s.epoch = input.epoch;\n s.tz = input.tz;\n return s;\n }\n\n s = handleObject(s, input, today);\n return s;\n } //input as a string..\n\n\n if (typeof input !== 'string') {\n return s;\n } //little cleanup..\n\n\n input = input.replace(/\\b(mon|tues|wed|wednes|thu|thurs|fri|sat|satur|sun)(day)?\\b/i, '');\n input = input.replace(/,/g, '');\n input = input.replace(/ +/g, ' ').trim(); //try some known-words, like 'now'\n\n if (namedDates.hasOwnProperty(input) === true) {\n s = namedDates[input](s);\n return s;\n } //try each text-parse template, use the first good result\n\n\n for (var i = 0; i < strParse.length; i++) {\n var m = input.match(strParse[i].reg);\n\n if (m) {\n var _res = strParse[i].parse(s, m, givenTz);\n\n if (_res !== null) {\n return _res;\n }\n }\n }\n\n if (s.silent === false) {\n console.warn(\"Warning: couldn't parse date-string: '\" + input + \"'\");\n }\n\n s.epoch = null;\n return s;\n};\n\nvar input = parseInput;\n\nvar shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nvar days = {\n \"short\": function short() {\n return shortDays;\n },\n \"long\": function long() {\n return longDays;\n },\n set: function set(i18n) {\n shortDays = i18n[\"short\"] || shortDays;\n longDays = i18n[\"long\"] || longDays;\n }\n};\n\n// it's kind of nuts how involved this is\n// \"+01:00\", \"+0100\", or simply \"+01\"\n\nvar isoOffset = function isoOffset(s) {\n var offset = s.timezone().current.offset;\n var isNegative = offset < 0;\n var minute = '00'; //handle 5.5 → '5:30'\n\n if (Math.abs(offset % 1) === 0.5) {\n minute = '30';\n\n if (offset >= 0) {\n offset = Math.floor(offset);\n } else {\n offset = Math.ceil(offset);\n }\n }\n\n if (isNegative) {\n //handle negative sign\n offset *= -1;\n offset = fns.zeroPad(offset, 2);\n offset = '-' + offset;\n } else {\n offset = fns.zeroPad(offset, 2);\n offset = '+' + offset;\n }\n\n offset = offset + ':' + minute; //'Z' means 00\n\n if (offset === '+00:00') {\n offset = 'Z';\n }\n\n return offset;\n};\n\nvar _offset = isoOffset;\n\nvar format = {\n day: function day(s) {\n return fns.titleCase(s.dayName());\n },\n 'day-short': function dayShort(s) {\n return fns.titleCase(days[\"short\"]()[s.day()]);\n },\n 'day-number': function dayNumber(s) {\n return s.day();\n },\n 'day-ordinal': function dayOrdinal(s) {\n return fns.ordinal(s.day());\n },\n 'day-pad': function dayPad(s) {\n return fns.zeroPad(s.day());\n },\n date: function date(s) {\n return s.date();\n },\n 'date-ordinal': function dateOrdinal(s) {\n return fns.ordinal(s.date());\n },\n 'date-pad': function datePad(s) {\n return fns.zeroPad(s.date());\n },\n month: function month(s) {\n return fns.titleCase(s.monthName());\n },\n 'month-short': function monthShort(s) {\n return fns.titleCase(months[\"short\"]()[s.month()]);\n },\n 'month-number': function monthNumber(s) {\n return s.month();\n },\n 'month-ordinal': function monthOrdinal(s) {\n return fns.ordinal(s.month());\n },\n 'month-pad': function monthPad(s) {\n return fns.zeroPad(s.month());\n },\n 'iso-month': function isoMonth(s) {\n return fns.zeroPad(s.month() + 1);\n },\n //1-based months\n year: function year(s) {\n var year = s.year();\n\n if (year > 0) {\n return year;\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'year-short': function yearShort(s) {\n var year = s.year();\n\n if (year > 0) {\n return \"'\".concat(String(s.year()).substr(2, 4));\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'iso-year': function isoYear(s) {\n var year = s.year();\n var isNegative = year < 0;\n var str = fns.zeroPad(Math.abs(year), 4); //0-padded\n\n if (isNegative) {\n //negative years are for some reason 6-digits ('-00008')\n str = fns.zeroPad(str, 6);\n str = '-' + str;\n }\n\n return str;\n },\n time: function time(s) {\n return s.time();\n },\n 'time-24': function time24(s) {\n return \"\".concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n hour: function hour(s) {\n return s.hour12();\n },\n 'hour-pad': function hourPad(s) {\n return fns.zeroPad(s.hour12());\n },\n 'hour-24': function hour24(s) {\n return s.hour24();\n },\n 'hour-24-pad': function hour24Pad(s) {\n return fns.zeroPad(s.hour24());\n },\n minute: function minute(s) {\n return s.minute();\n },\n 'minute-pad': function minutePad(s) {\n return fns.zeroPad(s.minute());\n },\n second: function second(s) {\n return s.second();\n },\n 'second-pad': function secondPad(s) {\n return fns.zeroPad(s.second());\n },\n ampm: function ampm(s) {\n return s.ampm();\n },\n quarter: function quarter(s) {\n return 'Q' + s.quarter();\n },\n season: function season(s) {\n return s.season();\n },\n era: function era(s) {\n return s.era();\n },\n json: function json(s) {\n return s.json();\n },\n timezone: function timezone(s) {\n return s.timezone().name;\n },\n offset: function offset(s) {\n return _offset(s);\n },\n numeric: function numeric(s) {\n return \"\".concat(s.year(), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n // yyyy/mm/dd\n 'numeric-us': function numericUs(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()), \"/\").concat(s.year());\n },\n // mm/dd/yyyy\n 'numeric-uk': function numericUk(s) {\n return \"\".concat(fns.zeroPad(s.date()), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(s.year());\n },\n //dd/mm/yyyy\n 'mm/dd': function mmDd(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n //mm/dd\n // ... https://en.wikipedia.org/wiki/ISO_8601 ;(((\n iso: function iso(s) {\n var year = s.format('iso-year');\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n var hour = fns.zeroPad(s.h24());\n var minute = fns.zeroPad(s.minute());\n var second = fns.zeroPad(s.second());\n var ms = fns.zeroPad(s.millisecond(), 3);\n var offset = _offset(s);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(date, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second, \".\").concat(ms).concat(offset); //2018-03-09T08:50:00.000-05:00\n },\n 'iso-short': function isoShort(s) {\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n return \"\".concat(s.year(), \"-\").concat(month, \"-\").concat(date); //2017-02-15\n },\n 'iso-utc': function isoUtc(s) {\n return new Date(s.epoch).toISOString(); //2017-03-08T19:45:28.367Z\n },\n //i made these up\n nice: function nice(s) {\n return \"\".concat(months[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-year': function niceYear(s) {\n return \"\".concat(months[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.year());\n },\n 'nice-day': function niceDay(s) {\n return \"\".concat(days[\"short\"]()[s.day()], \" \").concat(fns.titleCase(months[\"short\"]()[s.month()]), \" \").concat(fns.ordinal(s.date()));\n },\n 'nice-full': function niceFull(s) {\n return \"\".concat(s.dayName(), \" \").concat(fns.titleCase(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n }\n}; //aliases\n\nvar aliases = {\n 'day-name': 'day',\n 'month-name': 'month',\n 'iso 8601': 'iso',\n 'time-h24': 'time-24',\n 'time-12': 'time',\n 'time-h12': 'time',\n tz: 'timezone',\n 'day-num': 'day-number',\n 'month-num': 'month-number',\n 'month-iso': 'iso-month',\n 'year-iso': 'iso-year',\n 'nice-short': 'nice',\n mdy: 'numeric-us',\n dmy: 'numeric-uk',\n ymd: 'numeric',\n 'yyyy/mm/dd': 'numeric',\n 'mm/dd/yyyy': 'numeric-us',\n 'dd/mm/yyyy': 'numeric-us',\n 'little-endian': 'numeric-uk',\n 'big-endian': 'numeric',\n 'day-nice': 'nice-day'\n};\nObject.keys(aliases).forEach(function (k) {\n return format[k] = format[aliases[k]];\n});\n\nvar printFormat = function printFormat(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n //don't print anything if it's an invalid date\n if (s.isValid() !== true) {\n return '';\n } //support .format('month')\n\n\n if (format.hasOwnProperty(str)) {\n var out = format[str](s) || '';\n\n if (str !== 'json') {\n out = String(out);\n\n if (str !== 'ampm') {\n out = fns.titleCase(out);\n }\n }\n\n return out;\n } //support '{hour}:{minute}' notation\n\n\n if (str.indexOf('{') !== -1) {\n var sections = /\\{(.+?)\\}/g;\n str = str.replace(sections, function (_, fmt) {\n fmt = fmt.toLowerCase().trim();\n\n if (format.hasOwnProperty(fmt)) {\n return String(format[fmt](s));\n }\n\n return '';\n });\n return str;\n }\n\n return s.format('iso-short');\n};\n\nvar format_1 = printFormat;\n\nvar pad = fns.zeroPad;\nvar formatTimezone = fns.formatTimezone; //parse this insane unix-time-templating thing, from the 19th century\n//http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns\n//time-symbols we support\n\nvar mapping = {\n G: function G(s) {\n return s.era();\n },\n GG: function GG(s) {\n return s.era();\n },\n GGG: function GGG(s) {\n return s.era();\n },\n GGGG: function GGGG(s) {\n return s.era() === 'AD' ? 'Anno Domini' : 'Before Christ';\n },\n //year\n y: function y(s) {\n return s.year();\n },\n yy: function yy(s) {\n //last two chars\n return parseInt(String(s.year()).substr(2, 4), 10);\n },\n yyy: function yyy(s) {\n return s.year();\n },\n yyyy: function yyyy(s) {\n return s.year();\n },\n yyyyy: function yyyyy(s) {\n return '0' + s.year();\n },\n // u: (s) => {},//extended non-gregorian years\n //quarter\n Q: function Q(s) {\n return s.quarter();\n },\n QQ: function QQ(s) {\n return s.quarter();\n },\n QQQ: function QQQ(s) {\n return s.quarter();\n },\n QQQQ: function QQQQ(s) {\n return s.quarter();\n },\n //month\n M: function M(s) {\n return s.month() + 1;\n },\n MM: function MM(s) {\n return pad(s.month() + 1);\n },\n MMM: function MMM(s) {\n return s.format('month-short');\n },\n MMMM: function MMMM(s) {\n return s.format('month');\n },\n //week\n w: function w(s) {\n return s.week();\n },\n ww: function ww(s) {\n return pad(s.week());\n },\n //week of month\n // W: (s) => s.week(),\n //date of month\n d: function d(s) {\n return s.date();\n },\n dd: function dd(s) {\n return pad(s.date());\n },\n //date of year\n D: function D(s) {\n return s.dayOfYear();\n },\n DD: function DD(s) {\n return pad(s.dayOfYear());\n },\n DDD: function DDD(s) {\n return pad(s.dayOfYear(), 3);\n },\n // F: (s) => {},//date of week in month\n // g: (s) => {},//modified julian day\n //day\n E: function E(s) {\n return s.format('day-short');\n },\n EE: function EE(s) {\n return s.format('day-short');\n },\n EEE: function EEE(s) {\n return s.format('day-short');\n },\n EEEE: function EEEE(s) {\n return s.format('day');\n },\n EEEEE: function EEEEE(s) {\n return s.format('day')[0];\n },\n e: function e(s) {\n return s.day();\n },\n ee: function ee(s) {\n return s.day();\n },\n eee: function eee(s) {\n return s.format('day-short');\n },\n eeee: function eeee(s) {\n return s.format('day');\n },\n eeeee: function eeeee(s) {\n return s.format('day')[0];\n },\n //am/pm\n a: function a(s) {\n return s.ampm().toUpperCase();\n },\n aa: function aa(s) {\n return s.ampm().toUpperCase();\n },\n aaa: function aaa(s) {\n return s.ampm().toUpperCase();\n },\n aaaa: function aaaa(s) {\n return s.ampm().toUpperCase();\n },\n //hour\n h: function h(s) {\n return s.h12();\n },\n hh: function hh(s) {\n return pad(s.h12());\n },\n H: function H(s) {\n return s.hour();\n },\n HH: function HH(s) {\n return pad(s.hour());\n },\n // j: (s) => {},//weird hour format\n m: function m(s) {\n return s.minute();\n },\n mm: function mm(s) {\n return pad(s.minute());\n },\n s: function s(_s) {\n return _s.second();\n },\n ss: function ss(s) {\n return pad(s.second());\n },\n //milliseconds in the day\n A: function A(s) {\n return s.epoch - s.startOf('day').epoch;\n },\n //timezone\n z: function z(s) {\n return s.timezone().name;\n },\n zz: function zz(s) {\n return s.timezone().name;\n },\n zzz: function zzz(s) {\n return s.timezone().name;\n },\n zzzz: function zzzz(s) {\n return s.timezone().name;\n },\n Z: function Z(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZ: function ZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZ: function ZZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZZ: function ZZZZ(s) {\n return formatTimezone(s.timezone().current.offset, ':');\n }\n};\n\nvar addAlias = function addAlias(_char, to, n) {\n var name = _char;\n var toName = to;\n\n for (var i = 0; i < n; i += 1) {\n mapping[name] = mapping[toName];\n name += _char;\n toName += to;\n }\n};\n\naddAlias('q', 'Q', 4);\naddAlias('L', 'M', 4);\naddAlias('Y', 'y', 4);\naddAlias('c', 'e', 4);\naddAlias('k', 'H', 2);\naddAlias('K', 'h', 2);\naddAlias('S', 's', 2);\naddAlias('v', 'z', 4);\naddAlias('V', 'Z', 4);\n\nvar unixFmt = function unixFmt(s, str) {\n var chars = str.split(''); //combine consecutive chars, like 'yyyy' as one.\n\n var arr = [chars[0]];\n var quoteOn = false;\n\n for (var i = 1; i < chars.length; i += 1) {\n //support quoted substrings\n if (chars[i] === \"'\") {\n quoteOn = !quoteOn; //support '', meaning one tick\n\n if (quoteOn === true && chars[i + 1] && chars[i + 1] === \"'\") {\n quoteOn = true;\n } else {\n continue;\n }\n } //merge it with the last one\n\n\n if (quoteOn === true || chars[i] === arr[arr.length - 1][0]) {\n arr[arr.length - 1] += chars[i];\n } else {\n arr.push(chars[i]);\n }\n }\n\n return arr.reduce(function (txt, c) {\n if (mapping[c] !== undefined) {\n txt += mapping[c](s) || '';\n } else {\n txt += c;\n }\n\n return txt;\n }, '');\n};\n\nvar unixFmt_1 = unixFmt;\n\nvar units$1 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\nvar doUnit = function doUnit(s, k) {\n var start = s.clone().startOf(k);\n var end = s.clone().endOf(k);\n var duration = end.epoch - start.epoch;\n var percent = (s.epoch - start.epoch) / duration;\n return parseFloat(percent.toFixed(2));\n}; //how far it is along, from 0-1\n\n\nvar progress = function progress(s, unit) {\n if (unit) {\n unit = fns.normalize(unit);\n return doUnit(s, unit);\n }\n\n var obj = {};\n units$1.forEach(function (k) {\n obj[k] = doUnit(s, k);\n });\n return obj;\n};\n\nvar progress_1 = progress;\n\nvar nearest = function nearest(s, unit) {\n //how far have we gone?\n var prog = s.progress();\n unit = fns.normalize(unit); //fix camel-case for this one\n\n if (unit === 'quarterhour') {\n unit = 'quarterHour';\n }\n\n if (prog[unit] !== undefined) {\n // go forward one?\n if (prog[unit] > 0.5) {\n s = s.add(1, unit);\n } // go to start\n\n\n s = s.startOf(unit);\n } else if (s.silent === false) {\n console.warn(\"no known unit '\" + unit + \"'\");\n }\n\n return s;\n};\n\nvar nearest_1 = nearest;\n\n//increment until dates are the same\nvar climb = function climb(a, b, unit) {\n var i = 0;\n a = a.clone();\n\n while (a.isBefore(b)) {\n //do proper, expensive increment to catch all-the-tricks\n a = a.add(1, unit);\n i += 1;\n } //oops, we went too-far..\n\n\n if (a.isAfter(b, unit)) {\n i -= 1;\n }\n\n return i;\n}; // do a thurough +=1 on the unit, until they match\n// for speed-reasons, only used on day, month, week.\n\n\nvar diffOne = function diffOne(a, b, unit) {\n if (a.isBefore(b)) {\n return climb(a, b, unit);\n } else {\n return climb(b, a, unit) * -1; //reverse it\n }\n};\n\nvar one = diffOne;\n\n// 2020 - 2019 may be 1 year, or 0 years\n// - '1 year difference' means 366 days during a leap year\n\nvar fastYear = function fastYear(a, b) {\n var years = b.year() - a.year(); // should we decrement it by 1?\n\n a = a.year(b.year());\n\n if (a.isAfter(b)) {\n years -= 1;\n }\n\n return years;\n}; // use a waterfall-method for computing a diff of any 'pre-knowable' units\n// compute years, then compute months, etc..\n// ... then ms-math for any very-small units\n\n\nvar diff = function diff(a, b) {\n // an hour is always the same # of milliseconds\n // so these units can be 'pre-calculated'\n var msDiff = b.epoch - a.epoch;\n var obj = {\n milliseconds: msDiff,\n seconds: parseInt(msDiff / 1000, 10)\n };\n obj.minutes = parseInt(obj.seconds / 60, 10);\n obj.hours = parseInt(obj.minutes / 60, 10); //do the year\n\n var tmp = a.clone();\n obj.years = fastYear(tmp, b);\n tmp = a.add(obj.years, 'year'); //there's always 12 months in a year...\n\n obj.months = obj.years * 12;\n tmp = a.add(obj.months, 'month');\n obj.months += one(tmp, b, 'month'); // there's always atleast 52 weeks in a year..\n // (month * 4) isn't as close\n\n obj.weeks = obj.years * 52;\n tmp = a.add(obj.weeks, 'week');\n obj.weeks += one(tmp, b, 'week'); // there's always atleast 7 days in a week\n\n obj.days = obj.weeks * 7;\n tmp = a.add(obj.days, 'day');\n obj.days += one(tmp, b, 'day');\n return obj;\n};\n\nvar waterfall = diff;\n\nvar reverseDiff = function reverseDiff(obj) {\n Object.keys(obj).forEach(function (k) {\n obj[k] *= -1;\n });\n return obj;\n}; // this method counts a total # of each unit, between a, b.\n// '1 month' means 28 days in february\n// '1 year' means 366 days in a leap year\n\n\nvar main = function main(a, b, unit) {\n b = fns.beADate(b, a); //reverse values, if necessary\n\n var reversed = false;\n\n if (a.isAfter(b)) {\n var tmp = a;\n a = b;\n b = tmp;\n reversed = true;\n } //compute them all (i know!)\n\n\n var obj = waterfall(a, b);\n\n if (reversed) {\n obj = reverseDiff(obj);\n } //return just the requested unit\n\n\n if (unit) {\n //make sure it's plural-form\n unit = fns.normalize(unit);\n\n if (/s$/.test(unit) !== true) {\n unit += 's';\n }\n\n if (unit === 'dates') {\n unit = 'days';\n }\n\n return obj[unit];\n }\n\n return obj;\n};\n\nvar diff$1 = main;\n\n//our conceptual 'break-points' for each unit\n\nvar qualifiers = {\n months: {\n almost: 10,\n over: 4\n },\n days: {\n almost: 25,\n over: 10\n },\n hours: {\n almost: 20,\n over: 8\n },\n minutes: {\n almost: 50,\n over: 20\n },\n seconds: {\n almost: 50,\n over: 20\n }\n}; //get number of hours/minutes... between the two dates\n\nfunction getDiff(a, b) {\n var isBefore = a.isBefore(b);\n var later = isBefore ? b : a;\n var earlier = isBefore ? a : b;\n earlier = earlier.clone();\n var diff = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n Object.keys(diff).forEach(function (unit) {\n if (earlier.isSame(later, unit)) {\n return;\n }\n\n var max = earlier.diff(later, unit);\n earlier = earlier.add(max, unit);\n diff[unit] = max;\n }); //reverse it, if necessary\n\n if (isBefore) {\n Object.keys(diff).forEach(function (u) {\n if (diff[u] !== 0) {\n diff[u] *= -1;\n }\n });\n }\n\n return diff;\n} // Expects a plural unit arg\n\n\nfunction pluralize(value, unit) {\n if (value === 1) {\n unit = unit.slice(0, -1);\n }\n\n return value + ' ' + unit;\n} //create the human-readable diff between the two dates\n\n\nvar since = function since(start, end) {\n end = fns.beADate(end, start);\n var diff = getDiff(start, end);\n var isNow = Object.keys(diff).every(function (u) {\n return !diff[u];\n });\n\n if (isNow === true) {\n return {\n diff: diff,\n rounded: 'now',\n qualified: 'now',\n precise: 'now'\n };\n }\n\n var rounded;\n var qualified;\n var precise;\n var englishValues = []; //go through each value and create its text-representation\n\n Object.keys(diff).forEach(function (unit, i, units) {\n var value = Math.abs(diff[unit]);\n\n if (value === 0) {\n return;\n }\n\n var englishValue = pluralize(value, unit);\n englishValues.push(englishValue);\n\n if (!rounded) {\n rounded = qualified = englishValue;\n\n if (i > 4) {\n return;\n } //is it a 'almost' something, etc?\n\n\n var nextUnit = units[i + 1];\n var nextValue = Math.abs(diff[nextUnit]);\n\n if (nextValue > qualifiers[nextUnit].almost) {\n rounded = pluralize(value + 1, unit);\n qualified = 'almost ' + rounded;\n } else if (nextValue > qualifiers[nextUnit].over) qualified = 'over ' + englishValue;\n }\n }); //make them into a string\n\n precise = englishValues.splice(0, 2).join(', '); //handle before/after logic\n\n if (start.isAfter(end) === true) {\n rounded += ' ago';\n qualified += ' ago';\n precise += ' ago';\n } else {\n rounded = 'in ' + rounded;\n qualified = 'in ' + qualified;\n precise = 'in ' + precise;\n }\n\n return {\n diff: diff,\n rounded: rounded,\n qualified: qualified,\n precise: precise\n };\n};\n\nvar since_1 = since;\n\n//https://www.timeanddate.com/calendar/aboutseasons.html\n// Spring - from March 1 to May 31;\n// Summer - from June 1 to August 31;\n// Fall (autumn) - from September 1 to November 30; and,\n// Winter - from December 1 to February 28 (February 29 in a leap year).\nvar seasons = {\n north: [['spring', 2, 1], //spring march 1\n ['summer', 5, 1], //june 1\n ['fall', 8, 1], //sept 1\n ['autumn', 8, 1], //sept 1\n ['winter', 11, 1] //dec 1\n ],\n south: [['fall', 2, 1], //march 1\n ['autumn', 2, 1], //march 1\n ['winter', 5, 1], //june 1\n ['spring', 8, 1], //sept 1\n ['summer', 11, 1] //dec 1\n ]\n};\n\nvar quarters = [null, [0, 1], //jan 1\n[3, 1], //apr 1\n[6, 1], //july 1\n[9, 1] //oct 1\n];\n\nvar units$2 = {\n minute: function minute(s) {\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarterhour: function quarterhour(s) {\n var minute = s.minutes();\n\n if (minute >= 45) {\n s = s.minutes(45);\n } else if (minute >= 30) {\n s = s.minutes(30);\n } else if (minute >= 15) {\n s = s.minutes(15);\n } else {\n s = s.minutes(0);\n }\n\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n hour: function hour(s) {\n walk_1(s, {\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n day: function day(s) {\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n week: function week(s) {\n var original = s.clone();\n s = s.day(s._weekStart); //monday\n\n if (s.isAfter(original)) {\n s = s.subtract(1, 'week');\n }\n\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n month: function month(s) {\n walk_1(s, {\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarter: function quarter(s) {\n var q = s.quarter();\n\n if (quarters[q]) {\n walk_1(s, {\n month: quarters[q][0],\n date: quarters[q][1],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n }\n\n return s;\n },\n season: function season(s) {\n var current = s.season();\n var hem = 'north';\n\n if (s.hemisphere() === 'South') {\n hem = 'south';\n }\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (seasons[hem][i][0] === current) {\n //winter goes between years\n var year = s.year();\n\n if (current === 'winter' && s.month() < 3) {\n year -= 1;\n }\n\n walk_1(s, {\n year: year,\n month: seasons[hem][i][1],\n date: seasons[hem][i][2],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n }\n }\n\n return s;\n },\n year: function year(s) {\n walk_1(s, {\n month: 0,\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n decade: function decade(s) {\n s = s.startOf('year');\n var year = s.year();\n var decade = parseInt(year / 10, 10) * 10;\n s = s.year(decade);\n return s;\n },\n century: function century(s) {\n s = s.startOf('year');\n var year = s.year(); // near 0AD goes '-1 | +1'\n\n var decade = parseInt(year / 100, 10) * 100;\n s = s.year(decade);\n return s;\n }\n};\nunits$2.date = units$2.day;\n\nvar startOf = function startOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$2[unit]) {\n return units$2[unit](s);\n }\n\n if (unit === 'summer' || unit === 'winter') {\n s = s.season(unit);\n return units$2.season(s);\n }\n\n return s;\n}; //piggy-backs off startOf\n\n\nvar endOf = function endOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$2[unit]) {\n s = units$2[unit](s);\n s = s.add(1, unit);\n s = s.subtract(1, 'milliseconds');\n return s;\n }\n\n return s;\n};\n\nvar startOf_1 = {\n startOf: startOf,\n endOf: endOf\n};\n\nvar isDay = function isDay(unit) {\n if (days[\"short\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n if (days[\"long\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n return false;\n}; // return a list of the weeks/months/days between a -> b\n// returns spacetime objects in the timezone of the input\n\n\nvar every = function every(start) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var end = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!unit || !end) {\n return [];\n } //cleanup unit param\n\n\n unit = fns.normalize(unit); //cleanup to param\n\n end = start.clone().set(end); //swap them, if they're backwards\n\n if (start.isAfter(end)) {\n var tmp = start;\n start = end;\n end = tmp;\n } //support 'every wednesday'\n\n\n var d = start.clone();\n\n if (isDay(unit)) {\n d = d.next(unit);\n unit = 'week';\n } else {\n d = d.next(unit);\n } //okay, actually start doing it\n\n\n var result = [];\n\n while (d.isBefore(end)) {\n result.push(d);\n d = d.add(1, unit);\n }\n\n return result;\n};\n\nvar every_1 = every;\n\nvar parseDst = function parseDst(dst) {\n if (!dst) {\n return [];\n }\n\n return dst.split('->');\n};\n\nvar titleCase = function titleCase(str) {\n str = str[0].toUpperCase() + str.substr(1);\n str = str.replace(/\\/gmt/, '/GMT');\n str = str.replace(/[\\/_]([a-z])/gi, function (s) {\n return s.toUpperCase();\n });\n return str;\n}; //get metadata about this timezone\n\n\nvar timezone = function timezone(s) {\n var zones = s.timezones;\n var tz = s.tz;\n\n if (zones.hasOwnProperty(tz) === false) {\n tz = find(s.tz, zones);\n }\n\n if (tz === null) {\n if (s.silent === false) {\n console.warn(\"Warn: could not find given or local timezone - '\" + s.tz + \"'\");\n }\n\n return {\n current: {\n epochShift: 0\n }\n };\n }\n\n var found = zones[tz];\n var result = {\n name: titleCase(tz),\n hasDst: Boolean(found.dst),\n default_offset: found.offset,\n //do north-hemisphere version as default (sorry!)\n hemisphere: found.hem === 's' ? 'South' : 'North',\n current: {}\n };\n\n if (result.hasDst) {\n var arr = parseDst(found.dst);\n result.change = {\n start: arr[0],\n back: arr[1]\n };\n } //find the offsets for summer/winter times\n //(these variable names are north-centric)\n\n\n var summer = found.offset; // (july)\n\n var winter = summer; // (january) assume it's the same for now\n\n if (result.hasDst === true) {\n if (result.hemisphere === 'North') {\n winter = summer - 1;\n } else {\n //southern hemisphere\n winter = found.offset + 1;\n }\n } //find out which offset to use right now\n //use 'summer' time july-time\n\n\n if (result.hasDst === false) {\n result.current.offset = summer;\n result.current.isDST = false;\n } else if (summerTime(s.epoch, result.change.start, result.change.back, summer) === true) {\n result.current.offset = summer;\n result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north\n } else {\n //use 'winter' january-time\n result.current.offset = winter;\n result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south\n }\n\n return result;\n};\n\nvar timezone_1 = timezone;\n\nvar units$3 = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\nvar methods = {\n set: function set(input$1, tz) {\n var s = this.clone();\n s = input(s, input$1, null);\n\n if (tz) {\n this.tz = find(tz);\n }\n\n return s;\n },\n timezone: function timezone() {\n return timezone_1(this);\n },\n isDST: function isDST() {\n return timezone_1(this).current.isDST;\n },\n hasDST: function hasDST() {\n return timezone_1(this).hasDst;\n },\n offset: function offset() {\n return timezone_1(this).current.offset * 60;\n },\n hemisphere: function hemisphere() {\n return timezone_1(this).hemisphere;\n },\n format: function format(fmt) {\n return format_1(this, fmt);\n },\n unixFmt: function unixFmt(fmt) {\n return unixFmt_1(this, fmt);\n },\n startOf: function startOf(unit) {\n return startOf_1.startOf(this, unit);\n },\n endOf: function endOf(unit) {\n return startOf_1.endOf(this, unit);\n },\n leapYear: function leapYear() {\n var year = this.year();\n return fns.isLeapYear(year);\n },\n progress: function progress(unit) {\n return progress_1(this, unit);\n },\n nearest: function nearest(unit) {\n return nearest_1(this, unit);\n },\n diff: function diff(d, unit) {\n return diff$1(this, d, unit);\n },\n since: function since(d) {\n if (!d) {\n d = this.clone().set();\n }\n\n return since_1(this, d);\n },\n next: function next(unit) {\n var s = this.add(1, unit);\n return s.startOf(unit);\n },\n //the start of the previous year/week/century\n last: function last(unit) {\n var s = this.subtract(1, unit);\n return s.startOf(unit);\n },\n isValid: function isValid() {\n //null/undefined epochs\n if (!this.epoch && this.epoch !== 0) {\n return false;\n }\n\n return !isNaN(this.d.getTime());\n },\n //travel to this timezone\n \"goto\": function goto(tz) {\n var s = this.clone();\n s.tz = find(tz, s.timezones); //science!\n\n return s;\n },\n //get each week/month/day between a -> b\n every: function every(unit, to) {\n return every_1(this, unit, to);\n },\n isAwake: function isAwake() {\n var hour = this.hour(); //10pm -> 8am\n\n if (hour < 8 || hour > 22) {\n return false;\n }\n\n return true;\n },\n isAsleep: function isAsleep() {\n return !this.isAwake();\n },\n //pretty-printing\n log: function log() {\n console.log('');\n console.log(format_1(this, 'nice-short'));\n return this;\n },\n logYear: function logYear() {\n console.log('');\n console.log(format_1(this, 'full-short'));\n return this;\n },\n json: function json() {\n var _this = this;\n\n return units$3.reduce(function (h, unit) {\n h[unit] = _this[unit]();\n return h;\n }, {});\n },\n debug: function debug() {\n var tz = this.timezone();\n var date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year();\n date += '\\n - ' + this.format('time');\n console.log('\\n\\n', date + '\\n - ' + tz.name + ' (' + tz.current.offset + ')');\n return this;\n },\n //alias of 'since' but opposite - like moment.js\n from: function from(d) {\n d = this.clone().set(d);\n return d.since(this);\n },\n fromNow: function fromNow() {\n var d = this.clone().set(Date.now());\n return d.since(this);\n },\n weekStart: function weekStart(input) {\n //accept a number directly\n if (typeof input === 'number') {\n this._weekStart = input;\n return this;\n }\n\n if (typeof input === 'string') {\n // accept 'wednesday'\n input = input.toLowerCase().trim();\n var num = days[\"short\"]().indexOf(input);\n\n if (num === -1) {\n num = days[\"long\"]().indexOf(input);\n }\n\n if (num === -1) {\n num = 1; //go back to default\n }\n\n this._weekStart = num;\n } else {\n console.warn('Spacetime Error: Cannot understand .weekStart() input:', input);\n }\n\n return this;\n }\n}; // aliases\n\nmethods.inDST = methods.isDST;\nmethods.round = methods.nearest;\nmethods.each = methods.every;\nvar methods_1 = methods;\n\n//these methods wrap around them.\n\nvar isLeapYear$1 = fns.isLeapYear;\n\nvar validate = function validate(n) {\n //handle number as a string\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n }\n\n return n;\n};\n\nvar order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond\n\nvar confirm = function confirm(s, tmp, unit) {\n var n = order.indexOf(unit);\n var arr = order.slice(n, order.length);\n\n for (var i = 0; i < arr.length; i++) {\n var want = tmp[arr[i]]();\n s[arr[i]](want);\n }\n\n return s;\n};\n\nvar set = {\n milliseconds: function milliseconds(s, n) {\n n = validate(n);\n var current = s.millisecond();\n var diff = current - n; //milliseconds to shift by\n\n return s.epoch - diff;\n },\n seconds: function seconds(s, n) {\n n = validate(n);\n var diff = s.second() - n;\n var shift = diff * milliseconds.second;\n return s.epoch - shift;\n },\n minutes: function minutes(s, n) {\n n = validate(n);\n var old = s.clone();\n var diff = s.minute() - n;\n var shift = diff * milliseconds.minute;\n s.epoch -= shift; // check against a screw-up\n // if (old.hour() != s.hour()) {\n // walkTo(old, {\n // minute: n\n // })\n // return old.epoch\n // }\n\n confirm(s, old, 'second');\n return s.epoch;\n },\n hours: function hours(s, n) {\n n = validate(n);\n\n if (n >= 24) {\n n = 24;\n } else if (n < 0) {\n n = 0;\n }\n\n var old = s.clone();\n var diff = s.hour() - n;\n var shift = diff * milliseconds.hour;\n s.epoch -= shift;\n walk_1(s, {\n hour: n\n });\n confirm(s, old, 'minute');\n return s.epoch;\n },\n //support setting time by '4:25pm' - this isn't very-well developed..\n time: function time(s, str) {\n var m = str.match(/([0-9]{1,2}):([0-9]{1,2})(am|pm)?/);\n\n if (!m) {\n //fallback to support just '2am'\n m = str.match(/([0-9]{1,2})(am|pm)/);\n\n if (!m) {\n return s.epoch;\n }\n\n m.splice(2, 0, '0'); //add implicit 0 minutes\n }\n\n var h24 = false;\n var hour = parseInt(m[1], 10);\n var minute = parseInt(m[2], 10);\n\n if (hour > 12) {\n h24 = true;\n } //make the hour into proper 24h time\n\n\n if (h24 === false) {\n if (m[3] === 'am' && hour === 12) {\n //12am is midnight\n hour = 0;\n }\n\n if (m[3] === 'pm' && hour < 12) {\n //12pm is noon\n hour += 12;\n }\n }\n\n s = s.hour(hour);\n s = s.minute(minute);\n s = s.second(0);\n s = s.millisecond(0);\n return s.epoch;\n },\n date: function date(s, n) {\n n = validate(n); //avoid setting february 31st\n\n if (n > 28) {\n var month = s.month();\n var max = monthLengths_1[month]; // support leap day in february\n\n if (month === 1 && n === 29 && isLeapYear$1(s.year())) {\n max = 29;\n }\n\n if (n > max) {\n n = max;\n }\n } //avoid setting < 0\n\n\n if (n <= 0) {\n n = 1;\n }\n\n walk_1(s, {\n date: n\n });\n return s.epoch;\n },\n //this one's tricky\n month: function month(s, n) {\n if (typeof n === 'string') {\n n = months.mapping()[n.toLowerCase()];\n }\n\n n = validate(n); //don't go past december\n\n if (n >= 12) {\n n = 11;\n }\n\n if (n <= 0) {\n n = 0;\n }\n\n var date = s.date(); //there's no 30th of february, etc.\n\n if (date > monthLengths_1[n]) {\n //make it as close as we can..\n date = monthLengths_1[n];\n }\n\n walk_1(s, {\n month: n,\n date: date\n });\n return s.epoch;\n },\n year: function year(s, n) {\n n = validate(n);\n walk_1(s, {\n year: n\n });\n return s.epoch;\n },\n dayOfYear: function dayOfYear(s, n) {\n n = validate(n);\n var old = s.clone();\n n -= 1; //days are 1-based\n\n if (n <= 0) {\n n = 0;\n } else if (n >= 365) {\n n = 364;\n }\n\n s = s.startOf('year');\n s = s.add(n, 'day');\n confirm(s, old, 'hour');\n return s.epoch;\n }\n};\n\nvar methods$1 = {\n millisecond: function millisecond(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.milliseconds(s, num);\n return s;\n }\n\n return this.d.getMilliseconds();\n },\n second: function second(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.seconds(s, num);\n return s;\n }\n\n return this.d.getSeconds();\n },\n minute: function minute(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.minutes(s, num);\n return s;\n }\n\n return this.d.getMinutes();\n },\n hour: function hour(num) {\n var d = this.d;\n\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.hours(s, num);\n return s;\n }\n\n return d.getHours();\n },\n //'3:30' is 3.5\n hourFloat: function hourFloat(num) {\n if (num !== undefined) {\n var s = this.clone();\n\n var _minute = num % 1;\n\n _minute = _minute * 60;\n\n var _hour = parseInt(num, 10);\n\n s.epoch = set.hours(s, _hour);\n s.epoch = set.minutes(s, _minute);\n return s;\n }\n\n var d = this.d;\n var hour = d.getHours();\n var minute = d.getMinutes();\n minute = minute / 60;\n return hour + minute;\n },\n // hour in 12h format\n hour12: function hour12(str) {\n var d = this.d;\n\n if (str !== undefined) {\n var s = this.clone();\n str = '' + str;\n var m = str.match(/^([0-9]+)(am|pm)$/);\n\n if (m) {\n var hour = parseInt(m[1], 10);\n\n if (m[2] === 'pm') {\n hour += 12;\n }\n\n s.epoch = set.hours(s, hour);\n }\n\n return s;\n } //get the hour\n\n\n var hour12 = d.getHours();\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n }\n\n if (hour12 === 0) {\n hour12 = 12;\n }\n\n return hour12;\n },\n //some ambiguity here with 12/24h\n time: function time(str) {\n if (str !== undefined) {\n var s = this.clone();\n s.epoch = set.time(s, str);\n return s;\n }\n\n return \"\".concat(this.h12(), \":\").concat(fns.zeroPad(this.minute())).concat(this.ampm());\n },\n // either 'am' or 'pm'\n ampm: function ampm(input) {\n var which = 'am';\n var hour = this.hour();\n\n if (hour >= 12) {\n which = 'pm';\n }\n\n if (typeof input !== 'string') {\n return which;\n } //okay, we're doing a setter\n\n\n var s = this.clone();\n input = input.toLowerCase().trim(); //ampm should never change the day\n // - so use `.hour(n)` instead of `.minus(12,'hour')`\n\n if (hour >= 12 && input === 'am') {\n //noon is 12pm\n hour -= 12;\n return s.hour(hour);\n }\n\n if (hour < 12 && input === 'pm') {\n hour += 12;\n return s.hour(hour);\n }\n\n return s;\n },\n //some hard-coded times of day, like 'noon'\n dayTime: function dayTime(str) {\n if (str !== undefined) {\n var times = {\n morning: '7:00am',\n breakfast: '7:00am',\n noon: '12:00am',\n lunch: '12:00pm',\n afternoon: '2:00pm',\n evening: '6:00pm',\n dinner: '6:00pm',\n night: '11:00pm',\n midnight: '23:59pm'\n };\n var s = this.clone();\n str = str || '';\n str = str.toLowerCase();\n\n if (times.hasOwnProperty(str) === true) {\n s = s.time(times[str]);\n }\n\n return s;\n }\n\n var h = this.hour();\n\n if (h < 6) {\n return 'night';\n }\n\n if (h < 12) {\n //until noon\n return 'morning';\n }\n\n if (h < 17) {\n //until 5pm\n return 'afternoon';\n }\n\n if (h < 22) {\n //until 10pm\n return 'evening';\n }\n\n return 'night';\n },\n //parse a proper iso string\n iso: function iso(num) {\n if (num !== undefined) {\n return this.set(num);\n }\n\n return this.format('iso');\n }\n};\nvar _01Time = methods$1;\n\nvar methods$2 = {\n // # day in the month\n date: function date(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.date(s, num);\n return s;\n }\n\n return this.d.getDate();\n },\n //like 'wednesday' (hard!)\n day: function day(input) {\n if (input === undefined) {\n return this.d.getDay();\n }\n\n var original = this.clone();\n var want = input; // accept 'wednesday'\n\n if (typeof input === 'string') {\n input = input.toLowerCase();\n want = days[\"short\"]().indexOf(input);\n\n if (want === -1) {\n want = days[\"long\"]().indexOf(input);\n }\n } //move approx\n\n\n var day = this.d.getDay();\n var diff = day - want;\n var s = this.subtract(diff * 24, 'hours'); //tighten it back up\n\n walk_1(s, {\n hour: original.hour(),\n minute: original.minute(),\n second: original.second()\n });\n return s;\n },\n //these are helpful name-wrappers\n dayName: function dayName(input) {\n if (input === undefined) {\n return days[\"long\"]()[this.day()];\n }\n\n var s = this.clone();\n s = s.day(input);\n return s;\n },\n //either name or number\n month: function month(input) {\n if (input !== undefined) {\n var s = this.clone();\n s.epoch = set.month(s, input);\n return s;\n }\n\n return this.d.getMonth();\n }\n};\nvar _02Date = methods$2;\n\nvar clearMinutes = function clearMinutes(s) {\n s = s.minute(0);\n s = s.second(0);\n s = s.millisecond(1);\n return s;\n};\n\nvar methods$3 = {\n // day 0-366\n dayOfYear: function dayOfYear(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.dayOfYear(s, num);\n return s;\n } //days since newyears - jan 1st is 1, jan 2nd is 2...\n\n\n var sum = 0;\n var month = this.d.getMonth();\n var tmp; //count the num days in each month\n\n for (var i = 1; i <= month; i++) {\n tmp = new Date();\n tmp.setDate(1);\n tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years\n\n tmp.setHours(1);\n tmp.setMinutes(1);\n tmp.setMonth(i);\n tmp.setHours(-2); //the last day of the month\n\n sum += tmp.getDate();\n }\n\n return sum + this.d.getDate();\n },\n //since the start of the year\n week: function week(num) {\n // week-setter\n if (num !== undefined) {\n var s = this.clone();\n s = s.month(0);\n s = s.date(1);\n s = s.day('monday');\n s = clearMinutes(s); //don't go into last-year\n\n if (s.monthName() === 'december') {\n s = s.add(1, 'week');\n }\n\n num -= 1; //1-based\n\n s = s.add(num, 'weeks');\n return s;\n } //find-out which week it is\n\n\n var tmp = this.clone();\n tmp = tmp.month(0);\n tmp = tmp.date(1);\n tmp = clearMinutes(tmp);\n tmp = tmp.day('monday'); //don't go into last-year\n\n if (tmp.monthName() === 'december') {\n tmp = tmp.add(1, 'week');\n } // is first monday the 1st?\n\n\n var toAdd = 1;\n\n if (tmp.date() === 1) {\n toAdd = 0;\n }\n\n tmp = tmp.minus(1, 'second');\n var thisOne = this.epoch; //if the week technically hasn't started yet\n\n if (tmp.epoch > thisOne) {\n return 1;\n } //speed it up, if we can\n\n\n var i = 0;\n var skipWeeks = this.month() * 4;\n tmp.epoch += milliseconds.week * skipWeeks;\n i += skipWeeks;\n\n for (; i < 52; i++) {\n if (tmp.epoch > thisOne) {\n return i + toAdd;\n }\n\n tmp = tmp.add(1, 'week');\n }\n\n return 52;\n },\n //'january'\n monthName: function monthName(input) {\n if (input === undefined) {\n return months[\"long\"]()[this.month()];\n }\n\n var s = this.clone();\n s = s.month(input);\n return s;\n },\n //q1, q2, q3, q4\n quarter: function quarter(num) {\n if (num !== undefined) {\n if (typeof num === 'string') {\n num = num.replace(/^q/i, '');\n num = parseInt(num, 10);\n }\n\n if (quarters[num]) {\n var s = this.clone();\n var _month = quarters[num][0];\n s = s.month(_month);\n s = s.date(1);\n s = s.startOf('day');\n return s;\n }\n }\n\n var month = this.d.getMonth();\n\n for (var i = 1; i < quarters.length; i++) {\n if (month < quarters[i][0]) {\n return i - 1;\n }\n }\n\n return 4;\n },\n //spring, summer, winter, fall\n season: function season(input) {\n var hem = 'north';\n\n if (this.hemisphere() === 'South') {\n hem = 'south';\n }\n\n if (input !== undefined) {\n var s = this.clone();\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (input === seasons[hem][i][0]) {\n s = s.month(seasons[hem][i][1]);\n s = s.date(1);\n s = s.startOf('day');\n }\n }\n\n return s;\n }\n\n var month = this.d.getMonth();\n\n for (var _i = 0; _i < seasons[hem].length - 1; _i++) {\n if (month >= seasons[hem][_i][1] && month < seasons[hem][_i + 1][1]) {\n return seasons[hem][_i][0];\n }\n }\n\n return 'winter';\n },\n //the year number\n year: function year(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.year(s, num);\n return s;\n }\n\n return this.d.getFullYear();\n },\n //bc/ad years\n era: function era(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase(); //TODO: there is no year-0AD i think. may have off-by-1 error here\n\n var year = s.d.getFullYear(); //make '1992' into 1992bc..\n\n if (str === 'bc' && year > 0) {\n s.epoch = set.year(s, year * -1);\n } //make '1992bc' into '1992'\n\n\n if (str === 'ad' && year < 0) {\n s.epoch = set.year(s, year * -1);\n }\n\n return s;\n }\n\n if (this.d.getFullYear() < 0) {\n return 'BC';\n }\n\n return 'AD';\n },\n // 2019 -> 2010\n decade: function decade(input) {\n if (input !== undefined) {\n input = String(input);\n input = input.replace(/([0-9])'?s$/, '$1'); //1950's\n\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n if (!input) {\n console.warn('Spacetime: Invalid decade input');\n return this;\n } // assume 20th century?? for '70s'.\n\n\n if (input.length === 2 && /[0-9][0-9]/.test(input)) {\n input = '19' + input;\n }\n\n var year = Number(input);\n\n if (isNaN(year)) {\n return this;\n } // round it down to the decade\n\n\n year = Math.floor(year / 10) * 10;\n return this.year(year); //.startOf('decade')\n }\n\n return this.startOf('decade').year();\n },\n // 1950 -> 19+1\n century: function century(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = input.replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i, function (a, b, c) {\n if (c.match(/b\\.?c\\.?/i)) {\n b = '-' + b;\n }\n\n return b;\n });\n input = input.replace(/c$/, ''); //20thC\n }\n\n var year = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid century input');\n return this;\n } // there is no century 0\n\n\n if (year === 0) {\n year = 1;\n }\n\n if (year >= 0) {\n year = (year - 1) * 100;\n } else {\n year = (year + 1) * 100;\n }\n\n return this.year(year);\n } // century getter\n\n\n var num = this.startOf('century').year();\n num = Math.floor(num / 100);\n\n if (num < 0) {\n return num - 1;\n }\n\n return num + 1;\n },\n // 2019 -> 2+1\n millenium: function millenium(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid millenium input');\n return this;\n }\n }\n\n if (input > 0) {\n input -= 1;\n }\n\n var year = input * 1000; // there is no year 0\n\n if (year === 0) {\n year = 1;\n }\n\n return this.year(year);\n } // get the current millenium\n\n\n var num = Math.floor(this.year() / 1000);\n\n if (num >= 0) {\n num += 1;\n }\n\n return num;\n }\n};\nvar _03Year = methods$3;\n\nvar methods$4 = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\nmethods$4.milliseconds = methods$4.millisecond;\nmethods$4.seconds = methods$4.second;\nmethods$4.minutes = methods$4.minute;\nmethods$4.hours = methods$4.hour;\nmethods$4.hour24 = methods$4.hour;\nmethods$4.h12 = methods$4.hour12;\nmethods$4.h24 = methods$4.hour24;\nmethods$4.days = methods$4.day;\n\nvar addMethods = function addMethods(Space) {\n //hook the methods into prototype\n Object.keys(methods$4).forEach(function (k) {\n Space.prototype[k] = methods$4[k];\n });\n};\n\nvar query = addMethods;\n\nvar isLeapYear$2 = fns.isLeapYear;\n\nvar getMonthLength = function getMonthLength(month, year) {\n if (month === 1 && isLeapYear$2(year)) {\n return 29;\n }\n\n return monthLengths_1[month];\n}; //month is the one thing we 'model/compute'\n//- because ms-shifting can be off by enough\n\n\nvar rollMonth = function rollMonth(want, old) {\n //increment year\n if (want.month > 0) {\n var years = parseInt(want.month / 12, 10);\n want.year = old.year() + years;\n want.month = want.month % 12;\n } else if (want.month < 0) {\n //decrement year\n var _years = Math.floor(Math.abs(want.month) / 13, 10);\n\n _years = Math.abs(_years) + 1;\n want.year = old.year() - _years; //ignore extras\n\n want.month = want.month % 12;\n want.month = want.month + 12;\n\n if (want.month === 12) {\n want.month = 0;\n }\n }\n\n return want;\n}; // briefly support day=-2 (this does not need to be perfect.)\n\n\nvar rollDaysDown = function rollDaysDown(want, old, sum) {\n want.year = old.year();\n want.month = old.month();\n var date = old.date();\n want.date = date - Math.abs(sum);\n\n while (want.date < 1) {\n want.month -= 1;\n\n if (want.month < 0) {\n want.month = 11;\n want.year -= 1;\n }\n\n var max = getMonthLength(want.month, want.year);\n want.date += max;\n }\n\n return want;\n}; // briefly support day=33 (this does not need to be perfect.)\n\n\nvar rollDaysUp = function rollDaysUp(want, old, sum) {\n var year = old.year();\n var month = old.month();\n var max = getMonthLength(month, year);\n\n while (sum > max) {\n sum -= max;\n month += 1;\n\n if (month >= 12) {\n month -= 12;\n year += 1;\n }\n\n max = getMonthLength(month, year);\n }\n\n want.month = month;\n want.date = sum;\n return want;\n};\n\nvar _model = {\n months: rollMonth,\n days: rollDaysUp,\n daysBack: rollDaysDown\n};\n\n// but briefly:\n// millisecond-math, and some post-processing covers most-things\n// we 'model' the calendar here only a little bit\n// and that usually works-out...\n\nvar order$1 = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\nvar keep = {\n second: order$1.slice(0, 1),\n minute: order$1.slice(0, 2),\n quarterhour: order$1.slice(0, 2),\n hour: order$1.slice(0, 3),\n date: order$1.slice(0, 4),\n month: order$1.slice(0, 4),\n quarter: order$1.slice(0, 4),\n season: order$1.slice(0, 4),\n year: order$1,\n decade: order$1,\n century: order$1\n};\nkeep.week = keep.hour;\nkeep.season = keep.date;\nkeep.quarter = keep.date; // Units need to be dst adjuested\n\nvar dstAwareUnits = {\n year: true,\n quarter: true,\n season: true,\n month: true,\n week: true,\n day: true\n};\nvar keepDate = {\n month: true,\n quarter: true,\n season: true,\n year: true\n};\n\nvar addMethods$1 = function addMethods(SpaceTime) {\n SpaceTime.prototype.add = function (num, unit) {\n var s = this.clone();\n\n if (!unit || num === 0) {\n return s; //don't bother\n }\n\n var old = this.clone();\n unit = fns.normalize(unit); //move forward by the estimated milliseconds (rough)\n\n if (milliseconds[unit]) {\n s.epoch += milliseconds[unit] * num;\n } else if (unit === 'week') {\n s.epoch += milliseconds.day * (num * 7);\n } else if (unit === 'quarter' || unit === 'season') {\n s.epoch += milliseconds.month * (num * 4);\n } else if (unit === 'season') {\n s.epoch += milliseconds.month * (num * 4);\n } else if (unit === 'quarterhour') {\n s.epoch += milliseconds.minute * 15 * num;\n } //now ensure our milliseconds/etc are in-line\n\n\n var want = {};\n\n if (keep[unit]) {\n keep[unit].forEach(function (u) {\n want[u] = old[u]();\n });\n }\n\n if (dstAwareUnits[unit]) {\n var diff = old.timezone().current.offset - s.timezone().current.offset;\n s.epoch += diff * 3600 * 1000;\n } //ensure month/year has ticked-over\n\n\n if (unit === 'month') {\n want.month = old.month() + num; //month is the one unit we 'model' directly\n\n want = _model.months(want, old);\n } //support coercing a week, too\n\n\n if (unit === 'week') {\n var sum = old.date() + num * 7;\n\n if (sum <= 28 && sum > 1) {\n want.date = sum;\n }\n } //support 25-hour day-changes on dst-changes\n else if (unit === 'date') {\n if (num < 0) {\n want = _model.daysBack(want, old, num);\n } else {\n //specify a naive date number, if it's easy to do...\n var _sum = old.date() + num; // ok, model this one too\n\n\n want = _model.days(want, old, _sum);\n } //manually punt it if we haven't moved at all..\n\n\n if (num !== 0 && old.isSame(s, 'day')) {\n want.date = old.date() + num;\n }\n } //ensure year has changed (leap-years)\n else if (unit === 'year' && s.year() === old.year()) {\n s.epoch += milliseconds.week;\n } //these are easier\n else if (unit === 'decade') {\n want.year = s.year() + 10;\n } else if (unit === 'century') {\n want.year = s.year() + 100;\n } //keep current date, unless the month doesn't have it.\n\n\n if (keepDate[unit]) {\n var max = monthLengths_1[want.month];\n want.date = old.date();\n\n if (want.date > max) {\n want.date = max;\n }\n }\n\n walk_1(s, want);\n return s;\n }; //subtract is only add *-1\n\n\n SpaceTime.prototype.subtract = function (num, unit) {\n var s = this.clone();\n return s.add(num * -1, unit);\n }; //add aliases\n\n\n SpaceTime.prototype.minus = SpaceTime.prototype.subtract;\n SpaceTime.prototype.plus = SpaceTime.prototype.add;\n};\n\nvar add = addMethods$1;\n\n//make a string, for easy comparison between dates\nvar print = {\n millisecond: function millisecond(s) {\n return s.epoch;\n },\n second: function second(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-');\n },\n minute: function minute(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-');\n },\n hour: function hour(s) {\n return [s.year(), s.month(), s.date(), s.hour()].join('-');\n },\n day: function day(s) {\n return [s.year(), s.month(), s.date()].join('-');\n },\n week: function week(s) {\n return [s.year(), s.week()].join('-');\n },\n month: function month(s) {\n return [s.year(), s.month()].join('-');\n },\n quarter: function quarter(s) {\n return [s.year(), s.quarter()].join('-');\n },\n year: function year(s) {\n return s.year();\n }\n};\nprint.date = print.day;\n\nvar addMethods$2 = function addMethods(SpaceTime) {\n SpaceTime.prototype.isSame = function (b, unit) {\n var a = this;\n\n if (!unit) {\n return null;\n }\n\n if (typeof b === 'string' || typeof b === 'number') {\n b = new SpaceTime(b, this.timezone.name);\n } //support 'seconds' aswell as 'second'\n\n\n unit = unit.replace(/s$/, '');\n\n if (print[unit]) {\n return print[unit](a) === print[unit](b);\n }\n\n return null;\n };\n};\n\nvar same = addMethods$2;\n\nvar addMethods$3 = function addMethods(SpaceTime) {\n var methods = {\n isAfter: function isAfter(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch > epoch;\n },\n isBefore: function isBefore(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch < epoch;\n },\n isEqual: function isEqual(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch === epoch;\n },\n isBetween: function isBetween(start, end) {\n var isInclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n start = fns.beADate(start, this);\n end = fns.beADate(end, this);\n var startEpoch = fns.getEpoch(start);\n\n if (startEpoch === null) {\n return null;\n }\n\n var endEpoch = fns.getEpoch(end);\n\n if (endEpoch === null) {\n return null;\n }\n\n if (isInclusive) {\n return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end);\n }\n\n return startEpoch < this.epoch && this.epoch < endEpoch;\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar compare = addMethods$3;\n\nvar addMethods$4 = function addMethods(SpaceTime) {\n var methods = {\n i18n: function i18n(data) {\n //change the day names\n if (fns.isObject(data.days)) {\n days.set(data.days);\n } //change the month names\n\n\n if (fns.isObject(data.months)) {\n months.set(data.months);\n }\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar i18n = addMethods$4;\n\nvar timezones = unpack; //fake timezone-support, for fakers (es5 class)\n\nvar SpaceTime = function SpaceTime(input$1, tz) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n //the holy moment\n this.epoch = null; //the shift for the given timezone\n\n this.tz = find(tz, timezones); //whether to output warnings to console\n\n this.silent = options.silent || true; // favour british interpretation of 02/02/2018, etc\n\n this.british = options.dmy || options.british; //does the week start on sunday, or monday:\n\n this._weekStart = 1; //default to monday\n\n if (options.weekStart !== undefined) {\n this._weekStart = options.weekStart;\n } // the reference today date object, (for testing)\n\n\n this._today = {};\n\n if (options.today !== undefined) {\n this._today = options.today;\n } //add getter/setters\n\n\n Object.defineProperty(this, 'd', {\n //return a js date object\n get: function get() {\n var offset = quick(this); //every computer is somewhere- get this computer's built-in offset\n\n var bias = new Date(this.epoch).getTimezoneOffset() || 0; //movement\n\n var shift = bias + offset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n //remove this computer's offset\n\n var epoch = this.epoch + shift;\n var d = new Date(epoch);\n return d;\n }\n }); //add this data on the object, to allow adding new timezones\n\n Object.defineProperty(this, 'timezones', {\n get: function get() {\n return timezones;\n },\n set: function set(obj) {\n timezones = obj;\n return obj;\n }\n }); //parse the various formats\n\n var tmp = input(this, input$1, tz);\n this.epoch = tmp.epoch;\n}; //(add instance methods to prototype)\n\n\nObject.keys(methods_1).forEach(function (k) {\n SpaceTime.prototype[k] = methods_1[k];\n}); // ¯\\_(ツ)_/¯\n\nSpaceTime.prototype.clone = function () {\n return new SpaceTime(this.epoch, this.tz, {\n silent: this.silent,\n weekStart: this._weekStart,\n today: this._today\n });\n}; //return native date object at the same epoch\n\n\nSpaceTime.prototype.toLocalDate = function () {\n return new Date(this.epoch);\n}; //append more methods\n\n\nquery(SpaceTime);\nadd(SpaceTime);\nsame(SpaceTime);\ncompare(SpaceTime);\ni18n(SpaceTime);\nvar spacetime = SpaceTime;\n\nvar whereIts = function whereIts(a, b) {\n var start = new spacetime(null);\n var end = new spacetime(null);\n start = start.time(a); //if b is undefined, use as 'within one hour'\n\n if (b) {\n end = end.time(b);\n } else {\n end = start.add(59, 'minutes');\n }\n\n var startHour = start.hour();\n var endHour = end.hour();\n var tzs = Object.keys(start.timezones).filter(function (tz) {\n if (tz.indexOf('/') === -1) {\n return false;\n }\n\n var m = new spacetime(null, tz);\n var hour = m.hour(); //do 'calendar-compare' not real-time-compare\n\n if (hour >= startHour && hour <= endHour) {\n //test minutes too, if applicable\n if (hour === startHour && m.minute() < start.minute()) {\n return false;\n }\n\n if (hour === endHour && m.minute() > end.minute()) {\n return false;\n }\n\n return true;\n }\n\n return false;\n });\n return tzs;\n};\n\nvar whereIts_1 = whereIts;\n\nvar _version = '6.6.3';\n\nvar main$1 = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n}; // set all properties of a given 'today' object\n\n\nvar setToday = function setToday(s) {\n var today = s._today || {};\n Object.keys(today).forEach(function (k) {\n s = s[k](today[k]);\n });\n return s;\n}; //some helper functions on the main method\n\n\nmain$1.now = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s;\n};\n\nmain$1.today = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.startOf('day');\n};\n\nmain$1.tomorrow = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.add(1, 'day').startOf('day');\n};\n\nmain$1.yesterday = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.subtract(1, 'day').startOf('day');\n};\n\nmain$1.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n}; //find tz by time\n\n\nmain$1.whereIts = whereIts_1;\nmain$1.version = _version; //aliases:\n\nmain$1.plugin = main$1.extend;\nvar src = main$1;\n\nexport default src;\n","import spacetime from 'spacetime';\n\nconst clockContainer = document.querySelector('#clock p');\n\nconst getTime = () => {\n const d = spacetime(new Date(), 'Europe/Zurich');\n return d.format('{hour-24-pad}:{minute-pad}:{second-pad}');\n};\n\nconst setTime = () => {\n clockContainer.innerHTML = `<span class=\"time\">${getTime()}</span> (CEST)`;\n};\n\nconst clock = () => {\n if (clockContainer)\n {\n setTime();\n setInterval(setTime, 1000);\n }\n};\n\nexport default clock;\n","const banner = document.getElementById('full-banner');\nconst cdTime = banner?.querySelector('.cd-time');\n\nconst targetDate = new Date('Wed Sep 18 2020 10:30:00 GMT+0200 (Central European Summer Time)');\n\n\nfunction countdownTimer() {\n const difference = +new Date(targetDate) - +new Date();\n let remaining = '';\n\n if (difference > 0) {\n const parts = {\n days: Math.floor(difference / (1000 * 60 * 60 * 24)),\n hours: Math.floor((difference / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((difference / 1000 / 60) % 60),\n seconds: Math.floor((difference / 1000) % 60),\n };\n\n remaining = Object.keys(parts)\n .map((part) => {\n if (!parts[part]) return;\n return `${parts[part]} ${part}`;\n })\n .join(' ');\n\n cdTime.innerText = remaining;\n } else {\n banner.querySelector('h1').innerHTML = `ReclaimFutures is now <span class=\"now-live\">[LIVE]</span> <a href=\"/watch\">→ click here to watch</a>`;\n }\n}\n\nexport default countdownTimer;\n","import scrollHandler from './modules/scrollHandler';\nimport clock from './modules/clock';\nimport countdownTimer from './modules/countdown';\n\nconst app = () => {\n scrollHandler();\n clock();\n \n countdownTimer();\n setInterval(countdownTimer, 1000);\n};\n\napp();\n","var OVERLAY_ID = '__parcel__error__overlay__';\n\nvar OldModule = module.bundle.Module;\n\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData,\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n\n module.bundle.hotData = null;\n}\n\nmodule.bundle.Module = Module;\nvar checkedAssets, assetsToAccept;\n\nvar parent = module.bundle.parent;\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = process.env.HMR_HOSTNAME || location.hostname;\n var protocol = location.protocol === 'https:' ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + ':' + process.env.HMR_PORT + '/');\n ws.onmessage = function(event) {\n checkedAssets = {};\n assetsToAccept = [];\n\n var data = JSON.parse(event.data);\n\n if (data.type === 'update') {\n var handled = false;\n data.assets.forEach(function(asset) {\n if (!asset.isNew) {\n var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);\n if (didAccept) {\n handled = true;\n }\n }\n });\n\n // Enable HMR for CSS by default.\n handled = handled || data.assets.every(function(asset) {\n return asset.type === 'css' && asset.generated.js;\n });\n\n if (handled) {\n console.clear();\n\n data.assets.forEach(function (asset) {\n hmrApply(global.parcelRequire, asset);\n });\n\n assetsToAccept.forEach(function (v) {\n hmrAcceptRun(v[0], v[1]);\n });\n } else if (location.reload) { // `location` global exists in a web worker context but lacks `.reload()` function.\n location.reload();\n }\n }\n\n if (data.type === 'reload') {\n ws.close();\n ws.onclose = function () {\n location.reload();\n }\n }\n\n if (data.type === 'error-resolved') {\n console.log('[parcel] ✨ Error resolved');\n\n removeErrorOverlay();\n }\n\n if (data.type === 'error') {\n console.error('[parcel] 🚨 ' + data.error.message + '\\n' + data.error.stack);\n\n removeErrorOverlay();\n\n var overlay = createErrorOverlay(data);\n document.body.appendChild(overlay);\n }\n };\n}\n\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n if (overlay) {\n overlay.remove();\n }\n}\n\nfunction createErrorOverlay(data) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n\n // html encode message and stack trace\n var message = document.createElement('div');\n var stackTrace = document.createElement('pre');\n message.innerText = data.error.message;\n stackTrace.innerText = data.error.stack;\n\n overlay.innerHTML = (\n '<div style=\"background: black; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; opacity: 0.85; font-family: Menlo, Consolas, monospace; z-index: 9999;\">' +\n '<span style=\"background: red; padding: 2px 4px; border-radius: 2px;\">ERROR</span>' +\n '<span style=\"top: 2px; margin-left: 5px; position: relative;\">🚨</span>' +\n '<div style=\"font-size: 18px; font-weight: bold; margin-top: 20px;\">' + message.innerHTML + '</div>' +\n '<pre>' + stackTrace.innerHTML + '</pre>' +\n '</div>'\n );\n\n return overlay;\n\n}\n\nfunction getParents(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return [];\n }\n\n var parents = [];\n var k, d, dep;\n\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n if (dep === id || (Array.isArray(dep) && dep[dep.length - 1] === id)) {\n parents.push(k);\n }\n }\n }\n\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n\n return parents;\n}\n\nfunction hmrApply(bundle, asset) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (modules[asset.id] || !bundle.parent) {\n var fn = new Function('require', 'module', 'exports', asset.generated.js);\n asset.isNew = !modules[asset.id];\n modules[asset.id] = [fn, asset.deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n}\n\nfunction hmrAcceptCheck(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (!modules[id] && bundle.parent) {\n return hmrAcceptCheck(bundle.parent, id);\n }\n\n if (checkedAssets[id]) {\n return;\n }\n checkedAssets[id] = true;\n\n var cached = bundle.cache[id];\n\n assetsToAccept.push([bundle, id]);\n\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n return true;\n }\n\n return getParents(global.parcelRequire, id).some(function (id) {\n return hmrAcceptCheck(global.parcelRequire, id)\n });\n}\n\nfunction hmrAcceptRun(bundle, id) {\n var cached = bundle.cache[id];\n bundle.hotData = {};\n if (cached) {\n cached.hot.data = bundle.hotData;\n }\n\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData);\n });\n }\n\n delete bundle.cache[id];\n bundle(id);\n\n cached = bundle.cache[id];\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n cb();\n });\n return true;\n }\n}\n"]} |