{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-aside.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-body.js","webpack:///./node_modules/bootstrap-vue/esm/utils/locale.js","webpack:///./node_modules/bootstrap-vue/esm/constants/popper.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/click-out.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/focus-in.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/dropdown.js","webpack:///./node_modules/bootstrap-vue/esm/directives/visible/visible.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-textarea/form-textarea.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/bootstrap-vue/esm/components/sidebar/sidebar.js","webpack:///./node_modules/bootstrap-vue/esm/constants/date.js","webpack:///./node_modules/bootstrap-vue/esm/utils/date.js","webpack:///./node_modules/bootstrap-vue/esm/components/calendar/calendar.js","webpack:///./node_modules/bootstrap-vue/esm/directives/hover/hover.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-btn-label-control/bv-form-btn-label-control.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-datepicker/form-datepicker.js"],"names":["props","id","inline","novalidate","validated","BForm","extend","name","functional","render","h","_ref","data","children","class","attrs","noBody","rightAlign","tag","verticalAlign","BMedia","slots","scopedSlots","$children","slotScope","$slots","$scopedSlots","push","$aside","right","staticClass","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","BMediaAside","align","concat","BMediaBody","RTL_LANGS","map","locale","toLowerCase","isLocaleRTL","parts","replace","split","locale1","slice","join","locale2","PLACEMENT_TOP_START","PLACEMENT_TOP_END","PLACEMENT_BOTTOM_START","PLACEMENT_BOTTOM_END","PLACEMENT_RIGHT_START","PLACEMENT_LEFT_START","clickOutMixin","listenForClickOut","watch","newValue","oldValue","this","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","mounted","document","beforeDestroy","methods","isClickOut","event","$el","target","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","apply","_objectSpread","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_FORM_CHILD","SELECTOR_ITEM","selector","els","boundary","disabled","dropleft","dropright","dropup","noFlip","offset","popperOpts","dropdownMixin","mixins","provide","bvDropdown","inject","bvNavbar","default","visible","visibleChangePrevented","computed","inNavbar","toggler","toggle","$refs","directionClass","boundaryClass","eventName","bvEvent","cancelable","vueTarget","menu","relatedTarget","componentId","safeId","emitEvent","defaultPrevented","$off","focusToggler","showMenu","hideMenu","created","$_popper","$_hideTimeout","deactivated","whileOpenListen","destroyPopper","clearHideTimeout","type","emitOnRoot","$emit","_this","warn","el","createPopper","$nextTick","focusMenu","element","getPopperConfig","destroy","updatePopper","scheduleUpdate","_unused","clearTimeout","placement","popperConfig","modifiers","flip","enabled","boundariesElement","preventOverflow","isOpen","method","$root","rootCloseListener","vm","show","_this2","hide","refocus","undefined","$once","_event","keyCode","indexOf","onMousedown","propagation","onKeydown","onEsc","focusNext","onSplitClick","hideHandler","_this3","setTimeout","up","_this4","items","getItems","index","focusItem","find","_this5","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","_createClass","protoProps","staticProps","prototype","OBSERVER_PROP_NAME","VisibilityObserver","options","vnode","callback","margin","once","observer","doneOnce","createObserver","stop","IntersectionObserver","handler","bind","root","rootMargin","threshold","context","observe","entries","entry","isIntersecting","Boolean","intersectionRatio","disconnect","mod","test","_prevModifiers","_ref2","unbind","VBVisible","componentUpdated","maxRows","noAutoShrink","noResize","rows","wrap","BFormTextarea","directives","listeners","heightInPx","computedStyle","styles","resize","computedRows","height","overflowY","computedMinRows","math","computedMaxRows","computedAttrs","required","form","placeholder","autocomplete","readonly","plaintext","computedAriaInvalid","computedListeners","bvListeners","input","onInput","change","onChange","blur","onBlur","localValue","setHeight","visibleCallback","computeHeight","$isServer","lineHeight","border","borderTopWidth","borderBottomWidth","padding","paddingTop","paddingBottom","minHeight","oldHeight","scrollHeight","contentRows","computedClass","style","domProps","on","ref","$","toAbsoluteIndex","toInteger","toLength","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","max","Math","min","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","proto","forced","splice","start","deleteCount","insertCount","actualDeleteCount","A","k","from","to","O","len","actualStart","argumentsLength","_watch","CLASS_NAME","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","_makeModelMixin","defaultValue","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","ariaLabel","ariaLabelledby","backdrop","backdropVariant","bgVariant","bodyClass","closeLabel","footerClass","headerClass","lazy","noCloseOnBackdrop","noCloseOnEsc","noCloseOnRouteChange","noEnforceFocus","noHeader","noHeaderClose","noSlide","shadow","sidebarClass","textVariant","title","width","zIndex","renderHeaderTitle","ctx","normalizeSlot","renderHeaderClose","click","renderHeader","$content","$title","$close","renderBody","renderFooter","$footer","renderContent","$header","renderBackdrop","localShow","onBackdropClick","BSidebar","inheritAttrs","transitionProps","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","hasTitle","hasNormalizedSlot","titleId","bvAttrs","tabindex","role","emitState","fullPath","$_returnFocusEl","listenOnRoot","handleToggle","handleSync","activated","emitSync","state","onTopTrapFocus","tabables","content","enforceFocus","reverse","onBottomTrapFocus","onBeforeEnter","body","onAfterEnter","onAfterLeave","$sidebar","beforeEnter","afterEnter","afterLeave","$backdrop","noFade","$tabTrapTop","$tabTrapBottom","focus","keydown","CALENDAR_GREGORY","CALENDAR_LONG","CALENDAR_NARROW","CALENDAR_SHORT","DATE_FORMAT_2_DIGIT","DATE_FORMAT_NUMERIC","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","call","constructor","Array","arr2","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","isArray","_construct","Parent","args","Class","_isNativeReflectConstruct","Reflect","construct","a","Function","_setPrototypeOf","sham","Proxy","Date","e","p","setPrototypeOf","__proto__","createDate","_len","_key","date","trim","_date$split$map","v","_date$split$map2","year","month","day","getFullYear","getMonth","getDate","formatYMD","locales","calendar","identity","fmt","Intl","DateTimeFormat","resolvedOptions","createDateFormatter","dtf","format","datesEqual","date1","date2","firstDateOfMonth","setDate","lastDateOfMonth","setMonth","addYears","numberOfYears","setFullYear","oneMonthAgo","oneMonthAhead","oneYearAgo","oneYearAhead","oneDecadeAgo","oneDecadeAhead","ariaControls","block","dateDisabledFn","dateFormatOptions","weekday","dateInfoFn","direction","hidden","hideHeader","initialDate","labelCalendar","labelCurrentMonth","labelHelp","labelNav","labelNextDecade","labelNextMonth","labelNextYear","labelNoDateSelected","labelPrevDecade","labelPrevMonth","labelPrevYear","labelSelected","labelToday","navButtonVariant","noHighlightToday","noKeyNav","roleDescription","selectedVariant","showDecadeNav","startWeekday","todayVariant","valueAsDate","weekdayHeaderFormat","array","BCalendar","selected","selectedYMD","activeYMD","getToday","gridHasFocus","isLive","valueId","widgetId","navId","gridId","gridCaptionId","gridHelpId","activeId","selectedDate","activeDate","computedMin","computedMax","computedWeekStarts","computedLocale","computedDateDisabledFn","computedDateInfoFn","calendarLocale","calendarYear","calendarMonth","calendarFirstDay","calendarDaysInMonth","computedVariant","computedTodayVariant","computedNavButtonVariant","isRTL","dir","selectedFormatted","formatDateString","activeFormatted","dateDisabled","rtl","dateOutOfRange","rangeFn","ymd","hour","minute","second","formatYearMonth","formatWeekdayName","formatWeekdayNameShort","formatDay","nf","NumberFormat","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","prevDecadeDisabled","prevYearDisabled","prevMonthDisabled","thisMonthDisabled","nextMonthDisabled","nextYearDisabled","nextDecadeDisabled","matrix","firstDay","daysInMonth","startIndex","getDay","weekOffset","currentDay","week","j","dayYMD","dayDisabled","dateInfo","label","isThisMonth","isDisabled","info","calendarHeadings","d","text","old","newYMD","oldYMD","constrainDate","setLive","grid","emitSelected","setGridFocusFlag","onKeydownWrapper","altKey","ctrlKey","checkDate","constrainedToday","onKeydownGrid","onClickDay","clickedDate","gotoPrevDecade","gotoPrevYear","gotoPrevMonth","gotoCurrentMonth","gotoNextMonth","gotoNextYear","gotoNextDecade","onHeaderClick","_this6","hideDecadeNav","todayYMD","highlightToday","for","labelSelectedDate","navScope","navProps","shiftV","navPrevProps","flipH","navNextProps","$prevDecadeIcon","$prevYearIcon","$prevMonthIcon","$thisMonthIcon","$nextMonthIcon","$nextYearIcon","$nextDecadeIcon","makeNavBtn","btnDisabled","shortcut","$nav","$gridCaption","$gridWeekDays","idx","$gridBody","$cells","dIndex","_class","isSelected","isActive","isToday","idCell","$btn","active","pointerEvents","$gridHelp","$grid","$slot","$widget","lang","PROP","MOUSEENTER","MOUSELEAVE","createListener","listener","fn","_ref$value","hasListener","handlerChanged","VBHover","dropdown","buttonOnly","buttonVariant","formattedValue","menuClass","BVFormBtnLabelControl","isHovered","hasFocus","idButton","idLabel","idMenu","idWrapper","computedDir","setFocus","handleHover","hovered","size","invalid","btnScope","opened","$button","mousedown","scale","$hidden","$menu","$label","stateClass","sizeFormClass","preventDefault","calendarProps","formBtnLabelControlProps","calendarWidth","closeButton","closeButtonVariant","dark","labelCloseButton","labelResetButton","labelTodayButton","noCloseOnSelect","resetButton","resetButtonVariant","resetValue","todayButton","todayButtonVariant","BFormDatepicker","localYMD","isVisible","localLocale","calendarYM","computedLang","computedResetValue","control","setAndClose","onSelected","onContext","onTodayButton","onResetButton","onCloseButton","onShow","onShown","onHidden","defaultButtonFn","$createElement","$props","variant","_label","_label2","$calendar","shown"],"mappings":"kHAAA,kGAKWA,EAAQ,eAAsB,CACvCC,GAAI,eAAS,QACbC,OAAQ,eAAS,QAAmB,GACpCC,WAAY,eAAS,QAAmB,GACxCC,UAAW,eAAS,QAAmB,IACtC,QAGQC,EAAqB,aAAIC,OAAO,CACzCC,KAAM,OACNC,YAAY,EACZR,MAAOA,EACPS,OAAQ,SAAgBC,EAAGC,GACzB,IAAIX,EAAQW,EAAKX,MACbY,EAAOD,EAAKC,KACZC,EAAWF,EAAKE,SACpB,OAAOH,EAAE,OAAQ,eAAUE,EAAM,CAC/BE,MAAO,CACL,cAAed,EAAME,OACrB,gBAAiBF,EAAMI,WAEzBW,MAAO,CACLd,GAAID,EAAMC,GACVE,WAAYH,EAAMG,cAElBU,O,oCC9BR,kJASWb,EAAQ,eAAsB,CACvCgB,OAAQ,eAAS,QAAmB,GACpCC,WAAY,eAAS,QAAmB,GACxCC,IAAK,eAAS,OAAkB,OAChCC,cAAe,eAAS,OAAkB,QACzC,QAGQC,EAAsB,aAAId,OAAO,CAC1CC,KAAM,OACNC,YAAY,EACZR,MAAOA,EACPS,OAAQ,SAAgBC,EAAGC,GACzB,IAAIX,EAAQW,EAAKX,MACbY,EAAOD,EAAKC,KACZS,EAAQV,EAAKU,MACbC,EAAcX,EAAKW,YACnBT,EAAWF,EAAKE,SAChBG,EAAShB,EAAMgB,OACfC,EAAajB,EAAMiB,WACnBE,EAAgBnB,EAAMmB,cACtBI,EAAYP,EAASH,EAAW,GAEpC,IAAKG,EAAQ,CACX,IAAIQ,EAAY,GACZC,EAASJ,IACTK,EAAeJ,GAAe,GAClCC,EAAUI,KAAKjB,EAAE,OAAY,eAAc,OAAmBc,EAAWE,EAAcD,KACvF,IAAIG,EAAS,eAAc,OAAiBJ,EAAWE,EAAcD,GAEjEG,GACFL,EAAUN,EAAa,OAAS,WAAWP,EAAE,OAAa,CACxDV,MAAO,CACL6B,MAAOZ,EACPE,cAAeA,IAEhBS,IAIP,OAAOlB,EAAEV,EAAMkB,IAAK,eAAUN,EAAM,CAClCkB,YAAa,UACXP,O,oCCnDR,2GAASQ,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAOpM,IAAIhC,EAAQ,eAAsB,CACvC6B,MAAO,eAAS,QAAmB,GACnCX,IAAK,eAAS,OAAkB,OAChCC,cAAe,eAAS,OAAkB,QACzC,SAGQqB,EAA2B,aAAIlC,OAAO,CAC/CC,KAAM,QACNC,YAAY,EACZR,MAAOA,EACPS,OAAQ,SAAgBC,EAAGC,GACzB,IAAIX,EAAQW,EAAKX,MACbY,EAAOD,EAAKC,KACZC,EAAWF,EAAKE,SAChBM,EAAgBnB,EAAMmB,cACtBsB,EAA0B,QAAlBtB,EAA0B,QAA4B,WAAlBA,EAA6B,MAE7EA,EACA,OAAOT,EAAEV,EAAMkB,IAAK,eAAUN,EAAM,CAClCkB,YAAa,cACbhB,MAAOiB,EAAgB,CACrB,oBAAqB/B,EAAM6B,OAC1B,cAAca,OAAOD,GAAQA,KAC9B5B,O,oCC/BR,kGAKWb,EAAQ,eAAsB,CACvCkB,IAAK,eAAS,OAAkB,QAC/B,SAGQyB,EAA0B,aAAIrC,OAAO,CAC9CC,KAAM,QACNC,YAAY,EACZR,MAAOA,EACPS,OAAQ,SAAgBC,EAAGC,GACzB,IAAIX,EAAQW,EAAKX,MACbY,EAAOD,EAAKC,KACZC,EAAWF,EAAKE,SACpB,OAAOH,EAAEV,EAAMkB,IAAK,eAAUN,EAAM,CAClCkB,YAAa,eACXjB,O,oCCpBR,0EAKI+B,EAAY,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAMC,KAAI,SAAUC,GACpH,OAAOA,EAAOC,iBAGLC,EAAc,SAAqBF,GAE5C,IAAIG,EAAQ,eAASH,GAAQC,cAAcG,QAAQ,OAAsB,IAAIC,MAAM,KAC/EC,EAAUH,EAAMI,MAAM,EAAG,GAAGC,KAAK,KACjCC,EAAUN,EAAM,GACpB,OAAO,eAAcL,EAAWQ,IAAY,eAAcR,EAAWW,K,wKCd5DC,EAAsB,YACtBC,EAAoB,UACpBC,EAAyB,eACzBC,EAAuB,aACvBC,EAAwB,cAExBC,EAAuB,a,4GCDvBC,EAAgB,aAAIxD,OAAO,CACpCM,KAAM,WACJ,MAAO,CACLmD,mBAAmB,IAGvBC,MAAO,CACLD,kBAAmB,SAA2BE,EAAUC,GAClDD,IAAaC,IACf,eAASC,KAAKC,gBAAiBD,KAAKE,kBAAmBF,KAAKG,iBAAkB,QAE1EL,GACF,eAAQE,KAAKC,gBAAiBD,KAAKE,kBAAmBF,KAAKG,iBAAkB,WAKrFC,aAAc,WAEZJ,KAAKC,gBAAkB,KACvBD,KAAKE,kBAAoB,MAE3BG,QAAS,WACFL,KAAKC,kBACRD,KAAKC,gBAAkBK,UAGpBN,KAAKE,oBACRF,KAAKE,kBAAoB,SAGvBF,KAAKJ,mBACP,eAAQI,KAAKC,gBAAiBD,KAAKE,kBAAmBF,KAAKG,iBAAkB,SAGjFI,cAAe,WACb,eAASP,KAAKC,gBAAiBD,KAAKE,kBAAmBF,KAAKG,iBAAkB,SAEhFK,QAAS,CACPC,WAAY,SAAoBC,GAC9B,OAAQ,eAASV,KAAKW,IAAKD,EAAME,SAEnCT,iBAAkB,SAA0BO,GACtCV,KAAKa,iBAAmBb,KAAKS,WAAWC,IAC1CV,KAAKa,gBAAgBH,OC7ClBI,EAAe,aAAI3E,OAAO,CACnCM,KAAM,WACJ,MAAO,CACLsE,kBAAkB,IAGtBlB,MAAO,CACLkB,iBAAkB,SAA0BjB,EAAUC,GAChDD,IAAaC,IACf,eAASC,KAAKgB,eAAgB,UAAWhB,KAAKiB,gBAAiB,QAE3DnB,GACF,eAAQE,KAAKgB,eAAgB,UAAWhB,KAAKiB,gBAAiB,WAKtEb,aAAc,WAEZJ,KAAKgB,eAAiB,MAExBX,QAAS,WACFL,KAAKgB,iBACRhB,KAAKgB,eAAiBV,UAGpBN,KAAKe,kBACP,eAAQf,KAAKgB,eAAgB,UAAWhB,KAAKiB,gBAAiB,SAGlEV,cAAe,WACb,eAASP,KAAKgB,eAAgB,UAAWhB,KAAKiB,gBAAiB,SAEjET,QAAS,CACPS,gBAAiB,SAAyBP,GACpCV,KAAKkB,gBACPlB,KAAKkB,eAAeR,O,wBCxC5B,SAASS,EAAQC,EAAQC,GAAkB,IAAIC,EAAOtD,OAAOsD,KAAKF,GAAS,GAAIpD,OAAOuD,sBAAuB,CAAE,IAAIC,EAAUxD,OAAOuD,sBAAsBH,GAAaC,IAAgBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO1D,OAAO2D,yBAAyBP,EAAQM,GAAKxD,eAAgBoD,EAAK9D,KAAKoE,MAAMN,EAAME,GAAY,OAAOF,EAE9U,SAASO,EAAcjB,GAAU,IAAK,IAAIkB,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,GAAQA,EAAI,EAAKX,EAAQnD,OAAOiE,IAAS,GAAMC,SAAQ,SAAUpE,GAAOF,EAAgBgD,EAAQ9C,EAAKmE,EAAOnE,OAAsBE,OAAOmE,0BAA6BnE,OAAOoE,iBAAiBxB,EAAQ5C,OAAOmE,0BAA0BF,IAAmBd,EAAQnD,OAAOiE,IAASC,SAAQ,SAAUpE,GAAOE,OAAOC,eAAe2C,EAAQ9C,EAAKE,OAAO2D,yBAAyBM,EAAQnE,OAAe,OAAO8C,EAE7gB,SAAShD,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAsB3M,IAAIwE,EAAwB,eAAiB,OAAe,QACxDC,EAAyB,eAAiB,OAAe,QAEzDC,EAAsB,iBACtBC,EAAgB,CAAC,iBAAkB,oBAAoB9D,KAAI,SAAU+D,GACvE,MAAO,GAAGlE,OAAOkE,EAAU,sCAC1BtD,KAAK,MAGJ,EAAiB,SAAwBuD,GAC3C,OAAQA,GAAO,IAAIjB,OAAO,SAIjB,EAAQ,eAAsB,eAASI,EAAcA,EAAc,GAAI/F,EAAA,MAAU,GAAI,CAG9F6G,SAAU,eAAS,CAAC,OAAa,QAAmB,gBACpDC,SAAU,eAAS,QAAmB,GAEtCC,SAAU,eAAS,QAAmB,GAEtCC,UAAW,eAAS,QAAmB,GAEvCC,OAAQ,eAAS,QAAmB,GAEpCC,OAAQ,eAAS,QAAmB,GAGpCC,OAAQ,eAAS,OAAyB,GAC1CC,WAAY,eAAS,OAAkB,IAEvCxF,MAAO,eAAS,QAAmB,MAChC,QAGMyF,EAAgB,aAAIhH,OAAO,CACpCiH,OAAQ,CAACtH,EAAA,KAAS,OAAmB6D,EAAemB,GACpDuC,QAAS,WACP,MAAO,CACLC,WAAYtD,OAGhBuD,OAAQ,CACNC,SAAU,CACRC,QAAS,OAGb5H,MAAO,EACPY,KAAM,WACJ,MAAO,CACLiH,SAAS,EACTC,wBAAwB,IAG5BC,SAAU,CACRC,SAAU,WACR,OAAQ,eAAO7D,KAAKwD,WAEtBM,QAAS,WACP,IAAIC,EAAS/D,KAAKgE,MAAMD,OACxB,OAAOA,EAASA,EAAOpD,KAAOoD,EAAS,MAEzCE,eAAgB,WACd,OAAIjE,KAAK+C,OACA,SACE/C,KAAK8C,UACP,YACE9C,KAAK6C,SACP,WAGF,IAETqB,cAAe,WAIb,MAAyB,iBAAlBlE,KAAK2C,UAAgC3C,KAAK6D,SAA+B,GAApB,oBAGhEhE,MAAO,CACL6D,QAAS,SAAiB5D,EAAUC,GAClC,GAAIC,KAAK2D,uBACP3D,KAAK2D,wBAAyB,OAIhC,GAAI7D,IAAaC,EAAU,CACzB,IAAIoE,EAAYrE,EAAW,OAAkB,OACzCsE,EAAU,IAAI,OAAQD,EAAW,CACnCE,YAAY,EACZC,UAAWtE,KACXY,OAAQZ,KAAKgE,MAAMO,KACnBC,cAAe,KACfC,YAAazE,KAAK0E,OAAS1E,KAAK0E,SAAW1E,KAAKlE,IAAM,OAIxD,GAFAkE,KAAK2E,UAAUP,GAEXA,EAAQQ,iBAMV,OAJA5E,KAAK2D,wBAAyB,EAC9B3D,KAAK0D,QAAU3D,OAEfC,KAAK6E,KAAK,OAAmB7E,KAAK8E,cAIhChF,EACFE,KAAK+E,WAEL/E,KAAKgF,aAIXpC,SAAU,SAAkB9C,EAAUC,GAChCD,IAAaC,GAAYD,GAAYE,KAAK0D,UAE5C1D,KAAK0D,SAAU,KAIrBuB,QAAS,WAEPjF,KAAKkF,SAAW,KAChBlF,KAAKmF,cAAgB,MAIvBC,YAAa,WAEXpF,KAAK0D,SAAU,EACf1D,KAAKqF,iBAAgB,GACrBrF,KAAKsF,iBAEP/E,cAAe,WACbP,KAAK0D,SAAU,EACf1D,KAAKqF,iBAAgB,GACrBrF,KAAKsF,gBACLtF,KAAKuF,oBAEP/E,QAAS,CAEPmE,UAAW,SAAmBP,GAC5B,IAAIoB,EAAOpB,EAAQoB,KACnBxF,KAAKyF,WAAW,eAAiB,OAAeD,GAAOpB,GACvDpE,KAAK0F,MAAMF,EAAMpB,IAEnBW,SAAU,WACR,IAAIY,EAAQ3F,KAEZ,IAAIA,KAAK4C,SAAT,CAMA,IAAK5C,KAAK6D,SACR,GAAsB,qBAAX,OAET,OAAA+B,EAAA,MAAK,uDAAwD,YACxD,CAEL,IAAIC,EAAK7F,KAAK+C,QAAU/C,KAAKtC,OAASsC,KAAKhB,MAAQgB,KAAKW,IAAMX,KAAKgE,MAAMD,OAEzE8B,EAAKA,EAAGlF,KAAOkF,EAEf7F,KAAK8F,aAAaD,GAKtB7F,KAAKyF,WAAWpD,EAAuBrC,MAEvCA,KAAKqF,iBAAgB,GAErBrF,KAAK+F,WAAU,WAEbJ,EAAMK,YAGNL,EAAMD,MAAM,aAGhBV,SAAU,WACRhF,KAAKqF,iBAAgB,GACrBrF,KAAKyF,WAAWnD,EAAwBtC,MACxCA,KAAK0F,MAAM,QACX1F,KAAKsF,iBAEPQ,aAAc,SAAsBG,GAClCjG,KAAKsF,gBACLtF,KAAKkF,SAAW,IAAI,OAAOe,EAASjG,KAAKgE,MAAMO,KAAMvE,KAAKkG,oBAG5DZ,cAAe,WACbtF,KAAKkF,UAAYlF,KAAKkF,SAASiB,UAC/BnG,KAAKkF,SAAW,MAIlBkB,aAAc,WACZ,IACEpG,KAAKkF,SAASmB,iBACd,MAAOC,MAEXf,iBAAkB,WAChBgB,aAAavG,KAAKmF,eAClBnF,KAAKmF,cAAgB,MAEvBe,gBAAiB,WACf,IAAIM,EAAYjH,EAEZS,KAAK+C,OACPyD,EAAYxG,KAAKtC,MAAQ4B,EAAoBD,EACpCW,KAAK8C,UACd0D,EAAY/G,EACHO,KAAK6C,SACd2D,EAAY9G,EACHM,KAAKtC,QACd8I,EAAYhH,GAGd,IAAIiH,EAAe,CACjBD,UAAWA,EACXE,UAAW,CACTzD,OAAQ,CACNA,OAAQjD,KAAKiD,QAAU,GAEzB0D,KAAM,CACJC,SAAU5G,KAAKgD,UAIjB6D,EAAoB7G,KAAK2C,SAQ7B,OANIkE,IACFJ,EAAaC,UAAUI,gBAAkB,CACvCD,kBAAmBA,IAIhB,eAAUJ,EAAczG,KAAKkD,YAAc,KAGpDmC,gBAAiB,SAAyB0B,GAExC/G,KAAKJ,kBAAoBmH,EAEzB/G,KAAKe,iBAAmBgG,EAExB,IAAIC,EAASD,EAAS,MAAQ,OAC9B/G,KAAKiH,MAAMD,GAAQ3E,EAAuBrC,KAAKkH,oBAEjDA,kBAAmB,SAA2BC,GACxCA,IAAOnH,OACTA,KAAK0D,SAAU,IAInB0D,KAAM,WACJ,IAAIC,EAASrH,KAETA,KAAK4C,UAMT,gBAAU,WACRyE,EAAO3D,SAAU,MAIrB4D,KAAM,WACJ,IAAIC,EAAUxF,UAAUC,OAAS,QAAsBwF,IAAjBzF,UAAU,IAAmBA,UAAU,GAGzE/B,KAAK4C,WAIT5C,KAAK0D,SAAU,EAEX6D,GAEFvH,KAAKyH,MAAM,OAAmBzH,KAAK8E,gBAIvCf,OAAQ,SAAgBrD,GACtBA,EAAQA,GAAS,GAEjB,IAAIgH,EAAShH,EACT8E,EAAOkC,EAAOlC,KACdmC,EAAUD,EAAOC,SAER,UAATnC,GAA+B,YAATA,IAAgF,IAA1D,CAAC,OAAY,OAAY,QAAWoC,QAAQD,MAOxF3H,KAAK4C,SACP5C,KAAK0D,SAAU,GAIjB1D,KAAK0F,MAAM,OAAmBhF,GAC9B,eAAUA,GAENV,KAAK0D,QACP1D,KAAKsH,MAAK,GAEVtH,KAAKoH,UAMTS,YAAa,SAAqBnH,GAShC,eAAUA,EAAO,CACfoH,aAAa,KAIjBC,UAAW,SAAmBrH,GAC5B,IAAIiH,EAAUjH,EAAMiH,QAEhBA,IAAY,OAEd3H,KAAKgI,MAAMtH,GACFiH,IAAY,OAErB3H,KAAKiI,UAAUvH,GAAO,GACbiH,IAAY,QAErB3H,KAAKiI,UAAUvH,GAAO,IAI1BsH,MAAO,SAAetH,GAChBV,KAAK0D,UACP1D,KAAK0D,SAAU,EACf,eAAUhD,GAEVV,KAAKyH,MAAM,OAAmBzH,KAAK8E,gBAIvCoD,aAAc,SAAsBxH,GAE9BV,KAAK4C,SACP5C,KAAK0D,SAAU,EAIjB1D,KAAK0F,MAAM,OAAkBhF,IAG/ByH,YAAa,SAAqBzH,GAChC,IAAI0H,EAASpI,KAETY,EAASF,EAAME,QAEfZ,KAAK0D,SAAY,eAAS1D,KAAKgE,MAAMO,KAAM3D,IAAY,eAASZ,KAAK8D,QAASlD,KAChFZ,KAAKuF,mBACLvF,KAAKmF,cAAgBkD,YAAW,WAC9B,OAAOD,EAAOd,SACbtH,KAAK6D,SAAW,IAAM,KAI7BhD,gBAAiB,SAAyBH,GACxCV,KAAKmI,YAAYzH,IAGnBQ,eAAgB,SAAwBR,GACtCV,KAAKmI,YAAYzH,IAGnBuH,UAAW,SAAmBvH,EAAO4H,GACnC,IAAIC,EAASvI,KAGTY,EAASF,EAAME,QAEdZ,KAAK0D,SAAWhD,GAAS,eAAQ6B,EAAqB3B,KAK3D,eAAUF,GACVV,KAAK+F,WAAU,WACb,IAAIyC,EAAQD,EAAOE,WAEnB,KAAID,EAAMxG,OAAS,GAAnB,CAKA,IAAI0G,EAAQF,EAAMZ,QAAQhH,GAEtB0H,GAAMI,EAAQ,EAChBA,KACUJ,GAAMI,EAAQF,EAAMxG,OAAS,GACvC0G,IAGEA,EAAQ,IAEVA,EAAQ,GAGVH,EAAOI,UAAUD,EAAOF,SAG5BG,UAAW,SAAmBD,EAAOF,GACnC,IAAI3C,EAAK2C,EAAMI,MAAK,SAAU/C,EAAI/D,GAChC,OAAOA,IAAM4G,KAEf,eAAa7C,IAEf4C,SAAU,WAER,OAAO,EAAe,eAAUjG,EAAexC,KAAKgE,MAAMO,QAE5DyB,UAAW,WACT,eAAahG,KAAKgE,MAAMO,OAE1BO,aAAc,WACZ,IAAI+D,EAAS7I,KAEbA,KAAK+F,WAAU,WACb,eAAa8C,EAAO/E,iB,0TCrd5B,SAASgF,EAAgBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCAEhH,SAASC,EAAkBtI,EAAQ/E,GAAS,IAAK,IAAIiG,EAAI,EAAGA,EAAIjG,EAAMmG,OAAQF,IAAK,CAAE,IAAIqH,EAAatN,EAAMiG,GAAIqH,EAAWjL,WAAaiL,EAAWjL,aAAc,EAAOiL,EAAWhL,cAAe,EAAU,UAAWgL,IAAYA,EAAW/K,UAAW,GAAMJ,OAAOC,eAAe2C,EAAQuI,EAAWrL,IAAKqL,IAE7S,SAASC,EAAaJ,EAAaK,EAAYC,GAAmJ,OAAhID,GAAYH,EAAkBF,EAAYO,UAAWF,GAAiBC,GAAaJ,EAAkBF,EAAaM,GAAqBN,EAuCzM,IAAIQ,EAAqB,4BAErB,EAAkC,WACpC,SAASC,EAAmB5D,EAAI6D,EAASC,GACvCb,EAAgB9I,KAAMyJ,GAEtBzJ,KAAK6F,GAAKA,EACV7F,KAAK4J,SAAWF,EAAQE,SACxB5J,KAAK6J,OAASH,EAAQG,QAAU,EAChC7J,KAAK8J,KAAOJ,EAAQI,OAAQ,EAC5B9J,KAAK+J,SAAW,KAChB/J,KAAK0D,aAAU8D,EACfxH,KAAKgK,UAAW,EAEhBhK,KAAKiK,eAAeN,GAgFtB,OA7EAP,EAAaK,EAAoB,CAAC,CAChC3L,IAAK,iBACLC,MAAO,SAAwB4L,GAC7B,IAAIhE,EAAQ3F,KASZ,GANIA,KAAK+J,UAEP/J,KAAKkK,QAIHlK,KAAKgK,UAAa,eAAWhK,KAAK4J,UAAtC,CAMA,IAGE5J,KAAK+J,SAAW,IAAII,qBAAqBnK,KAAKoK,QAAQC,KAAKrK,MAAO,CAEhEsK,KAAM,KAENC,WAAYvK,KAAK6J,OAEjBW,UAAW,IAEb,MAAOlE,GAKP,OAHAtG,KAAKgK,UAAW,EAChBhK,KAAK+J,cAAWvC,OAChBxH,KAAK4J,SAAS,MAOhBD,EAAMc,QAAQ1E,WAAU,WACtB,gBAAU,WAGJJ,EAAMoE,UACRpE,EAAMoE,SAASW,QAAQ/E,EAAME,aAOpC,CACD/H,IAAK,UACLC,MAAO,SAAiB4M,GACtB,IAAIC,EAAQD,EAAUA,EAAQ,GAAK,GAC/BE,EAAiBC,QAAQF,EAAMC,gBAAkBD,EAAMG,kBAAoB,GAE3EF,IAAmB7K,KAAK0D,UAC1B1D,KAAK0D,QAAUmH,EACf7K,KAAK4J,SAASiB,GAEV7K,KAAK8J,MAAQ9J,KAAK0D,UACpB1D,KAAKgK,UAAW,EAChBhK,KAAKkK,WAIV,CACDpM,IAAK,OACLC,MAAO,WAELiC,KAAK+J,UAAY/J,KAAK+J,SAASiB,aAC/BhL,KAAK+J,SAAW,SAIbN,EA5F6B,GA+FlCtD,EAAU,SAAiBN,GAC7B,IAAIkE,EAAWlE,EAAG2D,GAEdO,GAAYA,EAASG,MACvBH,EAASG,cAGJrE,EAAG2D,IAGR,EAAO,SAAc3D,EAAIrJ,EAAMmN,GACjC,IAAI5L,EAAQvB,EAAKuB,MACb2I,EAAYlK,EAAKkK,UAEjBgD,EAAU,CACZG,OAAQ,MACRC,MAAM,EACNF,SAAU7L,GAGZ,eAAK2I,GAAWxE,SAAQ,SAAU+I,GAE5B,OAAUC,KAAKD,GACjBvB,EAAQG,OAAS,GAAGtL,OAAO0M,EAAK,MACD,SAAtBA,EAAIrM,gBACb8K,EAAQI,MAAO,MAInB3D,EAAQN,GAERA,EAAG2D,GAAsB,IAAI,EAAmB3D,EAAI6D,EAASC,GAE7D9D,EAAG2D,GAAoB2B,eAAiB,eAAMzE,IAI5C,EAAmB,SAA0Bb,EAAIuF,EAAOzB,GAC1D,IAAI5L,EAAQqN,EAAMrN,MACdgC,EAAWqL,EAAMrL,SACjB2G,EAAY0E,EAAM1E,UAKtBA,EAAY,eAAMA,IAGdb,GAAO9H,IAAUgC,GAAa8F,EAAG2D,IAAwB,eAAW9C,EAAWb,EAAG2D,GAAoB2B,iBAExG,EAAKtF,EAAI,CACP9H,MAAOA,EACP2I,UAAWA,GACViD,IAKH0B,EAAS,SAAgBxF,GAE3BM,EAAQN,IAICyF,EAAY,CACrBjB,KAAM,EACNkB,iBAAkB,EAClBF,OAAQA,GC/MV,SAASlK,EAAQC,EAAQC,GAAkB,IAAIC,EAAOtD,OAAOsD,KAAKF,GAAS,GAAIpD,OAAOuD,sBAAuB,CAAE,IAAIC,EAAUxD,OAAOuD,sBAAsBH,GAAaC,IAAgBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO1D,OAAO2D,yBAAyBP,EAAQM,GAAKxD,eAAgBoD,EAAK9D,KAAKoE,MAAMN,EAAME,GAAY,OAAOF,EAE9U,SAASO,EAAcjB,GAAU,IAAK,IAAIkB,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,GAAQA,EAAI,EAAKX,EAAQnD,OAAOiE,IAAS,GAAMC,SAAQ,SAAUpE,GAAOF,EAAgBgD,EAAQ9C,EAAKmE,EAAOnE,OAAsBE,OAAOmE,0BAA6BnE,OAAOoE,iBAAiBxB,EAAQ5C,OAAOmE,0BAA0BF,IAAmBd,EAAQnD,OAAOiE,IAASC,SAAQ,SAAUpE,GAAOE,OAAOC,eAAe2C,EAAQ9C,EAAKE,OAAO2D,yBAAyBM,EAAQnE,OAAe,OAAO8C,EAE7gB,SAAShD,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAsBpM,IAAI,EAAQ,eAAsB,eAASgE,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI/F,EAAA,MAAU,QAAmB,QAAgB,QAAiB,QAAgB,GAAI,CAC1N0P,QAAS,eAAS,QAElBC,aAAc,eAAS,QAAmB,GAE1CC,SAAU,eAAS,QAAmB,GACtCC,KAAM,eAAS,OAAyB,GAGxCC,KAAM,eAAS,OAAkB,WAC9B,QAGMC,EAA6B,aAAI1P,OAAO,CACjDC,KAAM,OACN0P,WAAY,CACV,YAAaR,GAGflI,OAAQ,CAAC2I,EAAA,KAAgBjQ,EAAA,KAAS,OAAmB,OAAkB,OAAe,OAAgB,OAAe,OAAoB,QACzID,MAAO,EACPY,KAAM,WACJ,MAAO,CACLuP,WAAY,OAGhBpI,SAAU,CACRqI,cAAe,WACb,IAAIC,EAAS,CAGXC,QAASnM,KAAKoM,cAAgBpM,KAAK0L,SAAW,OAAS,MAYzD,OATK1L,KAAKoM,eAGRF,EAAOG,OAASrM,KAAKgM,WAGrBE,EAAOI,UAAY,UAGdJ,GAETK,gBAAiB,WAIf,OAAO,OAAAC,EAAA,MAAQ,eAAUxM,KAAK2L,KAAM,GAAI,IAE1Cc,gBAAiB,WACf,OAAO,OAAAD,EAAA,MAAQxM,KAAKuM,gBAAiB,eAAUvM,KAAKwL,QAAS,KAE/DY,aAAc,WAGZ,OAAOpM,KAAKuM,kBAAoBvM,KAAKyM,gBAAkBzM,KAAKuM,gBAAkB,MAEhFG,cAAe,WACb,IAAI9J,EAAW5C,KAAK4C,SAChB+J,EAAW3M,KAAK2M,SACpB,MAAO,CACL7Q,GAAIkE,KAAK0E,SACTtI,KAAM4D,KAAK5D,MAAQ,KACnBwQ,KAAM5M,KAAK4M,MAAQ,KACnBhK,SAAUA,EACViK,YAAa7M,KAAK6M,aAAe,KACjCF,SAAUA,EACVG,aAAc9M,KAAK8M,cAAgB,KACnCC,SAAU/M,KAAK+M,UAAY/M,KAAKgN,UAChCrB,KAAM3L,KAAKoM,aACXR,KAAM5L,KAAK4L,MAAQ,KACnB,gBAAiB5L,KAAK2M,SAAW,OAAS,KAC1C,eAAgB3M,KAAKiN,sBAGzBC,kBAAmB,WACjB,OAAOrL,EAAcA,EAAc,GAAI7B,KAAKmN,aAAc,GAAI,CAC5DC,MAAOpN,KAAKqN,QACZC,OAAQtN,KAAKuN,SACbC,KAAMxN,KAAKyN,WAIjB5N,MAAO,CACL6N,WAAY,WACV1N,KAAK2N,cAGTtN,QAAS,WACPL,KAAK2N,aAEPnN,QAAS,CAIPoN,gBAAiB,SAAyBlK,GACpCA,GAGF1D,KAAK+F,UAAU/F,KAAK2N,YAGxBA,UAAW,WACT,IAAIhI,EAAQ3F,KAEZA,KAAK+F,WAAU,WACb,gBAAU,WACRJ,EAAMqG,WAAarG,EAAMkI,uBAM/BA,cAAe,WACb,GAAI7N,KAAK8N,YAAc,eAAO9N,KAAKoM,cACjC,OAAO,KAGT,IAAIvG,EAAK7F,KAAKW,IAGd,IAAK,eAAUkF,GACb,OAAO,KAIT,IAAIoG,EAAgB,eAAMpG,GAEtBkI,EAAa,eAAQ9B,EAAc8B,WAAY,GAE/CC,EAAS,eAAQ/B,EAAcgC,eAAgB,GAAK,eAAQhC,EAAciC,kBAAmB,GAC7FC,EAAU,eAAQlC,EAAcmC,WAAY,GAAK,eAAQnC,EAAcoC,cAAe,GAEtFpL,EAAS+K,EAASG,EAElBG,EAAYP,EAAa/N,KAAKuM,gBAAkBtJ,EAEhDsL,EAAY,eAAS1I,EAAI,WAAaoG,EAAcI,OAExD,eAASxG,EAAI,SAAU,QACvB,IAAI2I,EAAe3I,EAAG2I,aAGtB,eAAS3I,EAAI,SAAU0I,GAEvB,IAAIE,EAAc,OAAAjC,EAAA,OAASgC,EAAeL,GAAWJ,EAAY,GAE7DpC,EAAO,OAAAa,EAAA,MAAQ,OAAAA,EAAA,MAAQiC,EAAazO,KAAKuM,iBAAkBvM,KAAKyM,iBAEhEJ,EAAS,OAAAG,EAAA,MAAQ,OAAAA,EAAA,MAASb,EAAOoC,EAAa9K,GAASqL,GAG3D,OAAItO,KAAKyL,cAAgB,eAAQ8C,EAAW,GAAKlC,EACxCkC,EAIF,GAAGhQ,OAAO8N,EAAQ,QAG7B/P,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,WAAY,CACnBI,MAAOqD,KAAK0O,cACZC,MAAO3O,KAAKiM,cACZH,WAAY,CAAC,CACX1P,KAAM,YACN2B,MAAOiC,KAAK4N,gBAEZlH,UAAW,CACT,KAAO,KAGX9J,MAAOoD,KAAK0M,cACZkC,SAAU,CACR7Q,MAAOiC,KAAK0N,YAEdmB,GAAI7O,KAAKkN,kBACT4B,IAAK,c,kCC5MX,IAAIC,EAAI,EAAQ,QACZC,EAAkB,EAAQ,QAC1BC,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QACnBC,EAAW,EAAQ,QACnBC,EAAqB,EAAQ,QAC7BC,EAAiB,EAAQ,QACzBC,EAA+B,EAAQ,QACvCC,EAA0B,EAAQ,QAElCC,EAAsBF,EAA6B,UACnDG,EAAiBF,EAAwB,SAAU,CAAEG,WAAW,EAAMC,EAAG,EAAGC,EAAG,IAE/EC,EAAMC,KAAKD,IACXE,EAAMD,KAAKC,IACXC,EAAmB,iBACnBC,EAAkC,kCAKtClB,EAAE,CAAEnO,OAAQ,QAASsP,OAAO,EAAMC,QAASX,IAAwBC,GAAkB,CACnFW,OAAQ,SAAgBC,EAAOC,GAC7B,IAIIC,EAAaC,EAAmBC,EAAGC,EAAGC,EAAMC,EAJ5CC,EAAI1B,EAASnP,MACb8Q,EAAM5B,EAAS2B,EAAE7O,QACjB+O,EAAc/B,EAAgBqB,EAAOS,GACrCE,EAAkBjP,UAAUC,OAWhC,GATwB,IAApBgP,EACFT,EAAcC,EAAoB,EACL,IAApBQ,GACTT,EAAc,EACdC,EAAoBM,EAAMC,IAE1BR,EAAcS,EAAkB,EAChCR,EAAoBT,EAAIF,EAAIZ,EAAUqB,GAAc,GAAIQ,EAAMC,IAE5DD,EAAMP,EAAcC,EAAoBR,EAC1C,MAAM/G,UAAUgH,GAGlB,IADAQ,EAAIrB,EAAmByB,EAAGL,GACrBE,EAAI,EAAGA,EAAIF,EAAmBE,IACjCC,EAAOI,EAAcL,EACjBC,KAAQE,GAAGxB,EAAeoB,EAAGC,EAAGG,EAAEF,IAGxC,GADAF,EAAEzO,OAASwO,EACPD,EAAcC,EAAmB,CACnC,IAAKE,EAAIK,EAAaL,EAAII,EAAMN,EAAmBE,IACjDC,EAAOD,EAAIF,EACXI,EAAKF,EAAIH,EACLI,KAAQE,EAAGA,EAAED,GAAMC,EAAEF,UACbE,EAAED,GAEhB,IAAKF,EAAII,EAAKJ,EAAII,EAAMN,EAAoBD,EAAaG,WAAYG,EAAEH,EAAI,QACtE,GAAIH,EAAcC,EACvB,IAAKE,EAAII,EAAMN,EAAmBE,EAAIK,EAAaL,IACjDC,EAAOD,EAAIF,EAAoB,EAC/BI,EAAKF,EAAIH,EAAc,EACnBI,KAAQE,EAAGA,EAAED,GAAMC,EAAEF,UACbE,EAAED,GAGlB,IAAKF,EAAI,EAAGA,EAAIH,EAAaG,IAC3BG,EAAEH,EAAIK,GAAehP,UAAU2O,EAAI,GAGrC,OADAG,EAAE7O,OAAS8O,EAAMN,EAAoBD,EAC9BE,M,kCCnEX,sCAAIQ,EAAJ,oOAEA,SAAS9P,EAAQC,EAAQC,GAAkB,IAAIC,EAAOtD,OAAOsD,KAAKF,GAAS,GAAIpD,OAAOuD,sBAAuB,CAAE,IAAIC,EAAUxD,OAAOuD,sBAAsBH,GAAaC,IAAgBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO1D,OAAO2D,yBAAyBP,EAAQM,GAAKxD,eAAgBoD,EAAK9D,KAAKoE,MAAMN,EAAME,GAAY,OAAOF,EAE9U,SAASO,EAAcjB,GAAU,IAAK,IAAIkB,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,GAAQA,EAAI,EAAKX,EAAQnD,OAAOiE,IAAS,GAAMC,SAAQ,SAAUpE,GAAOF,EAAgBgD,EAAQ9C,EAAKmE,EAAOnE,OAAsBE,OAAOmE,0BAA6BnE,OAAOoE,iBAAiBxB,EAAQ5C,OAAOmE,0BAA0BF,IAAmBd,EAAQnD,OAAOiE,IAASC,SAAQ,SAAUpE,GAAOE,OAAOC,eAAe2C,EAAQ9C,EAAKE,OAAO2D,yBAAyBM,EAAQnE,OAAe,OAAO8C,EAE7gB,SAAShD,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAsB3M,IAAIqT,EAAa,YACbC,EAAuC,eAAuB,OAAe,iBAC7EC,EAAgC,eAAuB,OAAe,UACtEC,EAAwB,eAAiB,OAAe,SACxDC,EAA6B,eAAiB,OAAe,cAE7DC,EAAkB,eAAe,UAAW,CAC9C/L,KAAM,OACNgM,cAAc,EACd9Q,MAAO,SAEL+Q,EAAaF,EAAgBG,MAC7BC,EAAaJ,EAAgB1V,MAC7B+V,EAAkBL,EAAgBM,KAClCC,EAAmBP,EAAgB7Q,MAG5B7E,EAAQ,eAAsB,eAASgG,EAAcA,EAAcA,EAAc,GAAI,QAAU8P,GAAa,GAAI,CACzHI,UAAW,eAAS,QACpBC,eAAgB,eAAS,QAEzBC,SAAU,eAAS,QAAmB,GACtCC,gBAAiB,eAAS,OAAkB,QAC5CC,UAAW,eAAS,OAAkB,SACtCC,UAAW,eAAS,QAEpBC,WAAY,eAAS,QACrBC,YAAa,eAAS,QACtBC,YAAa,eAAS,QACtBC,KAAM,eAAS,QAAmB,GAClCC,kBAAmB,eAAS,QAAmB,GAC/CC,aAAc,eAAS,QAAmB,GAC1CC,qBAAsB,eAAS,QAAmB,GAClDC,eAAgB,eAAS,QAAmB,GAC5CC,SAAU,eAAS,QAAmB,GACtCC,cAAe,eAAS,QAAmB,GAC3CC,QAAS,eAAS,QAAmB,GACrCrV,MAAO,eAAS,QAAmB,GACnCsV,OAAQ,eAAS,QAA0B,GAC3CC,aAAc,eAAS,QACvBlW,IAAK,eAAS,OAAkB,OAChCmW,YAAa,eAAS,OAAkB,QACxCC,MAAO,eAAS,QAChBC,MAAO,eAAS,QAChBC,OAAQ,eAAS,WACd,SAEDC,EAAoB,SAA2B/W,EAAGgX,GAEpD,IAAIJ,EAAQI,EAAIC,cAAc,QAAiBD,EAAIlW,YAAckW,EAAIJ,MAErE,OAAKA,EAIE5W,EAAE,SAAU,CACjBK,MAAO,CACLd,GAAIyX,EAAI7O,OAAO,eAEhB,CAACyO,IAPK5W,EAAE,SAUTkX,EAAoB,SAA2BlX,EAAGgX,GACpD,GAAIA,EAAIT,cACN,OAAOvW,IAGT,IAAI8V,EAAakB,EAAIlB,WACjBa,EAAcK,EAAIL,YAClB5L,EAAOiM,EAAIjM,KACf,OAAO/K,EAAE,OAAc,CACrBV,MAAO,CACLkW,UAAWM,EACXa,YAAaA,GAEfrE,GAAI,CACF6E,MAAOpM,GAETwH,IAAK,gBACJ,CAACyE,EAAIC,cAAc,SAA2BjX,EAAE,WAGjDoX,EAAe,SAAsBpX,EAAGgX,GAC1C,GAAIA,EAAIV,SACN,OAAOtW,IAGT,IAAIqX,EAAWL,EAAIC,cAAc,OAAkBD,EAAIlW,WAEvD,IAAKuW,EAAU,CACb,IAAIC,EAASP,EAAkB/W,EAAGgX,GAC9BO,EAASL,EAAkBlX,EAAGgX,GAClCK,EAAWL,EAAI7V,MAAQ,CAACoW,EAAQD,GAAU,CAACA,EAAQC,GAGrD,OAAOvX,EAAE,SAAU,CACjBoB,YAAa,GAAGY,OAAO2S,EAAY,WACnCvU,MAAO4W,EAAIhB,YACXzU,IAAK,UACJ8V,IAGDG,EAAa,SAAoBxX,EAAGgX,GACtC,OAAOhX,EAAE,MAAO,CACdoB,YAAa,GAAGY,OAAO2S,EAAY,SACnCvU,MAAO4W,EAAInB,UACXtU,IAAK,QACJ,CAACyV,EAAIC,cAAc,OAAmBD,EAAIlW,cAG3C2W,EAAe,SAAsBzX,EAAGgX,GAC1C,IAAIU,EAAUV,EAAIC,cAAc,OAAkBD,EAAIlW,WAEtD,OAAK4W,EAIE1X,EAAE,SAAU,CACjBoB,YAAa,GAAGY,OAAO2S,EAAY,WACnCvU,MAAO4W,EAAIjB,YACXxU,IAAK,UACJ,CAACmW,IAPK1X,KAUP2X,EAAgB,SAAuB3X,EAAGgX,GAG5C,IAAIY,EAAUR,EAAapX,EAAGgX,GAE9B,OAAIA,EAAIf,OAASe,EAAIxM,OACZoN,EAGF,CAACA,EAASJ,EAAWxX,EAAGgX,GAAMS,EAAazX,EAAGgX,KAGnDa,EAAiB,SAAwB7X,EAAGgX,GAC9C,IAAKA,EAAItB,SACP,OAAO1V,IAGT,IAAI2V,EAAkBqB,EAAIrB,gBAC1B,OAAO3V,EAAE,MAAO,CACduP,WAAY,CAAC,CACX1P,KAAM,OACN2B,MAAOwV,EAAIc,YAEb1W,YAAa,qBACbhB,MAAOiB,EAAgB,GAAI,MAAMW,OAAO2T,GAAkBA,GAC1DrD,GAAI,CACF6E,MAAOH,EAAIe,oBAONC,EAAwB,aAAIpY,OAAO,CAC5CC,KAAM,QACNgH,OAAQ,CAAC,OAAY,OAASqO,EAAY,OAAmB,QAC7D+C,cAAc,EACd3Y,MAAOA,EACPY,KAAM,WACJ,IAAIiH,IAAY1D,KAAK4R,GACrB,MAAO,CAELyC,UAAW3Q,EAEXqD,OAAQrD,IAGZE,SAAU,CACR6Q,gBAAiB,WACf,OAAOzU,KAAK+S,QAEZ,CACE2B,KAAK,GACH,CACFA,KAAK,EACLC,WAAY,GACZC,iBAAkB,QAClBC,aAAc,OACdC,WAAY,OACZC,iBAAkB,QAClBC,aAAc,KAGlB3X,UAAW,WACT,IAAIiK,EAAOtH,KAAKsH,KACZ5J,EAAQsC,KAAKtC,MACbgG,EAAU1D,KAAKqU,UACnB,MAAO,CACL/M,KAAMA,EACN5J,MAAOA,EACPgG,QAASA,IAGbuR,SAAU,WACR,IAAI1X,EAAeyC,KAAKzC,aACpBD,EAAS0C,KAAK1C,OAClB,OAAQ0C,KAAK6S,WAAa7S,KAAKkV,kBAAkB,YAAwBlV,KAAKwT,cAAc,QAAiBxT,KAAK3C,UAAWE,EAAcD,KAAW0C,KAAKmT,QAE7JgC,QAAS,WACP,OAAOnV,KAAKiV,SAAWjV,KAAK0E,OAAO,aAAe,MAEpDgI,cAAe,WACb,OAAO7K,EAAcA,EAAc,GAAI7B,KAAKoV,SAAU,GAAI,CACxDtZ,GAAIkE,KAAK0E,SACT2Q,SAAU,KACVC,KAAM,SACN,aAActV,KAAKiS,SAAW,OAAS,QACvC,cAAejS,KAAKqU,UAAY,KAAO,OACvC,aAAcrU,KAAK+R,WAAa,KAChC,kBAAmB/R,KAAKgS,gBAAkBhS,KAAKmV,SAAW,SAIhEtV,OAAQoR,EAAS,GAAIrT,EAAgBqT,EAAQW,GAAiB,SAAU9R,EAAUC,GAC5ED,IAAaC,IACfC,KAAKqU,UAAYvU,MAEjBlC,EAAgBqT,EAAQ,aAAa,SAAmBnR,EAAUC,GAChED,IAAaC,IACfC,KAAKuV,UAAUzV,GACfE,KAAK0F,MAAMoM,EAAkBhS,OAE7BlC,EAAgBqT,EAAQ,UAAU,WACpC,IAAInR,EAAWiC,UAAUC,OAAS,QAAsBwF,IAAjBzF,UAAU,GAAmBA,UAAU,GAAK,GAC/EhC,EAAWgC,UAAUC,OAAS,QAAsBwF,IAAjBzF,UAAU,GAAmBA,UAAU,GAAK,GAE9E/B,KAAK2S,sBAAwB7S,EAAS0V,WAAazV,EAASyV,UAC/DxV,KAAKsH,UAEL2J,GACJhM,QAAS,WAEPjF,KAAKyV,gBAAkB,MAEzBpV,QAAS,WACP,IAAIsF,EAAQ3F,KAGZA,KAAK0V,aAAatE,EAA+BpR,KAAK2V,cACtD3V,KAAK0V,aAAavE,EAAsCnR,KAAK4V,YAE7D5V,KAAK+F,WAAU,WACbJ,EAAM4P,UAAU5P,EAAM0O,eAK1BwB,UAAW,WACT7V,KAAK8V,YAEPvV,cAAe,WACbP,KAAKqU,WAAY,EACjBrU,KAAKyV,gBAAkB,MAEzBjV,QAAS,CACP8G,KAAM,WACJtH,KAAKqU,WAAY,GAEnBkB,UAAW,WACT,IAAIQ,EAAQhU,UAAUC,OAAS,QAAsBwF,IAAjBzF,UAAU,GAAmBA,UAAU,GAAK/B,KAAKqU,UACrFrU,KAAKyF,WAAW4L,EAAuBrR,KAAK0E,SAAUqR,IAExDD,SAAU,WACR,IAAIC,EAAQhU,UAAUC,OAAS,QAAsBwF,IAAjBzF,UAAU,GAAmBA,UAAU,GAAK/B,KAAKqU,UACrFrU,KAAKyF,WAAW6L,EAA4BtR,KAAK0E,SAAUqR,IAE7DJ,aAAc,SAAsB7Z,GAE9BA,GAAMA,IAAOkE,KAAK0E,WACpB1E,KAAKqU,WAAarU,KAAKqU,YAG3BuB,WAAY,SAAoB9Z,GAC9B,IAAIuL,EAASrH,KAGTlE,GAAMA,IAAOkE,KAAK0E,UACpB1E,KAAK+F,WAAU,WACbsB,EAAOyO,SAASzO,EAAOgN,eAI7BtM,UAAW,SAAmBrH,GAC5B,IAAIiH,EAAUjH,EAAMiH,SAEf3H,KAAK0S,cAAgB/K,IAAY,QAAY3H,KAAKqU,WACrDrU,KAAKsH,QAGTgN,gBAAiB,WACXtU,KAAKqU,YAAcrU,KAAKyS,mBAC1BzS,KAAKsH,QAKT0O,eAAgB,WACd,IAAIC,EAAW,eAAYjW,KAAKgE,MAAMkS,SACtClW,KAAKmW,aAAaF,EAASG,UAAU,KAIvCC,kBAAmB,WACjB,IAAIJ,EAAW,eAAYjW,KAAKgE,MAAMkS,SACtClW,KAAKmW,aAAaF,EAAS,KAE7BK,cAAe,WAGbtW,KAAKyV,gBAAkB,eAAiB,OAAa,CAACnV,SAASiW,MAAQ,IAEvEvW,KAAK+G,QAAS,GAEhByP,aAAc,SAAsB3Q,GAC7B,eAASA,EAAI,mBAChB7F,KAAKmW,aAAatQ,GAGpB7F,KAAK0F,MAAM,SAEb+Q,aAAc,WACZzW,KAAKmW,aAAanW,KAAKyV,iBACvBzV,KAAKyV,gBAAkB,KAEvBzV,KAAK+G,QAAS,EACd/G,KAAK0F,MAAM,SAEbyQ,aAAc,SAAsBtQ,GAC7B7F,KAAK4S,gBACR,eAAa/M,KAInBvJ,OAAQ,SAAgBC,GACtB,IAAIC,EAEA2V,EAAYnS,KAAKmS,UACjBiB,EAAQpT,KAAKoT,MACbF,EAAclT,KAAKkT,YACnBmB,EAAYrU,KAAKqU,UACjBrB,EAAyB,KAAhBhT,KAAKgT,QAAuBhT,KAAKgT,OAC1C0D,EAAWna,EAAEyD,KAAKjD,IAAK,CACzBY,YAAauT,EACbvU,MAAO,EAAEH,EAAO,CACdwW,QAAmB,IAAXA,GACPpV,EAAgBpB,EAAM,UAAU+B,OAAOyU,GAASA,IAAqB,IAAXA,GAAkBpV,EAAgBpB,EAAM,GAAG+B,OAAO2S,EAAY,UAAWlR,KAAKtC,OAAQE,EAAgBpB,EAAM,MAAM+B,OAAO4T,GAAYA,GAAYvU,EAAgBpB,EAAM,QAAQ+B,OAAO2U,GAAcA,GAAc1W,GAAOwD,KAAKiT,cAC3RtE,MAAO,CACLyE,MAAOA,GAETxW,MAAOoD,KAAK0M,cACZZ,WAAY,CAAC,CACX1P,KAAM,OACN2B,MAAOsW,IAETvF,IAAK,WACJ,CAACoF,EAAc3X,EAAGyD,QACrB0W,EAAWna,EAAE,aAAc,CACzBV,MAAOmE,KAAKyU,gBACZ5F,GAAI,CACF8H,YAAa3W,KAAKsW,cAClBM,WAAY5W,KAAKwW,aACjBK,WAAY7W,KAAKyW,eAElB,CAACC,IACJ,IAAII,EAAYva,EAAE,OAAc,CAC9BV,MAAO,CACLkb,OAAQ/W,KAAK+S,UAEd,CAACqB,EAAe7X,EAAGyD,QAClBgX,EAAcza,IACd0a,EAAiB1a,IAqBrB,OAnBIyD,KAAKiS,UAAYoC,IACnB2C,EAAcza,EAAE,MAAO,CACrBK,MAAO,CACLyY,SAAU,KAEZxG,GAAI,CACFqI,MAAOlX,KAAKgW,kBAGhBiB,EAAiB1a,EAAE,MAAO,CACxBK,MAAO,CACLyY,SAAU,KAEZxG,GAAI,CACFqI,MAAOlX,KAAKqW,sBAKX9Z,EAAE,MAAO,CACdoB,YAAa,kBACbgR,MAAO,CACL0E,OAAQrT,KAAKqT,QAEfzW,MAAO,CACLyY,SAAU,MAEZxG,GAAI,CACFsI,QAASnX,KAAK+H,YAEf,CAACiP,EAAaN,EAAUO,EAAgBH,Q,qIClbpCM,EAAmB,UACnBC,EAAgB,OAChBC,EAAkB,SAClBC,EAAiB,QACjBC,EAAsB,UACtBC,EAAsB,U,4DCLjC,SAASC,EAAeC,EAAK7V,GAAK,OAAO8V,EAAgBD,IAAQE,EAAsBF,EAAK7V,IAAMgW,EAA4BH,EAAK7V,IAAMiW,IAEzI,SAASA,IAAqB,MAAM,IAAI9O,UAAU,6IAElD,SAAS6O,EAA4BE,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAIna,OAAOuL,UAAU6O,SAASC,KAAKL,GAAG9Y,MAAM,GAAI,GAAiE,MAAnD,WAANiZ,GAAkBH,EAAEM,cAAaH,EAAIH,EAAEM,YAAYlc,MAAgB,QAAN+b,GAAqB,QAANA,EAAoBI,MAAM5H,KAAKqH,GAAc,cAANG,GAAqB,2CAA2CjN,KAAKiN,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASC,EAAkBP,EAAK7G,IAAkB,MAAPA,GAAeA,EAAM6G,EAAI3V,UAAQ8O,EAAM6G,EAAI3V,QAAQ,IAAK,IAAIF,EAAI,EAAG0W,EAAO,IAAID,MAAMzH,GAAMhP,EAAIgP,EAAKhP,IAAO0W,EAAK1W,GAAK6V,EAAI7V,GAAM,OAAO0W,EAEhL,SAASX,EAAsBF,EAAK7V,GAAK,GAAsB,qBAAX2W,QAA4BA,OAAOC,YAAY1a,OAAO2Z,GAAjE,CAAgF,IAAIgB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKtR,EAAW,IAAM,IAAK,IAAiCuR,EAA7BC,EAAKrB,EAAIc,OAAOC,cAAmBE,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAKnb,KAAKub,EAAGhb,OAAY+D,GAAK6W,EAAK3W,SAAWF,EAAG,MAAW,MAAOqX,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,IAAWP,GAAsB,MAAhBI,EAAG,WAAmBA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,GAEle,SAASf,EAAgBD,GAAO,GAAIY,MAAMa,QAAQzB,GAAM,OAAOA,EAE/D,SAAS0B,EAAWC,EAAQC,EAAMC,GAAqV,OAAzSH,EAA/BI,IAA4CC,QAAQC,UAAiC,SAAoBL,EAAQC,EAAMC,GAAS,IAAII,EAAI,CAAC,MAAOA,EAAEpc,KAAKoE,MAAMgY,EAAGL,GAAO,IAAIvQ,EAAc6Q,SAASxP,KAAKzI,MAAM0X,EAAQM,GAAQ7Q,EAAW,IAAIC,EAAsE,OAAnDwQ,GAAOM,EAAgB/Q,EAAUyQ,EAAMjQ,WAAmBR,GAAsBsQ,EAAWzX,MAAM,KAAMG,WAErZ,SAAS0X,IAA8B,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUI,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3EC,KAAK1Q,UAAU6O,SAASC,KAAKqB,QAAQC,UAAUM,KAAM,IAAI,iBAAyB,EAAQ,MAAOC,GAAK,OAAO,GAE1T,SAASJ,EAAgB9B,EAAGmC,GAA+G,OAA1GL,EAAkB9b,OAAOoc,gBAAkB,SAAyBpC,EAAGmC,GAAsB,OAAjBnC,EAAEqC,UAAYF,EAAUnC,GAAa8B,EAAgB9B,EAAGmC,GAW9J,IC3BHlJ,ED2BOqJ,EAAa,WACtB,IAAK,IAAIC,EAAOxY,UAAUC,OAAQuX,EAAO,IAAIhB,MAAMgC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EjB,EAAKiB,GAAQzY,UAAUyY,GAGzB,OAAOnB,EAAWY,KAAMV,IAGf,EAAW,SAAkBkB,GACtC,GAAI,eAASA,IAAS,OAAQvP,KAAKuP,EAAKC,QAAS,CAC/C,IAAIC,EAAkBF,EAAKzb,MAAM,QAAeN,KAAI,SAAUkc,GAC5D,OAAO,eAAUA,EAAG,MAElBC,EAAmBnD,EAAeiD,EAAiB,GACnDG,EAAOD,EAAiB,GACxBE,EAAQF,EAAiB,GACzBG,EAAMH,EAAiB,GAE3B,OAAOP,EAAWQ,EAAMC,EAAQ,EAAGC,GAC9B,OAAI,eAAOP,GACTH,EAAWG,EAAKQ,cAAeR,EAAKS,WAAYT,EAAKU,WAGvD,MAGEC,EAAY,SAAmBX,GAGxC,GAFAA,EAAO,EAASA,IAEXA,EACH,OAAO,KAGT,IAAIK,EAAOL,EAAKQ,cACZF,EAAQ,IAAIxc,OAAOkc,EAAKS,WAAa,GAAGhc,OAAO,GAC/C8b,EAAM,IAAIzc,OAAOkc,EAAKU,WAAWjc,OAAO,GAC5C,MAAO,GAAGX,OAAOuc,EAAM,KAAKvc,OAAOwc,EAAO,KAAKxc,OAAOyc,IAG7C,EAAgB,SAAuBK,GAGhD,IAAIC,EAAWvZ,UAAUC,OAAS,QAAsBwF,IAAjBzF,UAAU,GAAmBA,UAAU,GAAKqV,EACnFiE,EAAU,eAAOA,GAAS5Z,OAAO8Z,EAAA,MACjC,IAAIC,EAAM,IAAIC,KAAKC,eAAeL,EAAS,CACzCC,SAAUA,IAEZ,OAAOE,EAAIG,kBAAkBhd,QAGpBid,EAAsB,SAA6Bjd,EAAQ+K,GAGpE,IAAImS,EAAM,IAAIJ,KAAKC,eAAe/c,EAAQ+K,GAC1C,OAAOmS,EAAIC,QAGFC,EAAa,SAAoBC,EAAOC,GAGjD,OAAOb,EAAUY,KAAWZ,EAAUa,IAG7BC,EAAmB,SAA0BzB,GAGtD,OAFAA,EAAOH,EAAWG,GAClBA,EAAK0B,QAAQ,GACN1B,GAEE2B,EAAkB,SAAyB3B,GAIpD,OAHAA,EAAOH,EAAWG,GAClBA,EAAK4B,SAAS5B,EAAKS,WAAa,GAChCT,EAAK0B,QAAQ,GACN1B,GAEE6B,EAAW,SAAkB7B,EAAM8B,GAC5C9B,EAAOH,EAAWG,GAClB,IAAIM,EAAQN,EAAKS,WAOjB,OANAT,EAAK+B,YAAY/B,EAAKQ,cAAgBsB,GAElC9B,EAAKS,aAAeH,GACtBN,EAAK0B,QAAQ,GAGR1B,GAEEgC,EAAc,SAAqBhC,GAC5CA,EAAOH,EAAWG,GAClB,IAAIM,EAAQN,EAAKS,WAOjB,OANAT,EAAK4B,SAAStB,EAAQ,GAElBN,EAAKS,aAAeH,GACtBN,EAAK0B,QAAQ,GAGR1B,GAEEiC,EAAgB,SAAuBjC,GAChDA,EAAOH,EAAWG,GAClB,IAAIM,EAAQN,EAAKS,WAOjB,OANAT,EAAK4B,SAAStB,EAAQ,GAElBN,EAAKS,cAAgBH,EAAQ,GAAK,IACpCN,EAAK0B,QAAQ,GAGR1B,GAEEkC,EAAa,SAAoBlC,GAC1C,OAAO6B,EAAS7B,GAAO,IAEdmC,EAAe,SAAsBnC,GAC9C,OAAO6B,EAAS7B,EAAM,IAEboC,EAAe,SAAsBpC,GAC9C,OAAO6B,EAAS7B,GAAO,KAEdqC,EAAiB,SAAwBrC,GAClD,OAAO6B,EAAS7B,EAAM,KAIb,EAAgB,SAAuBA,GAChD,IAAI1K,EAAMhO,UAAUC,OAAS,QAAsBwF,IAAjBzF,UAAU,GAAmBA,UAAU,GAAK,KAC1E8N,EAAM9N,UAAUC,OAAS,QAAsBwF,IAAjBzF,UAAU,GAAmBA,UAAU,GAAK,KAM9E,OAJA0Y,EAAO,EAASA,GAChB1K,EAAM,EAASA,IAAQ0K,EACvB5K,EAAM,EAASA,IAAQ4K,EAEhBA,EAAOA,EAAO1K,EAAMA,EAAM0K,EAAO5K,EAAMA,EAAM4K,EAAO,M,0LC1J7D,SAAStZ,GAAQC,EAAQC,GAAkB,IAAIC,EAAOtD,OAAOsD,KAAKF,GAAS,GAAIpD,OAAOuD,sBAAuB,CAAE,IAAIC,EAAUxD,OAAOuD,sBAAsBH,GAAaC,IAAgBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO1D,OAAO2D,yBAAyBP,EAAQM,GAAKxD,eAAgBoD,EAAK9D,KAAKoE,MAAMN,EAAME,GAAY,OAAOF,EAE9U,SAASO,GAAcjB,GAAU,IAAK,IAAIkB,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,GAAQA,EAAI,EAAKX,GAAQnD,OAAOiE,IAAS,GAAMC,SAAQ,SAAUpE,GAAOF,GAAgBgD,EAAQ9C,EAAKmE,EAAOnE,OAAsBE,OAAOmE,0BAA6BnE,OAAOoE,iBAAiBxB,EAAQ5C,OAAOmE,0BAA0BF,IAAmBd,GAAQnD,OAAOiE,IAASC,SAAQ,SAAUpE,GAAOE,OAAOC,eAAe2C,EAAQ9C,EAAKE,OAAO2D,yBAAyBM,EAAQnE,OAAe,OAAO8C,EAE7gB,SAAShD,GAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EA4B3M,IAAI0T,GAAkB,eAAe,QAAS,CAC5C/L,KAAM,SAEJiM,GAAaF,GAAgBG,MAC7BC,GAAaJ,GAAgB1V,MAC7B+V,GAAkBL,GAAgBM,KAClCC,GAAmBP,GAAgB7Q,MAG5B,GAAQ,eAAsB,eAASmB,GAAcA,GAAcA,GAAc,GAAI/F,EAAA,MAAU6V,IAAa,GAAI,CACzHoL,aAAc,eAAS,QAEvBC,MAAO,eAAS,QAAmB,GACnCC,eAAgB,eAAS,QAEzBC,kBAAmB,eAAS,OAAkB,CAC5CpC,KAAMrD,EACNsD,MAAO1D,EACP2D,IAAKvD,EACL0F,QAAS9F,IAOX+F,WAAY,eAAS,QAErBC,UAAW,eAAS,QACpBza,SAAU,eAAS,QAAmB,GAKtC0a,OAAQ,eAAS,QAAmB,GAEpCC,WAAY,eAAS,QAAmB,GAIxCC,YAAa,eAAS,QAEtBC,cAAe,eAAS,OAAkB,YAC1CC,kBAAmB,eAAS,OAAkB,iBAC9CC,UAAW,eAAS,OAAkB,8CACtCC,SAAU,eAAS,OAAkB,uBACrCC,gBAAiB,eAAS,OAAkB,eAC5CC,eAAgB,eAAS,OAAkB,cAC3CC,cAAe,eAAS,OAAkB,aAC1CC,oBAAqB,eAAS,OAAkB,oBAChDC,gBAAiB,eAAS,OAAkB,mBAC5CC,eAAgB,eAAS,OAAkB,kBAC3CC,cAAe,eAAS,OAAkB,iBAC1CC,cAAe,eAAS,OAAkB,iBAC1CC,WAAY,eAAS,OAAkB,SAGvC1f,OAAQ,eAAS,QACjBkR,IAAK,eAAS,QACdE,IAAK,eAAS,QAEduO,iBAAkB,eAAS,OAAkB,aAE7CC,iBAAkB,eAAS,QAAmB,GAC9CC,SAAU,eAAS,QAAmB,GACtCzR,SAAU,eAAS,QAAmB,GACtC0R,gBAAiB,eAAS,QAE1BC,gBAAiB,eAAS,OAAkB,WAE5CC,cAAe,eAAS,QAAmB,GAG3CC,aAAc,eAAS,OAAyB,GAEhDC,aAAc,eAAS,QAEvBC,YAAa,eAAS,QAAmB,GAMzCC,oBAAqB,eAAS,OAAkBxH,GAAgB,SAAUxZ,GACxE,OAAO,OAAAihB,EAAA,MAAc,CAAC3H,EAAeE,EAAgBD,GAAkBvZ,MAGzEqV,MAAO,eAAS,OAAkB,YAC/B,QAGM6L,GAAY,aAAI9iB,OAAO,CAChCC,KAAM,OAENgH,OAAQ,CAACxG,GAAA,KAAYd,EAAA,KAAS2V,GAAY,SAC1C5V,MAAO,GACPY,KAAM,WACJ,IAAIyiB,EAAW9D,EAAUpb,KAAK4R,MAAqB,GACnD,MAAO,CAELuN,YAAaD,EAEbE,UAAWF,GAAY9D,EAAU,EAAepb,KAAKwd,aAAexd,KAAKqf,YAAarf,KAAK+P,IAAK/P,KAAK6P,KAErGyP,cAAc,EAGdC,QAAQ,IAGZ3b,SAAU,CACR4b,QAAS,WACP,OAAOxf,KAAK0E,UAEd+a,SAAU,WACR,OAAOzf,KAAK0E,OAAO,uBAErBgb,MAAO,WACL,OAAO1f,KAAK0E,OAAO,mBAErBib,OAAQ,WACN,OAAO3f,KAAK0E,OAAO,oBAErBkb,cAAe,WACb,OAAO5f,KAAK0E,OAAO,4BAErBmb,WAAY,WACV,OAAO7f,KAAK0E,OAAO,yBAErBob,SAAU,WACR,OAAO9f,KAAKof,UAAYpf,KAAK0E,OAAO,SAASnG,OAAOyB,KAAKof,UAAW,MAAQ,MAG9EW,aAAc,WAEZ,OAAO,EAAS/f,KAAKmf,cAEvBa,WAAY,WAEV,OAAO,EAAShgB,KAAKof,YAEvBa,YAAa,WACX,OAAO,EAASjgB,KAAK+P,MAEvBmQ,YAAa,WACX,OAAO,EAASlgB,KAAK6P,MAEvBsQ,mBAAoB,WAElB,OAAO,OAAA3T,GAAA,MAAQ,eAAUxM,KAAK4e,aAAc,GAAI,GAAK,GAEvDwB,eAAgB,WAEd,OAAO,EAAc,eAAOpgB,KAAKrB,QAAQ8C,OAAO8Z,EAAA,MAAWnE,IAE7DiJ,uBAAwB,WACtB,IAAIpD,EAAiBjd,KAAKid,eAC1B,OAAO,eAAgBA,GAAkBA,EAAiB,WACxD,OAAO,IAIXqD,mBAAoB,WAClB,IAAIlD,EAAapd,KAAKod,WACtB,OAAO,eAAgBA,GAAcA,EAAa,WAChD,MAAO,KAGXmD,eAAgB,WAKd,IAAI/E,EAAM,IAAIC,KAAKC,eAAe1b,KAAKogB,eAAgB,CACrD9E,SAAUlE,IAERkE,EAAWE,EAAIG,kBAAkBL,SACjC3c,EAAS6c,EAAIG,kBAAkBhd,OAUnC,OAPI2c,IAAalE,IAIfzY,EAASA,EAAOI,QAAQ,UAAW,IAAIR,OAAO,kBAGzCI,GAET6hB,aAAc,WACZ,OAAOxgB,KAAKggB,WAAW/E,eAEzBwF,cAAe,WACb,OAAOzgB,KAAKggB,WAAW9E,YAEzBwF,iBAAkB,WAIhB,OAAOpG,EAAWta,KAAKwgB,aAAcxgB,KAAKygB,cAAe,EAAG,KAE9DE,oBAAqB,WAEnB,IAAIlG,EAAOH,EAAWta,KAAK0gB,kBAE3B,OADAjG,EAAK4B,SAAS5B,EAAKS,WAAa,EAAG,GAC5BT,EAAKU,WAEdyF,gBAAiB,WACf,MAAO,OAAOriB,OAAOyB,KAAK0e,iBAAmB,YAE/CmC,qBAAsB,WACpB,MAAO,eAAetiB,OAAOyB,KAAK6e,cAAgB7e,KAAK0e,iBAAmB,YAE5EoC,yBAA0B,WACxB,MAAO,eAAeviB,OAAOyB,KAAKse,kBAAoB,YAExDyC,MAAO,WAEL,IAAIC,EAAM,gBAAShhB,KAAKqd,WAAWze,cAEnC,MAAY,QAARoiB,GAGe,QAARA,GAKJ,gBAAYhhB,KAAKogB,iBAE1B3V,QAAS,WACP,IAAI0U,EAAcnf,KAAKmf,YACnBC,EAAYpf,KAAKof,UACjBW,EAAe,EAASZ,GACxBa,EAAa,EAASZ,GAC1B,MAAO,CAELD,YAAaA,EACbY,aAAcA,EACdkB,kBAAmBlB,EAAe/f,KAAKkhB,iBAAiBnB,GAAgB/f,KAAKge,oBAE7EoB,UAAWA,EACXY,WAAYA,EACZmB,gBAAiBnB,EAAahgB,KAAKkhB,iBAAiBlB,GAAc,GAElEpd,SAAU5C,KAAKohB,aAAapB,GAE5BrhB,OAAQqB,KAAKogB,eACbG,eAAgBvgB,KAAKugB,eACrBc,IAAKrhB,KAAK+gB,QAIdO,eAAgB,WAKd,IAAIvR,EAAM/P,KAAKigB,YACXpQ,EAAM7P,KAAKkgB,YACf,OAAO,SAAUzF,GAGf,OADAA,EAAO,EAASA,GACT1K,GAAO0K,EAAO1K,GAAOF,GAAO4K,EAAO5K,IAG9CuR,aAAc,WACZ,IAAIzb,EAAQ3F,KAORuhB,EAAUvhB,KAAKshB,eAEnB,OAAO,SAAU7G,GAEfA,EAAO,EAASA,GAChB,IAAI+G,EAAMpG,EAAUX,GACpB,SAAU8G,EAAQ9G,KAAS9U,EAAM0a,uBAAuBmB,EAAK/G,MAIjEyG,iBAAkB,WAEhB,OAAOtF,EAAoB5b,KAAKugB,eAAgB1e,GAAcA,GAAc,CAI1EiZ,KAAMrD,EACNsD,MAAOvD,EACPwD,IAAKxD,GACJxX,KAAKkd,mBAAoB,GAAI,CAG9BuE,UAAMja,EACNka,YAAQla,EACRma,YAAQna,EAER8T,SAAUlE,MAGdwK,gBAAiB,WAEf,OAAOhG,EAAoB5b,KAAKugB,eAAgB,CAC9CzF,KAAMrD,EACNsD,MAAO1D,EACPiE,SAAUlE,KAGdyK,kBAAmB,WAEjB,OAAOjG,EAAoB5b,KAAKugB,eAAgB,CAC9CpD,QAAS9F,EACTiE,SAAUlE,KAGd0K,uBAAwB,WAGtB,OAAOlG,EAAoB5b,KAAKugB,eAAgB,CAC9CpD,QAASnd,KAAK+e,qBAAuBxH,EACrC+D,SAAUlE,KAGd2K,UAAW,WAIT,IAAIC,EAAK,IAAIvG,KAAKwG,aAAa,CAACjiB,KAAKogB,gBAAiB,CACpDzR,MAAO,UACPuT,qBAAsB,EACtBC,sBAAuB,EACvBC,sBAAuB,EACvBC,SAAU,aAGZ,OAAO,SAAU5H,GACf,OAAOuH,EAAGlG,OAAOrB,EAAKU,aAI1BmH,mBAAoB,WAClB,IAAIvS,EAAM/P,KAAKigB,YACf,OAAOjgB,KAAK4C,UAAYmN,GAAOqM,EAAgBS,EAAa7c,KAAKggB,aAAejQ,GAElFwS,iBAAkB,WAChB,IAAIxS,EAAM/P,KAAKigB,YACf,OAAOjgB,KAAK4C,UAAYmN,GAAOqM,EAAgBO,EAAW3c,KAAKggB,aAAejQ,GAEhFyS,kBAAmB,WACjB,IAAIzS,EAAM/P,KAAKigB,YACf,OAAOjgB,KAAK4C,UAAYmN,GAAOqM,EAAgBK,EAAYzc,KAAKggB,aAAejQ,GAEjF0S,kBAAmB,WAEjB,OAAOziB,KAAK4C,UAEd8f,kBAAmB,WACjB,IAAI7S,EAAM7P,KAAKkgB,YACf,OAAOlgB,KAAK4C,UAAYiN,GAAOqM,EAAiBQ,EAAc1c,KAAKggB,aAAenQ,GAEpF8S,iBAAkB,WAChB,IAAI9S,EAAM7P,KAAKkgB,YACf,OAAOlgB,KAAK4C,UAAYiN,GAAOqM,EAAiBU,EAAa5c,KAAKggB,aAAenQ,GAEnF+S,mBAAoB,WAClB,IAAI/S,EAAM7P,KAAKkgB,YACf,OAAOlgB,KAAK4C,UAAYiN,GAAOqM,EAAiBY,EAAe9c,KAAKggB,aAAenQ,GAGrFyL,SAAU,WAYR,IAXA,IAAIuH,EAAS,GACTC,EAAW9iB,KAAK0gB,iBAChBF,EAAesC,EAAS7H,cACxBwF,EAAgBqC,EAAS5H,WACzB6H,EAAc/iB,KAAK2gB,oBACnBqC,EAAaF,EAASG,SAEtBC,GAAcljB,KAAKmgB,mBAAqB6C,EAAa,EAAI,GAAKhjB,KAAKmgB,mBAEnEgD,EAAa,EAAID,EAAaF,EAEzBI,EAAO,EAAGA,EAAO,GAAKD,EAAaJ,EAAaK,IAAQ,CAE/DP,EAAOO,GAAQ,GAEf,IAAK,IAAIC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAE1BF,IACA,IAAI1I,EAAOH,EAAWkG,EAAcC,EAAe0C,GAC/CpI,EAAQN,EAAKS,WACboI,EAASlI,EAAUX,GACnB8I,EAAcvjB,KAAKohB,aAAa3G,GAEhC+I,EAAWxjB,KAAKsgB,mBAAmBgD,EAAQ,EAASA,IACxDE,EAAW,eAASA,IAAa,eAAQA,GAEzC,CACE7mB,MAAO6mB,GACL,eAAcA,GAAY3hB,GAAc,CAC1ClF,MAAO,IACN6mB,GAEH,CACE7mB,MAAO,IAETkmB,EAAOO,GAAM5lB,KAAK,CAChBgkB,IAAK8B,EAELtI,IAAKhb,KAAK+hB,UAAUtH,GACpBgJ,MAAOzjB,KAAKkhB,iBAAiBzG,GAE7BiJ,YAAa3I,IAAU0F,EACvBkD,WAAYJ,EAEZK,KAAMJ,KAKZ,OAAOX,GAETgB,iBAAkB,WAChB,IAAIxc,EAASrH,KAEb,OAAOA,KAAKsb,SAAS,GAAG5c,KAAI,SAAUolB,GACpC,MAAO,CACLC,KAAM1c,EAAOya,uBAAuB,EAASgC,EAAEtC,MAC/CiC,MAAOpc,EAAOwa,kBAAkB,EAASiC,EAAEtC,YAKnD3hB,OAAQoR,EAAS,GAAIrT,GAAgBqT,EAAQW,IAAiB,SAAU9R,EAAUC,GAChF,IAAImf,EAAW9D,EAAUtb,IAAa,GAClCkkB,EAAM5I,EAAUrb,IAAa,GAE5Bgc,EAAWmD,EAAU8E,KACxBhkB,KAAKof,UAAYF,GAAYlf,KAAKof,UAClCpf,KAAKmf,YAAcD,MAEnBthB,GAAgBqT,EAAQ,eAAe,SAAqBgT,EAAQC,GAIlED,IAAWC,GACblkB,KAAK0F,MAAMoM,GAAkB9R,KAAK8e,YAAc,EAASmF,IAAW,KAAOA,GAAU,OAErFrmB,GAAgBqT,EAAQ,WAAW,SAAiBnR,EAAUC,GAC3D,gBAAWD,EAAUC,IACxBC,KAAK0F,MAAM,OAAoB5F,MAE/BlC,GAAgBqT,EAAQ,UAAU,SAAgBnR,GAEpDE,KAAKof,UAAYpf,KAAKmf,aAAe/D,EAAUpb,KAAK4R,KAAoB5R,KAAKmkB,cAAcnkB,KAAKwd,aAAexd,KAAKqf,aAEpHrf,KAAKokB,SAAStkB,MACZmR,GACJhM,QAAS,WACP,IAAImD,EAASpI,KAEbA,KAAK+F,WAAU,WACbqC,EAAO1C,MAAM,OAAoB0C,EAAOqC,aAG5CpK,QAAS,WACPL,KAAKokB,SAAQ,IAIfvO,UAAW,WACT7V,KAAKokB,SAAQ,IAIfhf,YAAa,WACXpF,KAAKokB,SAAQ,IAEf7jB,cAAe,WACbP,KAAKokB,SAAQ,IAEf5jB,QAAS,CAEP0W,MAAO,WACAlX,KAAK4C,UACR,eAAa5C,KAAKgE,MAAMqgB,OAG5B7W,KAAM,WACCxN,KAAK4C,UACR,eAAY5C,KAAKgE,MAAMqgB,OAI3BD,QAAS,SAAiBvV,GACxB,IAAItG,EAASvI,KAET6O,EACF7O,KAAK+F,WAAU,WACb,gBAAU,WACRwC,EAAOgX,QAAS,QAIpBvf,KAAKuf,QAAS,GAGlBF,SAAU,WACR,OAAO,EAAS/E,MAElB6J,cAAe,SAAuB1J,GAGpC,OAAO,EAAeA,EAAMza,KAAKigB,YAAajgB,KAAKkgB,cAErDoE,aAAc,SAAsB7J,GAClC,IAAI5R,EAAS7I,KAIbA,KAAK+F,WAAU,WACb8C,EAAOnD,MAAM,OAAqB0V,EAAUX,IAAS,GAAI,EAASA,IAAS,UAI/E8J,iBAAkB,SAA0B7jB,GAE1CV,KAAKsf,cAAgBtf,KAAK4C,UAA2B,UAAflC,EAAM8E,MAE9Cgf,iBAAkB,SAA0B9jB,GAI1C,IAAIV,KAAKwe,SAAT,CAKA,IAAIiG,EAAS/jB,EAAM+jB,OACfC,EAAUhkB,EAAMgkB,QAChB/c,EAAUjH,EAAMiH,QAEpB,GAAK,OAAAqX,EAAA,MAAc,CAAC,OAAa,OAAe,OAAU,OAAW,OAAW,OAAS,OAAY,QAAYrX,GAAjH,CAKA,eAAUjH,GACV,IAAIsf,EAAa1F,EAAWta,KAAKggB,YAC7B2E,EAAYrK,EAAWta,KAAKggB,YAC5BhF,EAAMgF,EAAW7E,UACjByJ,EAAmB5kB,KAAKmkB,cAAcnkB,KAAKqf,YAC3C0B,EAAQ/gB,KAAK+gB,MAEbpZ,IAAY,QAEdqY,GAAcyE,EAASC,EAAU7H,EAAeF,EAAaF,GAAauD,GAE1E2E,EAAYrK,EAAW0F,GACvB2E,EAAUxI,QAAQ,IACTxU,IAAY,QAErBqY,GAAcyE,EAASC,EAAU5H,EAAiBF,EAAeF,GAAesD,GAEhF2E,EAAYrK,EAAW0F,GACvB2E,EAAUtI,SAASsI,EAAUzJ,WAAa,GAC1CyJ,EAAUxI,QAAQ,IACTxU,IAAY,QAErBqY,EAAW7D,QAAQnB,GAAO+F,EAAQ,GAAK,IACvCf,EAAahgB,KAAKmkB,cAAcnE,GAChC2E,EAAY3E,GACHrY,IAAY,QAErBqY,EAAW7D,QAAQnB,GAAO+F,GAAS,EAAI,IACvCf,EAAahgB,KAAKmkB,cAAcnE,GAChC2E,EAAY3E,GACHrY,IAAY,QAErBqY,EAAW7D,QAAQnB,EAAM,GACzBgF,EAAahgB,KAAKmkB,cAAcnE,GAChC2E,EAAY3E,GACHrY,IAAY,QAErBqY,EAAW7D,QAAQnB,EAAM,GACzBgF,EAAahgB,KAAKmkB,cAAcnE,GAChC2E,EAAY3E,GACHrY,IAAY,QAErBqY,EAAa4E,EACbD,EAAY3E,GACHrY,IAAY,SAErBqY,EAAa,EAAShgB,KAAK+f,eAAiB6E,EAC5CD,EAAY3E,GAGThgB,KAAKshB,eAAeqD,IAAe5I,EAAWiE,EAAYhgB,KAAKggB,cAGlEhgB,KAAKof,UAAYhE,EAAU4E,IAI7BhgB,KAAKkX,WAEP2N,cAAe,SAAuBnkB,GAEpC,IAAIiH,EAAUjH,EAAMiH,QAChBqY,EAAahgB,KAAKggB,WAElBrY,IAAY,QAAcA,IAAY,SACxC,eAAUjH,GAELV,KAAK4C,UAAa5C,KAAK+M,UAAa/M,KAAKohB,aAAapB,KACzDhgB,KAAKmf,YAAc/D,EAAU4E,GAC7BhgB,KAAKskB,aAAatE,IAIpBhgB,KAAKkX,UAGT4N,WAAY,SAAoB9J,GAE9B,IAAI+E,EAAe/f,KAAK+f,aACpBC,EAAahgB,KAAKggB,WAClB+E,EAAc,EAAS/J,EAAIwG,KAE1BxhB,KAAK4C,UAAaoY,EAAI2I,YAAe3jB,KAAKohB,aAAa2D,KACrD/kB,KAAK+M,WAGR/M,KAAKmf,YAAc/D,EAAUW,EAAWgJ,EAAahF,GAAgBA,EAAegF,GACpF/kB,KAAKskB,aAAaS,IAGpB/kB,KAAKof,UAAYhE,EAAUW,EAAWgJ,EAAa/E,GAAcA,EAAa1F,EAAWyK,IAEzF/kB,KAAKkX,UAGT8N,eAAgB,WACdhlB,KAAKof,UAAYhE,EAAUpb,KAAKmkB,cAActH,EAAa7c,KAAKggB,eAElEiF,aAAc,WACZjlB,KAAKof,UAAYhE,EAAUpb,KAAKmkB,cAAcxH,EAAW3c,KAAKggB,eAEhEkF,cAAe,WACbllB,KAAKof,UAAYhE,EAAUpb,KAAKmkB,cAAc1H,EAAYzc,KAAKggB,eAEjEmF,iBAAkB,WAEhBnlB,KAAKof,UAAYhE,EAAUpb,KAAKmkB,cAAcnkB,KAAKqf,cAErD+F,cAAe,WACbplB,KAAKof,UAAYhE,EAAUpb,KAAKmkB,cAAczH,EAAc1c,KAAKggB,eAEnEqF,aAAc,WACZrlB,KAAKof,UAAYhE,EAAUpb,KAAKmkB,cAAcvH,EAAa5c,KAAKggB,eAElEsF,eAAgB,WACdtlB,KAAKof,UAAYhE,EAAUpb,KAAKmkB,cAAcrH,EAAe9c,KAAKggB,eAEpEuF,cAAe,WACRvlB,KAAK4C,WACR5C,KAAKof,UAAYpf,KAAKmf,aAAe/D,EAAUpb,KAAKqf,YACpDrf,KAAKkX,WAIX5a,OAAQ,SAAgBC,GACtB,IAAIipB,EAASxlB,KAGb,GAAIA,KAAKsd,OACP,OAAO/gB,IAGT,IAAIijB,EAAUxf,KAAKwf,QACfC,EAAWzf,KAAKyf,SAChBC,EAAQ1f,KAAK0f,MACbC,EAAS3f,KAAK2f,OACdC,EAAgB5f,KAAK4f,cACrBC,EAAa7f,KAAK6f,WAClBC,EAAW9f,KAAK8f,SAChBld,EAAW5C,KAAK4C,SAChB4b,EAAWxe,KAAKwe,SAChBe,EAASvf,KAAKuf,OACdwB,EAAQ/gB,KAAK+gB,MACb3B,EAAYpf,KAAKof,UACjBD,EAAcnf,KAAKmf,YACnBza,EAAS1E,KAAK0E,OACd+gB,GAAiBzlB,KAAK2e,cACtB+G,EAAWtK,EAAUpb,KAAKqf,YAC1BsG,GAAkB3lB,KAAKue,iBAEvBpK,EAAU5X,EAAE,SAAU,CACxBoB,YAAa,2CACbhB,MAAO,CACL,aAAciG,EACdmK,SAAU/M,KAAK+M,UAAYnK,GAE7BhG,MAAO,CACLd,GAAI0jB,EACJoG,IAAKjG,EACLrK,KAAM,SACND,SAAUzS,EAAW,KAAO,KAG5B,gBAAiB,gBAASuc,GAG1B,YAAaI,EAAS,SAAW,MACjC,cAAeA,EAAS,OAAS,MAEnC1Q,GAAI,CAGF6E,MAAO1T,KAAKulB,cACZrO,MAAOlX,KAAKulB,gBAEbvlB,KAAK+f,aAAe,CAEvBxjB,EAAE,MAAO,CACPoB,YAAa,WACZ,KAAKY,OAAO,gBAASyB,KAAKoe,eAAgB,OAAQ7hB,EAAE,MAAOyD,KAAKkhB,iBAAiBlhB,KAAK+f,gBAAkB/f,KAAKge,qBAAuB,KAEvI7J,EAAU5X,EAAE,SAAU,CACpBoB,YAAa,oBACbhB,MAAO,CACL,UAAWqD,KAAKud,YAElB3gB,MAAO,CACLuW,MAAOnT,KAAK+f,cAAe/f,KAAK6lB,mBAA4B,OAE7D,CAAC1R,IAEJ,IAAI2R,EAAW,CACb/E,MAAOA,GAELgF,EAAW,CACbC,OAAQ,IAGNC,EAAepkB,GAAcA,GAAc,GAAIkkB,GAAW,GAAI,CAChEG,MAAOnF,IAGLoF,EAAetkB,GAAcA,GAAc,GAAIkkB,GAAW,GAAI,CAChEG,OAAQnF,IAGNqF,EAAkBpmB,KAAKwT,cAAc,OAA0BsS,IAAavpB,EAAE,OAAqB,CACrGV,MAAOoqB,IAELI,EAAgBrmB,KAAKwT,cAAc,OAAwBsS,IAAavpB,EAAE,OAAwB,CACpGV,MAAOoqB,IAELK,EAAiBtmB,KAAKwT,cAAc,OAAyBsS,IAAavpB,EAAE,OAAkB,CAChGV,MAAOoqB,IAELM,EAAiBvmB,KAAKwT,cAAc,OAA0BsS,IAAavpB,EAAE,OAAiB,CAChGV,MAAOkqB,IAELS,EAAiBxmB,KAAKwT,cAAc,OAA0BsS,IAAavpB,EAAE,OAAkB,CACjGV,MAAOsqB,IAELM,EAAgBzmB,KAAKwT,cAAc,OAAyBsS,IAAavpB,EAAE,OAAwB,CACrGV,MAAOsqB,IAELO,EAAkB1mB,KAAKwT,cAAc,OAA2BsS,IAAavpB,EAAE,OAAqB,CACtGV,MAAOsqB,IAGLQ,EAAa,SAAoBzQ,EAASuN,EAAOrZ,EAASwc,EAAaC,GACzE,OAAOtqB,EAAE,SAAU,CACjBoB,YAAa,gCACbhB,MAAO,CAAC6oB,EAAO1E,yBAA0B,CACvCle,SAAUgkB,IAEZhqB,MAAO,CACLuW,MAAOsQ,GAAS,KAChBje,KAAM,SACN6P,SAAUmJ,EAAW,KAAO,KAC5B,aAAciF,GAAS,KACvB,gBAAiBmD,EAAc,OAAS,KACxC,oBAAqBC,GAAY,MAEnChY,GAAI+X,EAAc,GAAK,CACrBlT,MAAOtJ,IAER,CAAC7N,EAAE,MAAO,CACXK,MAAO,CACL,cAAe,SAEhB,CAACsZ,OAIF4Q,EAAOvqB,EAAE,MAAO,CAClBoB,YAAa,wBACbf,MAAO,CACLd,GAAI4jB,EACJpK,KAAM,QACND,SAAUmJ,EAAW,KAAO,KAC5B,cAAe5b,EAAW,OAAS,KACnC,aAAc5C,KAAK4d,UAAY,KAC/B,gBAAiB+B,IAElB,CAAC8F,EAAgBlpB,IAAMoqB,EAAWP,EAAiBpmB,KAAKie,gBAAiBje,KAAKglB,eAAgBhlB,KAAKsiB,mBAAoB,qBAAsBqE,EAAWN,EAAermB,KAAKme,cAAene,KAAKilB,aAAcjlB,KAAKuiB,iBAAkB,gBAAiBoE,EAAWL,EAAgBtmB,KAAKke,eAAgBle,KAAKklB,cAAellB,KAAKwiB,kBAAmB,YAAamE,EAAWJ,EAAgBvmB,KAAK0d,kBAAmB1d,KAAKmlB,iBAAkBnlB,KAAKyiB,kBAAmB,QAASkE,EAAWH,EAAgBxmB,KAAK8d,eAAgB9d,KAAKolB,cAAeplB,KAAK0iB,kBAAmB,UAAWiE,EAAWF,EAAezmB,KAAK+d,cAAe/d,KAAKqlB,aAAcrlB,KAAK2iB,iBAAkB,cAAe8C,EAAgBlpB,IAAMoqB,EAAWD,EAAiB1mB,KAAK6d,gBAAiB7d,KAAKslB,eAAgBtlB,KAAK4iB,mBAAoB,qBAE7wBmE,EAAexqB,EAAE,SAAU,CAC7BoB,YAAa,uDACbhB,MAAO,CACL,aAAciG,GAEhBhG,MAAO,CACLd,GAAI8jB,EACJ,YAAaL,EAAS,SAAW,KACjC,cAAeA,EAAS,OAAS,MAEnCzhB,IAAK,gBACJkC,KAAK4hB,gBAAgB5hB,KAAK0gB,mBAEzBsG,EAAgBzqB,EAAE,MAAO,CAC3BoB,YAAa,wDACbf,MAAO,CACL,cAAe,SAEhBoD,KAAK6jB,iBAAiBnlB,KAAI,SAAUolB,EAAGmD,GACxC,OAAO1qB,EAAE,QAAS,CAChBoB,YAAa,oBACbhB,MAAO,CACL,aAAciG,GAEhBhG,MAAO,CACLuW,MAAO2Q,EAAEL,QAAUK,EAAEC,KAAO,KAAOD,EAAEL,MACrC,aAAcK,EAAEL,OAElB3lB,IAAKmpB,GACJnD,EAAEC,UAGHmD,EAAYlnB,KAAKsb,SAAS5c,KAAI,SAAU0kB,GAC1C,IAAI+D,EAAS/D,EAAK1kB,KAAI,SAAUsc,EAAKoM,GACnC,IAAIC,EAEAC,EAAatM,EAAIwG,MAAQrC,EACzBoI,EAAWvM,EAAIwG,MAAQpC,EACvBoI,EAAUxM,EAAIwG,MAAQkE,EACtB+B,EAAS/iB,EAAO,SAASnG,OAAOyc,EAAIwG,IAAK,MAEzCkG,EAAOnrB,EAAE,OAAQ,CACnBoB,YAAa,0CAEbhB,OAAQ0qB,EAAS,CAEfnQ,MAAOqQ,GAAY/B,EAAOlG,aAE1B1c,SAAUoY,EAAI2I,YAAc/gB,EAC5B+kB,OAAQL,GACP1pB,GAAgBypB,EAAQ7B,EAAO5E,gBAAiB0G,GAAa1pB,GAAgBypB,EAAQ7B,EAAO3E,qBAAsB2G,GAAW7B,IAAmB2B,GAActM,EAAI0I,aAAc9lB,GAAgBypB,EAAQ,sBAAuBG,GAAW7B,KAAoB2B,IAAeC,GAAW3pB,GAAgBypB,EAAQ,cAAeG,GAAW7B,KAAoB2B,GAAcC,GAAW3pB,GAAgBypB,EAAQ,cAAerM,EAAI0I,cAAgB4D,GAAa1pB,GAAgBypB,EAAQ,cAAeG,GAAW7B,KAAoB2B,IAAeC,GAAYvM,EAAI0I,aAAc9lB,GAAgBypB,EAAQ,oBAAqBC,GAActM,EAAI0I,eAAiB1I,EAAI2I,YAAa0D,GACtpBxY,GAAI,CACF6E,MAAO,WACL,OAAO8R,EAAOV,WAAW9J,MAG5BA,EAAIA,KACP,OAAOze,EAAE,MACT,CACEoB,YAAa,UACbhB,MAAOqe,EAAI2I,WAAa,WAAa3I,EAAI4I,KAAKjnB,OAAS,GACvDC,MAAO,CACLd,GAAI2rB,EACJnS,KAAM,SACN,YAAa0F,EAAIwG,IAGjB,cAAexG,EAAI0I,YAAc,KAAO,OACxC,gBAAiB1I,EAAI2I,YAAc/gB,EAAW,OAAS,KACvD,aAAc,CAACoY,EAAIyI,MAAO6D,EAAa,IAAI/oB,OAAOinB,EAAOpH,cAAe,KAAO,KAAMoJ,EAAU,IAAIjpB,OAAOinB,EAAOnH,WAAY,KAAO,MAAM5c,OAAO8Z,EAAA,MAAUpc,KAAK,KAIhK,gBAAiBmoB,EAAa,OAAS,KACvC,eAAgBA,EAAa,OAAS,MAExCxpB,IAAKspB,GACJ,CAACM,OAKN,OAAOnrB,EAAE,MAAO,CACdoB,YAAa,iBACbG,IAAKslB,EAAK,GAAG5B,KACZ2F,MAELD,EAAY3qB,EAAE,MAAO,CAEnBoB,YAAa,uBACbgR,MAAO/L,EAAW,CAChBglB,cAAe,QACb,IAEHV,GACH,IAAIW,EAAYtrB,EAAE,SAAU,CAC1BoB,YAAa,wEACbf,MAAO,CACLd,GAAI+jB,IAEL,CAACtjB,EAAE,MAAO,CACXoB,YAAa,SACZqC,KAAK2d,aACJmK,EAAQvrB,EAAE,MAAO,CACnBoB,YAAa,kDACbf,MAAO,CACLd,GAAI6jB,EACJrK,KAAM,cACND,SAAUmJ,EAAW,KAAO5b,EAAW,KAAO,IAC9C,aAAcwc,EAAUlgB,MAAM,GAAI,GAElC,uBAAwBc,KAAKyd,eAAiB,KAC9C,kBAAmBmC,EACnB,mBAAoBC,EAIpB,gBAAiBjd,EAAW,OAAS,KACrC,wBAAyBkd,GAE3BjR,GAAI,CACFsI,QAASnX,KAAK6kB,cACd3N,MAAOlX,KAAKukB,iBACZ/W,KAAMxN,KAAKukB,kBAEbzV,IAAK,QACJ,CAACiY,EAAcC,EAAeE,EAAWW,IAExCE,EAAQ/nB,KAAKwT,gBACjBuU,EAAQA,EAAQxrB,EAAE,SAAU,CAC1BoB,YAAa,qBACZoqB,GAASxrB,IACZ,IAAIyrB,EAAUzrB,EAAE,MAAO,CACrBoB,YAAa,mBACbgR,MAAO3O,KAAKgd,MAAQ,GAAK,CACvB5J,MAAOpT,KAAKoT,OAEdxW,MAAO,CACLd,GAAI2jB,EACJuB,IAAKD,EAAQ,MAAQ,MACrBkH,KAAMjoB,KAAKogB,gBAAkB,KAC7B9K,KAAM,QACN,gBAAiB1S,EAAW,OAAS,KAErC,gBAAiB5C,KAAK+c,cAAgB,KAEtC,uBAAwB/c,KAAKye,iBAAmB,KAChD,mBAAoB,CAEpBze,KAAKoV,QAAQ,oBAAqBoK,EAASK,GAAYpe,OAAO8Z,EAAA,MAAUpc,KAAK,MAE/E0P,GAAI,CACFsI,QAASnX,KAAKwkB,mBAEf,CAACrQ,EAAS2S,EAAMgB,EAAOC,IAE1B,OAAOxrB,EAAE,MAAO,CACdoB,YAAa,aACbhB,MAAO,CACL,UAAWqD,KAAKgd,QAEjB,CAACgL,O,iEC3+BJE,GAAO,uBACPC,GAAa,aACbC,GAAa,aAEbC,GAAiB,SAAwBje,GAC3C,IAAIke,EAAW,SAAkB5nB,GAC/B0J,EAAQ1J,EAAM8E,OAAS2iB,GAAYznB,IAIrC,OADA4nB,EAASC,GAAKne,EACPke,GAGL,GAAkB,SAAyBzZ,EAAIhJ,EAAIyiB,GACrD,eAAWzZ,EAAIhJ,EAAIsiB,GAAYG,EAAU,QACzC,eAAWzZ,EAAIhJ,EAAIuiB,GAAYE,EAAU,SAIvC,GAAY,SAAmBziB,EAAIrJ,GACrC,IAAIgsB,EAAahsB,EAAKuB,MAClBqM,OAAyB,IAAfoe,EAAwB,KAAOA,EAE7C,GAAI,QAAY,CACd,IAAIF,EAAWziB,EAAGqiB,IACdO,EAAc,eAAWH,GACzBI,IAAmBD,GAAeH,EAASC,KAAOne,GAElDqe,GAAeC,IACjB,IAAgB,EAAO7iB,EAAIyiB,UACpBziB,EAAGqiB,KAGR,eAAW9d,IAAYse,IACzB7iB,EAAGqiB,IAAQG,GAAeje,GAC1B,IAAgB,EAAMvE,EAAIA,EAAGqiB,QAMxBS,GAAU,CACnBte,KAAM,GACNkB,iBAAkB,GAClBF,OAAQ,SAAgBxF,GACtB,GAAUA,EAAI,CACZ9H,MAAO,SCpDb,SAAS,GAAQqD,EAAQC,GAAkB,IAAIC,EAAOtD,OAAOsD,KAAKF,GAAS,GAAIpD,OAAOuD,sBAAuB,CAAE,IAAIC,EAAUxD,OAAOuD,sBAAsBH,GAAaC,IAAgBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO1D,OAAO2D,yBAAyBP,EAAQM,GAAKxD,eAAgBoD,EAAK9D,KAAKoE,MAAMN,EAAME,GAAY,OAAOF,EAE9U,SAAS,GAAcV,GAAU,IAAK,IAAIkB,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,GAAQA,EAAI,EAAK,GAAQ9D,OAAOiE,IAAS,GAAMC,SAAQ,SAAUpE,GAAO,GAAgB8C,EAAQ9C,EAAKmE,EAAOnE,OAAsBE,OAAOmE,0BAA6BnE,OAAOoE,iBAAiBxB,EAAQ5C,OAAOmE,0BAA0BF,IAAmB,GAAQjE,OAAOiE,IAASC,SAAQ,SAAUpE,GAAOE,OAAOC,eAAe2C,EAAQ9C,EAAKE,OAAO2D,yBAAyBM,EAAQnE,OAAe,OAAO8C,EAE7gB,SAAS,GAAgB/C,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAuBpM,IC3BH,GD2BO,GAAQ,eAAS,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAI/B,EAAA,MAAU,SAAgB,SAAiB,eAAK8sB,GAAA,KAAe,CAAC,cAAe,eAAK,QAAkB,CAAC,eAAgB,GAAI,CAE7OC,WAAY,eAAS,QAAmB,GAExCC,cAAe,eAAS,OAAkB,aAG1CC,eAAgB,eAAS,QAEzB3K,cAAe,eAAS,QACxB6J,KAAM,eAAS,QAEfe,UAAW,eAAS,QAEpBnc,YAAa,eAAS,QACtBE,SAAU,eAAS,QAAmB,GAEtCsU,IAAK,eAAS,OAAmB,MACjCtjB,MAAO,eAAS,OAAkB,OAIzBkrB,GAAqC,aAAI9sB,OAAO,CACzDC,KAAM,OACN0P,WAAY,CACV,UAAW6c,IAEbvlB,OAAQ,CAACtH,EAAA,KAAS,QAAe,QAAgB8sB,GAAA,KAAe,SAChE/sB,MAAO,GACPY,KAAM,WACJ,MAAO,CACLysB,WAAW,EACXC,UAAU,IAGdvlB,SAAU,CACRwlB,SAAU,WACR,OAAOppB,KAAK0E,UAEd2kB,QAAS,WACP,OAAOrpB,KAAK0E,OAAO,YAErB4kB,OAAQ,WACN,OAAOtpB,KAAK0E,OAAO,aAErB6kB,UAAW,WACT,OAAOvpB,KAAK0E,OAAO,YAErB8kB,YAAa,WACX,OAAoB,IAAbxpB,KAAKqhB,IAAe,OAAqB,IAAbrhB,KAAKqhB,IAAgB,MAAQ,OAGpE7gB,QAAS,CACP0W,MAAO,WACAlX,KAAK4C,UACR,eAAa5C,KAAKgE,MAAMD,SAG5ByJ,KAAM,WACCxN,KAAK4C,UACR,eAAY5C,KAAKgE,MAAMD,SAG3B0lB,SAAU,SAAkB/oB,GAC1BV,KAAKmpB,SAA0B,UAAfzoB,EAAM8E,MAExBkkB,YAAa,SAAqBC,GAChC3pB,KAAKkpB,UAAYS,IAGrBrtB,OAAQ,SAAgBC,GACtB,IAAI8qB,EAEA+B,EAAWppB,KAAKopB,SAChBC,EAAUrpB,KAAKqpB,QACfC,EAAStpB,KAAKspB,OACdC,EAAYvpB,KAAKupB,UACjB3mB,EAAW5C,KAAK4C,SAChBmK,EAAW/M,KAAK+M,SAChBJ,EAAW3M,KAAK2M,SAChBvQ,EAAO4D,KAAK5D,KACZ2Z,EAAQ/V,KAAK+V,MACbrS,EAAU1D,KAAK0D,QACfkmB,EAAO5pB,KAAK4pB,KACZV,EAAYlpB,KAAKkpB,UACjBC,EAAWnpB,KAAKmpB,SAChB/K,EAAgBpe,KAAKoe,cACrB0K,EAAgB9oB,KAAK8oB,cACrBD,EAAa7oB,KAAK6oB,WAClB9qB,EAAQ,gBAASiC,KAAKjC,QAAU,GAChC8rB,GAAoB,IAAV9T,GAAmBpJ,IAAa5O,EAC1C+rB,EAAW,CACbZ,UAAWA,EACXC,SAAUA,EACVpT,MAAOA,EACPgU,OAAQrmB,GAENsmB,EAAUztB,EAAE,SAAU,CACxBoB,YAAa,MACbhB,OAAQ0qB,EAAS,GAAI,GAAgBA,EAAQ,OAAO9oB,OAAOuqB,GAAgBD,GAAa,GAAgBxB,EAAQ,OAAO9oB,OAAOqrB,GAAOA,GAAO,GAAgBvC,EAAQ,UAAWwB,GAAa,GAAgBxB,EAAQ,kBAAmBwB,GAAa,GAAgBxB,EAAQ,2BAA4BwB,GAAaxB,GACrTzqB,MAAO,CACLd,GAAIstB,EACJ5jB,KAAM,SACN5C,SAAUA,EACV,gBAAiB,SACjB,gBAAiBc,EAAU,OAAS,QACpC,eAAgBmmB,EAAU,OAAS,KACnC,gBAAiBld,EAAW,OAAS,MAEvCb,WAAY,CAAC,CACX1P,KAAM,UACN2B,MAAOiC,KAAK0pB,cAEd7a,GAAI,CACFob,UAAWjqB,KAAK6H,YAChB6L,MAAO1T,KAAK+D,OACZoT,QAASnX,KAAK+D,OAEd,SAAU/D,KAAKypB,SACf,QAASzpB,KAAKypB,UAEhB3a,IAAK,UACJ,CAAC9O,KAAKkV,kBAAkB,QAA4BlV,KAAKwT,cAAc,OAA0BsW,GAEpGvtB,EAAE,OAAkB,CAClBV,MAAO,CACLquB,MAAO,UAIPC,EAAU5tB,IAEVH,IAASwG,IACXunB,EAAU5tB,EAAE,QAAS,CACnBK,MAAO,CACL4I,KAAM,SACNpJ,KAAMA,GAAQ,KACdwQ,KAAM5M,KAAK4M,MAAQ,KACnB7O,MAAOA,MAMb,IAAIqsB,EAAQ7tB,EAAE,MAAO,CACnBoB,YAAa,gBACbhB,MAAO,CAACqD,KAAKgpB,UAAW,CACtB5hB,KAAM1D,EACN,sBAAuB1D,KAAKtC,QAE9Bd,MAAO,CACLd,GAAIwtB,EACJhU,KAAM,SACND,SAAU,KACV,aAAc,QACd,kBAAmBgU,GAErBxa,GAAI,CACFsI,QAASnX,KAAK+H,WAGhB+G,IAAK,QACJ,CAAC9O,KAAKwT,cAAc,OAAmB,CACxCuW,OAAQrmB,MAGN2mB,EAAS9tB,EAAE,QAAS,CACtBI,MAAOksB,EAAa,UAClB,CAAC,eAAgB,aAAc,YAAa,iBAC9C,CACE,cAAe9qB,GACdiC,KAAKsqB,WAAYtqB,KAAKuqB,eACzB3tB,MAAO,CACLd,GAAIutB,EACJzD,IAAKwD,EACL,eAAgBS,EAAU,OAAS,KACnC,gBAAiBld,EAAW,OAAS,MAEvCb,WAAY,CAAC,CACX1P,KAAM,UACN2B,MAAOiC,KAAK0pB,cAEd7a,GAAI,CAGF,SAEA,SAAenO,GACb,eAAUA,EAAO,CACf8pB,gBAAgB,OAIrB,CAACzsB,EAAQiC,KAAK+oB,gBAAkBhrB,EAAQiC,KAAK6M,aAAe,GAC/D9O,GAASqgB,EAAgB7hB,EAAE,MAAO,CAChCoB,YAAa,WACZygB,GAAiB,KAEpB,OAAO7hB,EAAE,MAAO,CACdoB,YAAa,oCACbhB,MAAO,CAACqD,KAAKiE,eAAgBjE,KAAKkE,cAAe,CAAC,CAChD,YAAa2kB,EACb,gBAAiBA,EACjB,UAAWA,EACX,UAAWA,EACX,uBAAwBA,EACxB3R,MAAOiS,IAAaN,EACpBzhB,KAAM1D,EACN,YAAsB,IAAVqS,EACZ,cAAwB,IAAVA,GACb8S,EAAa,KAAO7oB,KAAKuqB,gBAC5B3tB,MAAO,CACLd,GAAIytB,EACJjU,KAAMuT,EAAa,KAAO,QAC1BZ,KAAMjoB,KAAKioB,MAAQ,KACnBjH,IAAKhhB,KAAKwpB,YACV,gBAAiB5mB,EACjB,gBAAiBmK,IAAanK,EAC9B,kBAAmBymB,EACnB,gBAA0B,IAAVtT,GAAmBpJ,IAAa5O,EAAQ,OAAS,KACjE,gBAAiB4O,EAAW,OAAS,OAEtC,CAACqd,EAASG,EAASC,EAAOC,OCvPjC,SAAS,GAAQjpB,EAAQC,GAAkB,IAAIC,EAAOtD,OAAOsD,KAAKF,GAAS,GAAIpD,OAAOuD,sBAAuB,CAAE,IAAIC,EAAUxD,OAAOuD,sBAAsBH,GAAaC,IAAgBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO1D,OAAO2D,yBAAyBP,EAAQM,GAAKxD,eAAgBoD,EAAK9D,KAAKoE,MAAMN,EAAME,GAAY,OAAOF,EAE9U,SAAS,GAAcV,GAAU,IAAK,IAAIkB,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,GAAQA,EAAI,EAAK,GAAQ9D,OAAOiE,IAAS,GAAMC,SAAQ,SAAUpE,GAAO,GAAgB8C,EAAQ9C,EAAKmE,EAAOnE,OAAsBE,OAAOmE,0BAA6BnE,OAAOoE,iBAAiBxB,EAAQ5C,OAAOmE,0BAA0BF,IAAmB,GAAQjE,OAAOiE,IAASC,SAAQ,SAAUpE,GAAOE,OAAOC,eAAe2C,EAAQ9C,EAAKE,OAAO2D,yBAAyBM,EAAQnE,OAAe,OAAO8C,EAE7gB,SAAS,GAAgB/C,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAmB3M,IAAI,GAAkB,eAAe,QAAS,CAC5C2H,KAAM,SAEJ,GAAa,GAAgBkM,MAC7B,GAAa,GAAgB7V,MAC7B,GAAkB,GAAgBgW,KAClC,GAAmB,GAAgBnR,MAGnC+pB,GAAgB,eAAK,GAAgB,CAAC,QAAS,SAAU,KAAM,WAAY,kBAAmB,QAAS,UACvGC,GAA2B,eAAK,GAA4B,CAAC,iBAAkB,KAAM,OAAQ,MAAO,UAC7F,GAAQ,eAAsB,eAAS,GAAc,GAAc,GAAc,GAAc,GAAc,GAAI5uB,EAAA,MAAU,IAAa2uB,IAAgBC,IAA2B,GAAI,CAEhMC,cAAe,eAAS,OAAkB,SAC1CC,YAAa,eAAS,QAAmB,GACzCC,mBAAoB,eAAS,OAAkB,qBAE/CC,KAAM,eAAS,QAAmB,GAClCC,iBAAkB,eAAS,OAAkB,SAC7CC,iBAAkB,eAAS,OAAkB,SAC7CC,iBAAkB,eAAS,OAAkB,gBAC7CC,gBAAiB,eAAS,QAAmB,GAC7CC,YAAa,eAAS,QAAmB,GACzCC,mBAAoB,eAAS,OAAkB,kBAC/CC,WAAY,eAAS,QACrBC,YAAa,eAAS,QAAmB,GACzCC,mBAAoB,eAAS,OAAkB,sBAC5C,QAGMC,GAA+B,aAAIrvB,OAAO,CACnDC,KAAM,OACNgH,OAAQ,CAACtH,EAAA,KAAS,IAClBD,MAAO,GACPY,KAAM,WACJ,MAAO,CAELgvB,SAAUrQ,EAAUpb,KAAK,MAAqB,GAE9C0rB,WAAW,EAEXC,YAAa,KACb5K,OAAO,EACPgI,eAAgB,GAChB3J,UAAW,KAGfxb,SAAU,CACRgoB,WAAY,WAGV,OAAO5rB,KAAKof,UAAUlgB,MAAM,GAAI,IAElC2sB,aAAc,WACZ,OAAQ7rB,KAAK2rB,aAAe,IAAI5sB,QAAQ,UAAW,KAAO,MAE5D+sB,mBAAoB,WAClB,OAAO1Q,EAAU,EAAcpb,KAAKqrB,cAAgB,KAGxDxrB,OAAQ,GAAS,GAAI,GAAgB,GAAQ,IAAiB,SAAUC,GACtEE,KAAKyrB,SAAWrQ,EAAUtb,IAAa,MACrC,GAAgB,GAAQ,YAAY,SAAkBA,GAEpDE,KAAK0rB,WACP1rB,KAAK0F,MAAM,GAAkB1F,KAAK8e,YAAc,EAAShf,IAAa,KAAOA,GAAY,OAEzF,GAAgB,GAAQ,cAAc,SAAoBA,EAAUC,GAItE,GAAID,IAAaC,GAAYA,EAC3B,IACEC,KAAKgE,MAAM+nB,QAAQ3lB,eACnB,MAAOE,QAET,IACJ9F,QAAS,CAEP0W,MAAO,WACAlX,KAAK4C,UACR,eAAa5C,KAAKgE,MAAM+nB,UAG5Bve,KAAM,WACCxN,KAAK4C,UACR,eAAY5C,KAAKgE,MAAM+nB,UAI3BC,YAAa,SAAqBxK,GAChC,IAAI7b,EAAQ3F,KAEZA,KAAKyrB,SAAWjK,EAEXxhB,KAAKkrB,iBACRlrB,KAAK+F,WAAU,WACbJ,EAAM3B,MAAM+nB,QAAQzkB,MAAK,OAI/B2kB,WAAY,SAAoBzK,GAC9B,IAAIna,EAASrH,KAEbA,KAAK+F,WAAU,WACbsB,EAAO2kB,YAAYxK,OAGvBnU,QAAS,SAAiBmU,GACpBxhB,KAAKyrB,WAAajK,IACpBxhB,KAAKyrB,SAAWjK,IAGpB0K,UAAW,SAAmB3Y,GAC5B,IAAI6L,EAAY7L,EAAI6L,UAChB2B,EAAQxN,EAAIwN,MACZpiB,EAAS4U,EAAI5U,OACbwgB,EAAc5L,EAAI4L,YAClB8B,EAAoB1N,EAAI0N,kBAC5BjhB,KAAK+gB,MAAQA,EACb/gB,KAAK2rB,YAAchtB,EACnBqB,KAAK+oB,eAAiB9H,EACtBjhB,KAAKyrB,SAAWtM,EAChBnf,KAAKof,UAAYA,EAEjBpf,KAAK0F,MAAM,OAAoB6N,IAEjC4Y,cAAe,WAEbnsB,KAAKgsB,YAAY5Q,EAAU,EAAcd,IAActa,KAAK+P,IAAK/P,KAAK6P,QAExEuc,cAAe,WACbpsB,KAAKgsB,YAAYhsB,KAAK8rB,qBAExBO,cAAe,WACbrsB,KAAKgE,MAAM+nB,QAAQzkB,MAAK,IAG1BglB,OAAQ,WACNtsB,KAAK0rB,WAAY,GAEnBa,QAAS,WACP,IAAInkB,EAASpI,KAEbA,KAAK+F,WAAU,WACb,eAAaqC,EAAOpE,MAAMsX,UAE1BlT,EAAO1C,MAAM,YAGjB8mB,SAAU,WACRxsB,KAAK0rB,WAAY,EACjB1rB,KAAK0F,MAAM,SAGb+mB,gBAAiB,SAAyBjwB,GACxC,IAAI0sB,EAAY1sB,EAAK0sB,UACjBC,EAAW3sB,EAAK2sB,SACpB,OAAOnpB,KAAK0sB,eAAexD,GAAaC,EAAW,OAAoB,OAAe,CACpFvsB,MAAO,CACL,cAAe,YAKvBN,OAAQ,SAAgBC,GACtB,IAAIkvB,EAAWzrB,KAAKyrB,SAChB7oB,EAAW5C,KAAK4C,SAChBmK,EAAW/M,KAAK+M,SAChB+d,EAAO9qB,KAAK8qB,KACZ6B,EAAS3sB,KAAK2sB,OACdpvB,EAAeyC,KAAKzC,aACpBsP,EAAc,eAAkB7M,KAAK6M,aAAe7M,KAAKge,oBAAsBhe,KAAK6M,YAEpFoH,EAAU,GAEd,GAAIjU,KAAKsrB,YAAa,CACpB,IAAI7H,EAAQzjB,KAAKirB,iBACjBhX,EAAQzW,KAAKjB,EAAE,OAAS,CACtBV,MAAO,CACL+G,SAAUA,GAAYmK,EACtB6c,KAAM,KACNgD,QAAS5sB,KAAKurB,oBAEhB3uB,MAAO,CACL,aAAc6mB,GAAS,MAEzB5U,GAAI,CACF6E,MAAO1T,KAAKmsB,gBAEb1I,IAGL,GAAIzjB,KAAKmrB,YAAa,CACpB,IAAI0B,EAAS7sB,KAAKgrB,iBAClB/W,EAAQzW,KAAKjB,EAAE,OAAS,CACtBV,MAAO,CACL+G,SAAUA,GAAYmK,EACtB6c,KAAM,KACNgD,QAAS5sB,KAAKorB,oBAEhBxuB,MAAO,CACL,aAAciwB,GAAU,MAE1Bhe,GAAI,CACF6E,MAAO1T,KAAKosB,gBAEbS,IAGL,GAAI7sB,KAAK4qB,YAAa,CACpB,IAAIkC,EAAU9sB,KAAK+qB,iBACnB9W,EAAQzW,KAAKjB,EAAE,OAAS,CACtBV,MAAO,CACL+G,SAAUA,EACVgnB,KAAM,KACNgD,QAAS5sB,KAAK6qB,oBAEhBjuB,MAAO,CACL,aAAckwB,GAAW,MAE3Bje,GAAI,CACF6E,MAAO1T,KAAKqsB,gBAEbS,IAGD7Y,EAAQjS,OAAS,IACnBiS,EAAU,CAAC1X,EAAE,MAAO,CAClBoB,YAAa,wCACbhB,MAAO,CACL,0BAA2BsX,EAAQjS,OAAS,EAC5C,sBAAuBiS,EAAQjS,OAAS,IAEzCiS,KAGL,IAAI8Y,EAAYxwB,EAAE0iB,GAAW,CAC3BthB,YAAa,6BACb9B,MAAO,GAAc,GAAc,GAAI,eAAW4uB,GAAekC,IAAU,GAAI,CAC7ErP,QAAStd,KAAK0rB,UACd3tB,MAAO0tB,EACP3M,aAAa,EACb1L,MAAOpT,KAAK2qB,gBAEd9b,GAAI,CACFqQ,SAAUlf,KAAKisB,WACf7e,MAAOpN,KAAKqN,QACZ5C,QAASzK,KAAKksB,WAEhB/uB,YAAa,eAAKI,EAAc,CAAC,kBAAmB,gBAAiB,iBAAkB,iBAAkB,iBAAkB,gBAAiB,oBAC5IO,IAAK,WACLgR,IAAK,YACJmF,GACH,OAAO1X,EAAE0sB,GAAuB,CAC9BtrB,YAAa,oBACb9B,MAAO,GAAc,GAAc,GAAI,eAAW6uB,GAA0BiC,IAAU,GAAI,CACxF5D,eAAgB0C,EAAWzrB,KAAK+oB,eAAiB,GACjDjtB,GAAIkE,KAAK0E,SACTujB,KAAMjoB,KAAK6rB,aACX7C,UAAW,CAAC,CACV,UAAW8B,EACX,aAAcA,GACb9qB,KAAKgpB,WACRnc,YAAaA,EACbwU,IAAKrhB,KAAK+gB,MACVhjB,MAAO0tB,IAET5c,GAAI,CACFzH,KAAMpH,KAAKssB,OACXU,MAAOhtB,KAAKusB,QACZjP,OAAQtd,KAAKwsB,UAEfrvB,YAAa,GAAgB,GAAI,OAA0BI,EAAa,SAA6ByC,KAAKysB,iBAC1G3d,IAAK,WACJ,CAACie","file":"js/chunk-61aa6e10.790e0c75.js","sourcesContent":["import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_ASIDE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BMediaAside } from './media-aside';\nimport { BMediaBody } from './media-body'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n rightAlign: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA); // --- Main component ---\n// @vue/component\n\nexport var BMedia = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots,\n children = _ref.children;\n var noBody = props.noBody,\n rightAlign = props.rightAlign,\n verticalAlign = props.verticalAlign;\n var $children = noBody ? children : [];\n\n if (!noBody) {\n var slotScope = {};\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n $children.push(h(BMediaBody, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots)));\n var $aside = normalizeSlot(SLOT_NAME_ASIDE, slotScope, $scopedSlots, $slots);\n\n if ($aside) {\n $children[rightAlign ? 'push' : 'unshift'](h(BMediaAside, {\n props: {\n right: rightAlign,\n verticalAlign: verticalAlign\n }\n }, $aside));\n }\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'media'\n }), $children);\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA_ASIDE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA_ASIDE); // --- Main component ---\n// @vue/component\n\nexport var BMediaAside = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA_ASIDE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var verticalAlign = props.verticalAlign;\n var align = verticalAlign === 'top' ? 'start' : verticalAlign === 'bottom' ? 'end' :\n /* istanbul ignore next */\n verticalAlign;\n return h(props.tag, mergeData(data, {\n staticClass: 'media-aside',\n class: _defineProperty({\n 'media-aside-right': props.right\n }, \"align-self-\".concat(align), align)\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA_BODY } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_MEDIA_BODY); // --- Main component ---\n// @vue/component\n\nexport var BMediaBody = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'media-body'\n }), children);\n }\n});","// Localization utilities\nimport { RX_STRIP_LOCALE_MODS } from '../constants/regex';\nimport { arrayIncludes } from './array';\nimport { toString } from './string'; // Languages that are RTL\n\nvar RTL_LANGS = ['ar', 'az', 'ckb', 'fa', 'he', 'ks', 'lrc', 'mzn', 'ps', 'sd', 'te', 'ug', 'ur', 'yi'].map(function (locale) {\n return locale.toLowerCase();\n}); // Returns true if the locale is RTL\n\nexport var isLocaleRTL = function isLocaleRTL(locale) {\n // Determines if the locale is RTL (only single locale supported)\n var parts = toString(locale).toLowerCase().replace(RX_STRIP_LOCALE_MODS, '').split('-');\n var locale1 = parts.slice(0, 2).join('-');\n var locale2 = parts[0];\n return arrayIncludes(RTL_LANGS, locale1) || arrayIncludes(RTL_LANGS, locale2);\n};","export var PLACEMENT_TOP_START = 'top-start';\nexport var PLACEMENT_TOP_END = 'top-end';\nexport var PLACEMENT_BOTTOM_START = 'bottom-start';\nexport var PLACEMENT_BOTTOM_END = 'bottom-end';\nexport var PLACEMENT_RIGHT_START = 'right-start';\nexport var PLACEMENT_RIGHT_END = 'right-end';\nexport var PLACEMENT_LEFT_START = 'left-start';\nexport var PLACEMENT_LEFT_END = 'left-end';","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { contains } from '../utils/dom';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var clickOutMixin = Vue.extend({\n data: function data() {\n return {\n listenForClickOut: false\n };\n },\n watch: {\n listenForClickOut: function listenForClickOut(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.clickOutElement = null;\n this.clickOutEventName = null;\n },\n mounted: function mounted() {\n if (!this.clickOutElement) {\n this.clickOutElement = document;\n }\n\n if (!this.clickOutEventName) {\n this.clickOutEventName = 'click';\n }\n\n if (this.listenForClickOut) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n isClickOut: function isClickOut(event) {\n return !contains(this.$el, event.target);\n },\n _clickOutHandler: function _clickOutHandler(event) {\n if (this.clickOutHandler && this.isClickOut(event)) {\n this.clickOutHandler(event);\n }\n }\n }\n});","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var focusInMixin = Vue.extend({\n data: function data() {\n return {\n listenForFocusIn: false\n };\n },\n watch: {\n listenForFocusIn: function listenForFocusIn(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.focusInElement = null;\n },\n mounted: function mounted() {\n if (!this.focusInElement) {\n this.focusInElement = document;\n }\n\n if (this.listenForFocusIn) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n _focusInHandler: function _focusInHandler(event) {\n if (this.focusInHandler) {\n this.focusInHandler(event);\n }\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Popper from 'popper.js';\nimport { Vue } from '../vue';\nimport { NAME_DROPDOWN } from '../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_TOGGLE } from '../constants/events';\nimport { CODE_DOWN, CODE_ENTER, CODE_ESC, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PLACEMENT_TOP_START, PLACEMENT_TOP_END, PLACEMENT_BOTTOM_START, PLACEMENT_BOTTOM_END, PLACEMENT_RIGHT_START, PLACEMENT_LEFT_START } from '../constants/popper';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { HTMLElement } from '../constants/safe-types';\nimport { BvEvent } from '../utils/bv-event.class';\nimport { attemptFocus, closest, contains, isVisible, requestAF, selectAll } from '../utils/dom';\nimport { getRootEventName, stopEvent } from '../utils/events';\nimport { isNull } from '../utils/inspect';\nimport { mergeDeep, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn';\nimport { clickOutMixin } from './click-out';\nimport { focusInMixin } from './focus-in';\nimport { idMixin, props as idProps } from './id';\nimport { listenOnRootMixin } from './listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_SHOWN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_SHOWN);\nvar ROOT_EVENT_NAME_HIDDEN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_HIDDEN); // CSS selectors\n\nvar SELECTOR_FORM_CHILD = '.dropdown form';\nvar SELECTOR_ITEM = ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n}).join(', '); // --- Helper methods ---\n// Return an array of visible items\n\nvar filterVisibles = function filterVisibles(els) {\n return (els || []).filter(isVisible);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place left if possible\n dropleft: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place right if possible\n dropright: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place on top if possible\n dropup: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable auto-flipping of menu from bottom <=> top\n noFlip: makeProp(PROP_TYPE_BOOLEAN, false),\n // Number of pixels or a CSS unit value to offset menu\n // (i.e. `1px`, `1rem`, etc.)\n offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n popperOpts: makeProp(PROP_TYPE_OBJECT, {}),\n // Right align menu (default is left align)\n right: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_DROPDOWN); // --- Mixin ---\n// @vue/component\n\nexport var dropdownMixin = Vue.extend({\n mixins: [idMixin, listenOnRootMixin, clickOutMixin, focusInMixin],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n inject: {\n bvNavbar: {\n default: null\n }\n },\n props: props,\n data: function data() {\n return {\n visible: false,\n visibleChangePrevented: false\n };\n },\n computed: {\n inNavbar: function inNavbar() {\n return !isNull(this.bvNavbar);\n },\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function directionClass() {\n if (this.dropup) {\n return 'dropup';\n } else if (this.dropright) {\n return 'dropright';\n } else if (this.dropleft) {\n return 'dropleft';\n }\n\n return '';\n },\n boundaryClass: function boundaryClass() {\n // Position `static` is needed to allow menu to \"breakout\" of the `scrollParent`\n // boundaries when boundary is anything other than `scrollParent`\n // See: https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n return this.boundary !== 'scrollParent' && !this.inNavbar ? 'position-static' : '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n\n if (newValue !== oldValue) {\n var eventName = newValue ? EVENT_NAME_SHOW : EVENT_NAME_HIDE;\n var bvEvent = new BvEvent(eventName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null,\n componentId: this.safeId ? this.safeId() : this.id || null\n });\n this.emitEvent(bvEvent);\n\n if (bvEvent.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggered `this.hide(true)`\n\n this.$off(EVENT_NAME_HIDDEN, this.focusToggler);\n return;\n }\n\n if (newValue) {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false;\n }\n }\n },\n created: function created() {\n // Create private non-reactive props\n this.$_popper = null;\n this.$_hideTimeout = null;\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // In case we are inside a ``\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n this.clearHideTimeout();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvent) {\n var type = bvEvent.type;\n this.emitOnRoot(getRootEventName(NAME_DROPDOWN, type), bvEvent);\n this.$emit(type, bvEvent);\n },\n showMenu: function showMenu() {\n var _this = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Only instantiate Popper.js when dropdown is not in ``\n\n\n if (!this.inNavbar) {\n if (typeof Popper === 'undefined') {\n /* istanbul ignore next */\n warn('Popper.js not found. Falling back to CSS positioning', NAME_DROPDOWN);\n } else {\n // For dropup with alignment we use the parent element as popper container\n var el = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n el = el.$el || el; // Instantiate Popper.js\n\n this.createPopper(el);\n }\n } // Ensure other menus are closed\n\n\n this.emitOnRoot(ROOT_EVENT_NAME_SHOWN, this); // Enable listeners\n\n this.whileOpenListen(true); // Wrap in `$nextTick()` to ensure menu is fully rendered/shown\n\n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n\n\n _this.$emit(EVENT_NAME_SHOWN);\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.emitOnRoot(ROOT_EVENT_NAME_HIDDEN, this);\n this.$emit(EVENT_NAME_HIDDEN);\n this.destroyPopper();\n },\n createPopper: function createPopper(element) {\n this.destroyPopper();\n this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig());\n },\n // Ensure popper event listeners are removed cleanly\n destroyPopper: function destroyPopper() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n // Instructs popper to re-computes the dropdown position\n // useful if the content changes size\n updatePopper: function updatePopper() {\n try {\n this.$_popper.scheduleUpdate();\n } catch (_unused) {}\n },\n clearHideTimeout: function clearHideTimeout() {\n clearTimeout(this.$_hideTimeout);\n this.$_hideTimeout = null;\n },\n getPopperConfig: function getPopperConfig() {\n var placement = PLACEMENT_BOTTOM_START;\n\n if (this.dropup) {\n placement = this.right ? PLACEMENT_TOP_END : PLACEMENT_TOP_START;\n } else if (this.dropright) {\n placement = PLACEMENT_RIGHT_START;\n } else if (this.dropleft) {\n placement = PLACEMENT_LEFT_START;\n } else if (this.right) {\n placement = PLACEMENT_BOTTOM_END;\n }\n\n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n var boundariesElement = this.boundary;\n\n if (boundariesElement) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: boundariesElement\n };\n }\n\n return mergeDeep(popperConfig, this.popperOpts || {});\n },\n // Turn listeners on/off while open\n whileOpenListen: function whileOpenListen(isOpen) {\n // Hide the dropdown when clicked outside\n this.listenForClickOut = isOpen; // Hide the dropdown when it loses focus\n\n this.listenForFocusIn = isOpen; // Hide the dropdown when another dropdown is opened\n\n var method = isOpen ? '$on' : '$off';\n this.$root[method](ROOT_EVENT_NAME_SHOWN, this.rootCloseListener);\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n // Public method to show dropdown\n show: function show() {\n var _this2 = this;\n\n if (this.disabled) {\n return;\n } // Wrap in a `requestAF()` to allow any previous\n // click handling to occur first\n\n\n requestAF(function () {\n _this2.visible = true;\n });\n },\n // Public method to hide dropdown\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n /* istanbul ignore next */\n if (this.disabled) {\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only by a button that toggles the menu\n toggle: function toggle(event) {\n event = event || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n\n var _event = event,\n type = _event.type,\n keyCode = _event.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && [CODE_ENTER, CODE_SPACE, CODE_DOWN].indexOf(keyCode) !== -1)) {\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n\n\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_TOGGLE, event);\n stopEvent(event); // Toggle visibility\n\n if (this.visible) {\n this.hide(true);\n } else {\n this.show();\n }\n },\n // Mousedown handler for the toggle\n\n /* istanbul ignore next */\n onMousedown: function onMousedown(event) {\n // We prevent the 'mousedown' event for the toggle to stop the\n // 'focusin' event from being fired\n // The event would otherwise be picked up by the global 'focusin'\n // listener and there is no cross-browser solution to detect it\n // relates to the toggle click\n // The 'click' event will still be fired and we handle closing\n // other dropdowns there too\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/4328\n stopEvent(event, {\n propagation: false\n });\n },\n // Called from dropdown menu context\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ESC) {\n // Close on ESC\n this.onEsc(event);\n } else if (keyCode === CODE_DOWN) {\n // Down Arrow\n this.focusNext(event, false);\n } else if (keyCode === CODE_UP) {\n // Up Arrow\n this.focusNext(event, true);\n }\n },\n // If user presses ESC, close the menu\n onEsc: function onEsc(event) {\n if (this.visible) {\n this.visible = false;\n stopEvent(event); // Return focus to original trigger button\n\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only in split button mode, for the split button\n onSplitClick: function onSplitClick(event) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_CLICK, event);\n },\n // Shared hide handler between click-out and focus-in events\n hideHandler: function hideHandler(event) {\n var _this3 = this;\n\n var target = event.target;\n\n if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) {\n this.clearHideTimeout();\n this.$_hideTimeout = setTimeout(function () {\n return _this3.hide();\n }, this.inNavbar ? 300 : 0);\n }\n },\n // Document click-out listener\n clickOutHandler: function clickOutHandler(event) {\n this.hideHandler(event);\n },\n // Document focus-in listener\n focusInHandler: function focusInHandler(event) {\n this.hideHandler(event);\n },\n // Keyboard nav\n focusNext: function focusNext(event, up) {\n var _this4 = this;\n\n // Ignore key up/down on form elements\n var target = event.target;\n\n if (!this.visible || event && closest(SELECTOR_FORM_CHILD, target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n stopEvent(event);\n this.$nextTick(function () {\n var items = _this4.getItems();\n\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var index = items.indexOf(target);\n\n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n\n _this4.focusItem(index, items);\n });\n },\n focusItem: function focusItem(index, items) {\n var el = items.find(function (el, i) {\n return i === index;\n });\n attemptFocus(el);\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(selectAll(SELECTOR_ITEM, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n attemptFocus(this.$refs.menu);\n },\n focusToggler: function focusToggler() {\n var _this5 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this5.toggler);\n });\n }\n }\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// v-b-visible\n// Private visibility check directive\n// Based on IntersectionObserver\n//\n// Usage:\n// v-b-visibility..=\"\"\n//\n// Value:\n// : method to be called when visibility state changes, receives one arg:\n// true: element is visible\n// false: element is not visible\n// null: IntersectionObserver not supported\n//\n// Modifiers:\n// : a positive decimal value of pixels away from viewport edge\n// before being considered \"visible\". default is 0\n// : keyword 'once', meaning when the element becomes visible and\n// callback is called observation/notification will stop.\n//\n// When used in a render function:\n// export default {\n// directives: { 'b-visible': VBVisible },\n// render(h) {\n// h(\n// 'div',\n// {\n// directives: [\n// { name: 'b-visible', value=this.callback, modifiers: { '123':true, 'once':true } }\n// ]\n// }\n// )\n// }\nimport { RX_DIGITS } from '../../constants/regex';\nimport { requestAF } from '../../utils/dom';\nimport { isFunction } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { clone, keys } from '../../utils/object';\nvar OBSERVER_PROP_NAME = '__bv__visibility_observer';\n\nvar VisibilityObserver = /*#__PURE__*/function () {\n function VisibilityObserver(el, options, vnode) {\n _classCallCheck(this, VisibilityObserver);\n\n this.el = el;\n this.callback = options.callback;\n this.margin = options.margin || 0;\n this.once = options.once || false;\n this.observer = null;\n this.visible = undefined;\n this.doneOnce = false; // Create the observer instance (if possible)\n\n this.createObserver(vnode);\n }\n\n _createClass(VisibilityObserver, [{\n key: \"createObserver\",\n value: function createObserver(vnode) {\n var _this = this;\n\n // Remove any previous observer\n if (this.observer) {\n /* istanbul ignore next */\n this.stop();\n } // Should only be called once and `callback` prop should be a function\n\n\n if (this.doneOnce || !isFunction(this.callback)) {\n /* istanbul ignore next */\n return;\n } // Create the observer instance\n\n\n try {\n // Future: Possibly add in other modifiers for left/right/top/bottom\n // offsets, root element reference, and thresholds\n this.observer = new IntersectionObserver(this.handler.bind(this), {\n // `null` = 'viewport'\n root: null,\n // Pixels away from view port to consider \"visible\"\n rootMargin: this.margin,\n // Intersection ratio of el and root (as a value from 0 to 1)\n threshold: 0\n });\n } catch (_unused) {\n // No IntersectionObserver support, so just stop trying to observe\n this.doneOnce = true;\n this.observer = undefined;\n this.callback(null);\n return;\n } // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n\n\n vnode.context.$nextTick(function () {\n requestAF(function () {\n // Placed in an `if` just in case we were destroyed before\n // this `requestAnimationFrame` runs\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n });\n }\n /* istanbul ignore next */\n\n }, {\n key: \"handler\",\n value: function handler(entries) {\n var entry = entries ? entries[0] : {};\n var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0);\n\n if (isIntersecting !== this.visible) {\n this.visible = isIntersecting;\n this.callback(isIntersecting);\n\n if (this.once && this.visible) {\n this.doneOnce = true;\n this.stop();\n }\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n /* istanbul ignore next */\n this.observer && this.observer.disconnect();\n this.observer = null;\n }\n }]);\n\n return VisibilityObserver;\n}();\n\nvar destroy = function destroy(el) {\n var observer = el[OBSERVER_PROP_NAME];\n\n if (observer && observer.stop) {\n observer.stop();\n }\n\n delete el[OBSERVER_PROP_NAME];\n};\n\nvar bind = function bind(el, _ref, vnode) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n // `value` is the callback function\n var options = {\n margin: '0px',\n once: false,\n callback: value\n }; // Parse modifiers\n\n keys(modifiers).forEach(function (mod) {\n /* istanbul ignore else: Until is switched to use this directive */\n if (RX_DIGITS.test(mod)) {\n options.margin = \"\".concat(mod, \"px\");\n } else if (mod.toLowerCase() === 'once') {\n options.once = true;\n }\n }); // Destroy any previous observer\n\n destroy(el); // Create new observer\n\n el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode); // Store the current modifiers on the object (cloned)\n\n el[OBSERVER_PROP_NAME]._prevModifiers = clone(modifiers);\n}; // When the directive options may have been updated (or element)\n\n\nvar componentUpdated = function componentUpdated(el, _ref2, vnode) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n // Compare value/oldValue and modifiers to see if anything has changed\n // and if so, destroy old observer and create new observer\n\n /* istanbul ignore next */\n modifiers = clone(modifiers);\n /* istanbul ignore next */\n\n if (el && (value !== oldValue || !el[OBSERVER_PROP_NAME] || !looseEqual(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers))) {\n // Re-bind on element\n bind(el, {\n value: value,\n modifiers: modifiers\n }, vnode);\n }\n}; // When directive un-binds from element\n\n\nvar unbind = function unbind(el) {\n // Remove the observer\n destroy(el);\n}; // Export the directive\n\n\nexport var VBVisible = {\n bind: bind,\n componentUpdated: componentUpdated,\n unbind: unbind\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_TEXTAREA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { getCS, getStyle, isVisible, requestAF, setStyle } from '../../utils/dom';\nimport { isNull } from '../../utils/inspect';\nimport { mathCeil, mathMax, mathMin } from '../../utils/math';\nimport { toInteger, toFloat } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { VBVisible } from '../../directives/visible/visible'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n maxRows: makeProp(PROP_TYPE_NUMBER_STRING),\n // When in auto resize mode, disable shrinking to content height\n noAutoShrink: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable the resize handle of textarea\n noResize: makeProp(PROP_TYPE_BOOLEAN, false),\n rows: makeProp(PROP_TYPE_NUMBER_STRING, 2),\n // 'soft', 'hard' or 'off'\n // Browser default is 'soft'\n wrap: makeProp(PROP_TYPE_STRING, 'soft')\n})), NAME_FORM_TEXTAREA); // --- Main component ---\n// @vue/component\n\nexport var BFormTextarea = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_TEXTAREA,\n directives: {\n 'b-visible': VBVisible\n },\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, listenOnRootMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props,\n data: function data() {\n return {\n heightInPx: null\n };\n },\n computed: {\n computedStyle: function computedStyle() {\n var styles = {\n // Setting `noResize` to true will disable the ability for the user to\n // manually resize the textarea. We also disable when in auto height mode\n resize: !this.computedRows || this.noResize ? 'none' : null\n };\n\n if (!this.computedRows) {\n // Conditionally set the computed CSS height when auto rows/height is enabled\n // We avoid setting the style to `null`, which can override user manual resize handle\n styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-height is\n // enabled so that the computed height calculation returns a stable value\n\n styles.overflowY = 'scroll';\n }\n\n return styles;\n },\n computedMinRows: function computedMinRows() {\n // Ensure rows is at least 2 and positive (2 is the native textarea value)\n // A value of 1 can cause issues in some browsers, and most browsers\n // only support 2 as the smallest value\n return mathMax(toInteger(this.rows, 2), 2);\n },\n computedMaxRows: function computedMaxRows() {\n return mathMax(this.computedMinRows, toInteger(this.maxRows, 0));\n },\n computedRows: function computedRows() {\n // This is used to set the attribute 'rows' on the textarea\n // If auto-height is enabled, then we return `null` as we use CSS to control height\n return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n },\n computedAttrs: function computedAttrs() {\n var disabled = this.disabled,\n required = this.required;\n return {\n id: this.safeId(),\n name: this.name || null,\n form: this.form || null,\n disabled: disabled,\n placeholder: this.placeholder || null,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n rows: this.computedRows,\n wrap: this.wrap || null,\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n localValue: function localValue() {\n this.setHeight();\n }\n },\n mounted: function mounted() {\n this.setHeight();\n },\n methods: {\n // Called by intersection observer directive\n\n /* istanbul ignore next */\n visibleCallback: function visibleCallback(visible) {\n if (visible) {\n // We use a `$nextTick()` here just to make sure any\n // transitions or portalling have completed\n this.$nextTick(this.setHeight);\n }\n },\n setHeight: function setHeight() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n _this.heightInPx = _this.computeHeight();\n });\n });\n },\n\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n computeHeight: function computeHeight() {\n if (this.$isServer || !isNull(this.computedRows)) {\n return null;\n }\n\n var el = this.$el; // Element must be visible (not hidden) and in document\n // Must be checked after above checks\n\n if (!isVisible(el)) {\n return null;\n } // Get current computed styles\n\n\n var computedStyle = getCS(el); // Height of one line of text in px\n\n var lineHeight = toFloat(computedStyle.lineHeight, 1); // Calculate height of border and padding\n\n var border = toFloat(computedStyle.borderTopWidth, 0) + toFloat(computedStyle.borderBottomWidth, 0);\n var padding = toFloat(computedStyle.paddingTop, 0) + toFloat(computedStyle.paddingBottom, 0); // Calculate offset\n\n var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n var oldHeight = getStyle(el, 'height') || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n setStyle(el, 'height', 'auto');\n var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case `computedProp`\n // returns the same value as before\n\n setStyle(el, 'height', oldHeight); // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n\n var contentRows = mathMax((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n var rows = mathMin(mathMax(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n var height = mathMax(mathCeil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of `oldHeight` and new `height`,\n // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n if (this.noAutoShrink && toFloat(oldHeight, 0) > height) {\n return oldHeight;\n } // Return the new computed CSS height in px units\n\n\n return \"\".concat(height, \"px\");\n }\n },\n render: function render(h) {\n return h('textarea', {\n class: this.computedClass,\n style: this.computedStyle,\n directives: [{\n name: 'b-visible',\n value: this.visibleCallback,\n // If textarea is within 640px of viewport, consider it visible\n modifiers: {\n '640': true\n }\n }],\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\n });\n }\n});","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_COLLAPSE, NAME_SIDEBAR } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { CODE_ESC } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER, SLOT_NAME_HEADER_CLOSE, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { attemptFocus, contains, getActiveElement, getTabables } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconX } from '../../icons/icons';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar CLASS_NAME = 'b-sidebar';\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // If `true`, shows a basic backdrop\n backdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n backdropVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n bgVariant: makeProp(PROP_TYPE_STRING, 'light'),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // `aria-label` for close button\n closeLabel: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnRouteChange: makeProp(PROP_TYPE_BOOLEAN, false),\n noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n noSlide: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n shadow: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sidebarClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n title: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING)\n})), NAME_SIDEBAR); // --- Render methods ---\n\nvar renderHeaderTitle = function renderHeaderTitle(h, ctx) {\n // Render a empty `` when to title was provided\n var title = ctx.normalizeSlot(SLOT_NAME_TITLE, ctx.slotScope) || ctx.title;\n\n if (!title) {\n return h('span');\n }\n\n return h('strong', {\n attrs: {\n id: ctx.safeId('__title__')\n }\n }, [title]);\n};\n\nvar renderHeaderClose = function renderHeaderClose(h, ctx) {\n if (ctx.noHeaderClose) {\n return h();\n }\n\n var closeLabel = ctx.closeLabel,\n textVariant = ctx.textVariant,\n hide = ctx.hide;\n return h(BButtonClose, {\n props: {\n ariaLabel: closeLabel,\n textVariant: textVariant\n },\n on: {\n click: hide\n },\n ref: 'close-button'\n }, [ctx.normalizeSlot(SLOT_NAME_HEADER_CLOSE) || h(BIconX)]);\n};\n\nvar renderHeader = function renderHeader(h, ctx) {\n if (ctx.noHeader) {\n return h();\n }\n\n var $content = ctx.normalizeSlot(SLOT_NAME_HEADER, ctx.slotScope);\n\n if (!$content) {\n var $title = renderHeaderTitle(h, ctx);\n var $close = renderHeaderClose(h, ctx);\n $content = ctx.right ? [$close, $title] : [$title, $close];\n }\n\n return h('header', {\n staticClass: \"\".concat(CLASS_NAME, \"-header\"),\n class: ctx.headerClass,\n key: 'header'\n }, $content);\n};\n\nvar renderBody = function renderBody(h, ctx) {\n return h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-body\"),\n class: ctx.bodyClass,\n key: 'body'\n }, [ctx.normalizeSlot(SLOT_NAME_DEFAULT, ctx.slotScope)]);\n};\n\nvar renderFooter = function renderFooter(h, ctx) {\n var $footer = ctx.normalizeSlot(SLOT_NAME_FOOTER, ctx.slotScope);\n\n if (!$footer) {\n return h();\n }\n\n return h('footer', {\n staticClass: \"\".concat(CLASS_NAME, \"-footer\"),\n class: ctx.footerClass,\n key: 'footer'\n }, [$footer]);\n};\n\nvar renderContent = function renderContent(h, ctx) {\n // We render the header even if `lazy` is enabled as it\n // acts as the accessible label for the sidebar\n var $header = renderHeader(h, ctx);\n\n if (ctx.lazy && !ctx.isOpen) {\n return $header;\n }\n\n return [$header, renderBody(h, ctx), renderFooter(h, ctx)];\n};\n\nvar renderBackdrop = function renderBackdrop(h, ctx) {\n if (!ctx.backdrop) {\n return h();\n }\n\n var backdropVariant = ctx.backdropVariant;\n return h('div', {\n directives: [{\n name: 'show',\n value: ctx.localShow\n }],\n staticClass: 'b-sidebar-backdrop',\n class: _defineProperty({}, \"bg-\".concat(backdropVariant), backdropVariant),\n on: {\n click: ctx.onBackdropClick\n }\n });\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BSidebar = /*#__PURE__*/Vue.extend({\n name: NAME_SIDEBAR,\n mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n var visible = !!this[MODEL_PROP_NAME];\n return {\n // Internal `v-model` state\n localShow: visible,\n // For lazy render triggering\n isOpen: visible\n };\n },\n computed: {\n transitionProps: function transitionProps() {\n return this.noSlide ?\n /* istanbul ignore next */\n {\n css: true\n } : {\n css: true,\n enterClass: '',\n enterActiveClass: 'slide',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: 'slide',\n leaveToClass: ''\n };\n },\n slotScope: function slotScope() {\n var hide = this.hide,\n right = this.right,\n visible = this.localShow;\n return {\n hide: hide,\n right: right,\n visible: visible\n };\n },\n hasTitle: function hasTitle() {\n var $scopedSlots = this.$scopedSlots,\n $slots = this.$slots;\n return !this.noHeader && !this.hasNormalizedSlot(SLOT_NAME_HEADER) && !!(this.normalizeSlot(SLOT_NAME_TITLE, this.slotScope, $scopedSlots, $slots) || this.title);\n },\n titleId: function titleId() {\n return this.hasTitle ? this.safeId('__title__') : null;\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n id: this.safeId(),\n tabindex: '-1',\n role: 'dialog',\n 'aria-modal': this.backdrop ? 'true' : 'false',\n 'aria-hidden': this.localShow ? null : 'true',\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || this.titleId || null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localShow = newValue;\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState(newValue);\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_watch, \"$route\", function $route() {\n var newValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var oldValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.noCloseOnRouteChange && newValue.fullPath !== oldValue.fullPath) {\n this.hide();\n }\n }), _watch),\n created: function created() {\n // Define non-reactive properties\n this.$_returnFocusEl = null;\n },\n mounted: function mounted() {\n var _this = this;\n\n // Add `$root` listeners\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggle);\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, this.handleSync); // Send out a gratuitous state event to ensure toggle button is synced\n\n this.$nextTick(function () {\n _this.emitState(_this.localShow);\n });\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n this.localShow = false;\n this.$_returnFocusEl = null;\n },\n methods: {\n hide: function hide() {\n this.localShow = false;\n },\n emitState: function emitState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, this.safeId(), state);\n },\n emitSync: function emitSync() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), state);\n },\n handleToggle: function handleToggle(id) {\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.localShow = !this.localShow;\n }\n },\n handleSync: function handleSync(id) {\n var _this2 = this;\n\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.$nextTick(function () {\n _this2.emitSync(_this2.localShow);\n });\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (!this.noCloseOnEsc && keyCode === CODE_ESC && this.localShow) {\n this.hide();\n }\n },\n onBackdropClick: function onBackdropClick() {\n if (this.localShow && !this.noCloseOnBackdrop) {\n this.hide();\n }\n },\n\n /* istanbul ignore next */\n onTopTrapFocus: function onTopTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables.reverse()[0]);\n },\n\n /* istanbul ignore next */\n onBottomTrapFocus: function onBottomTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables[0]);\n },\n onBeforeEnter: function onBeforeEnter() {\n // Returning focus to `document.body` may cause unwanted scrolls,\n // so we exclude setting focus on body\n this.$_returnFocusEl = getActiveElement(IS_BROWSER ? [document.body] : []); // Trigger lazy render\n\n this.isOpen = true;\n },\n onAfterEnter: function onAfterEnter(el) {\n if (!contains(el, getActiveElement())) {\n this.enforceFocus(el);\n }\n\n this.$emit(EVENT_NAME_SHOWN);\n },\n onAfterLeave: function onAfterLeave() {\n this.enforceFocus(this.$_returnFocusEl);\n this.$_returnFocusEl = null; // Trigger lazy render\n\n this.isOpen = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n enforceFocus: function enforceFocus(el) {\n if (!this.noEnforceFocus) {\n attemptFocus(el);\n }\n }\n },\n render: function render(h) {\n var _ref;\n\n var bgVariant = this.bgVariant,\n width = this.width,\n textVariant = this.textVariant,\n localShow = this.localShow;\n var shadow = this.shadow === '' ? true : this.shadow;\n var $sidebar = h(this.tag, {\n staticClass: CLASS_NAME,\n class: [(_ref = {\n shadow: shadow === true\n }, _defineProperty(_ref, \"shadow-\".concat(shadow), shadow && shadow !== true), _defineProperty(_ref, \"\".concat(CLASS_NAME, \"-right\"), this.right), _defineProperty(_ref, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_ref, \"text-\".concat(textVariant), textVariant), _ref), this.sidebarClass],\n style: {\n width: width\n },\n attrs: this.computedAttrs,\n directives: [{\n name: 'show',\n value: localShow\n }],\n ref: 'content'\n }, [renderContent(h, this)]);\n $sidebar = h('transition', {\n props: this.transitionProps,\n on: {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n afterLeave: this.onAfterLeave\n }\n }, [$sidebar]);\n var $backdrop = h(BVTransition, {\n props: {\n noFade: this.noSlide\n }\n }, [renderBackdrop(h, this)]);\n var $tabTrapTop = h();\n var $tabTrapBottom = h();\n\n if (this.backdrop && localShow) {\n $tabTrapTop = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onTopTrapFocus\n }\n });\n $tabTrapBottom = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onBottomTrapFocus\n }\n });\n }\n\n return h('div', {\n staticClass: 'b-sidebar-outer',\n style: {\n zIndex: this.zIndex\n },\n attrs: {\n tabindex: '-1'\n },\n on: {\n keydown: this.onKeydown\n }\n }, [$tabTrapTop, $sidebar, $tabTrapBottom, $backdrop]);\n }\n});","export var CALENDAR_GREGORY = 'gregory';\nexport var CALENDAR_LONG = 'long';\nexport var CALENDAR_NARROW = 'narrow';\nexport var CALENDAR_SHORT = 'short';\nexport var DATE_FORMAT_2_DIGIT = '2-digit';\nexport var DATE_FORMAT_NUMERIC = 'numeric';","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n// Date utility functions\nimport { CALENDAR_GREGORY } from '../constants/date';\nimport { RX_DATE, RX_DATE_SPLIT } from '../constants/regex';\nimport { concat } from './array';\nimport { identity } from './identity';\nimport { isDate, isString } from './inspect';\nimport { toInteger } from './number'; // --- Date utility methods ---\n// Create or clone a date (`new Date(...)` shortcut)\n\nexport var createDate = function createDate() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _construct(Date, args);\n}; // Parse a date sting, or Date object, into a Date object (with no time information)\n\nexport var parseYMD = function parseYMD(date) {\n if (isString(date) && RX_DATE.test(date.trim())) {\n var _date$split$map = date.split(RX_DATE_SPLIT).map(function (v) {\n return toInteger(v, 1);\n }),\n _date$split$map2 = _slicedToArray(_date$split$map, 3),\n year = _date$split$map2[0],\n month = _date$split$map2[1],\n day = _date$split$map2[2];\n\n return createDate(year, month - 1, day);\n } else if (isDate(date)) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n return null;\n}; // Format a date object as `YYYY-MM-DD` format\n\nexport var formatYMD = function formatYMD(date) {\n date = parseYMD(date);\n\n if (!date) {\n return null;\n }\n\n var year = date.getFullYear();\n var month = \"0\".concat(date.getMonth() + 1).slice(-2);\n var day = \"0\".concat(date.getDate()).slice(-2);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}; // Given a locale (or locales), resolve the browser available locale\n\nexport var resolveLocale = function resolveLocale(locales)\n/* istanbul ignore next */\n{\n var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_GREGORY;\n locales = concat(locales).filter(identity);\n var fmt = new Intl.DateTimeFormat(locales, {\n calendar: calendar\n });\n return fmt.resolvedOptions().locale;\n}; // Create a `Intl.DateTimeFormat` formatter function\n\nexport var createDateFormatter = function createDateFormatter(locale, options)\n/* istanbul ignore next */\n{\n var dtf = new Intl.DateTimeFormat(locale, options);\n return dtf.format;\n}; // Determine if two dates are the same date (ignoring time portion)\n\nexport var datesEqual = function datesEqual(date1, date2) {\n // Returns true of the date portion of two date objects are equal\n // We don't compare the time portion\n return formatYMD(date1) === formatYMD(date2);\n}; // --- Date \"math\" utility methods (for BCalendar component mainly) ---\n\nexport var firstDateOfMonth = function firstDateOfMonth(date) {\n date = createDate(date);\n date.setDate(1);\n return date;\n};\nexport var lastDateOfMonth = function lastDateOfMonth(date) {\n date = createDate(date);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date;\n};\nexport var addYears = function addYears(date, numberOfYears) {\n date = createDate(date);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear() + numberOfYears); // Handle Feb 29th for leap years\n\n if (date.getMonth() !== month) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneMonthAgo = function oneMonthAgo(date) {\n date = createDate(date);\n var month = date.getMonth();\n date.setMonth(month - 1); // Handle when days in month are different\n\n if (date.getMonth() === month) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneMonthAhead = function oneMonthAhead(date) {\n date = createDate(date);\n var month = date.getMonth();\n date.setMonth(month + 1); // Handle when days in month are different\n\n if (date.getMonth() === (month + 2) % 12) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneYearAgo = function oneYearAgo(date) {\n return addYears(date, -1);\n};\nexport var oneYearAhead = function oneYearAhead(date) {\n return addYears(date, 1);\n};\nexport var oneDecadeAgo = function oneDecadeAgo(date) {\n return addYears(date, -10);\n};\nexport var oneDecadeAhead = function oneDecadeAhead(date) {\n return addYears(date, 10);\n}; // Helper function to constrain a date between two values\n// Always returns a `Date` object or `null` if no date passed\n\nexport var constrainDate = function constrainDate(date) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // Ensure values are `Date` objects (or `null`)\n date = parseYMD(date);\n min = parseYMD(min) || date;\n max = parseYMD(max) || date; // Return a new `Date` object (or `null`)\n\n return date ? date < min ? min : date > max ? max : date : null;\n};","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_CALENDAR } from '../../constants/components';\nimport { CALENDAR_GREGORY, CALENDAR_LONG, CALENDAR_NARROW, CALENDAR_SHORT, DATE_FORMAT_2_DIGIT, DATE_FORMAT_NUMERIC } from '../../constants/date';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_SELECTED } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_LEFT, CODE_PAGEDOWN, CODE_PAGEUP, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_NAV_NEXT_DECADE, SLOT_NAME_NAV_NEXT_MONTH, SLOT_NAME_NAV_NEXT_YEAR, SLOT_NAME_NAV_PEV_DECADE, SLOT_NAME_NAV_PEV_MONTH, SLOT_NAME_NAV_PEV_YEAR, SLOT_NAME_NAV_THIS_MONTH } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { createDate, createDateFormatter, constrainDate as _constrainDate, datesEqual, firstDateOfMonth, formatYMD, lastDateOfMonth, oneMonthAgo, oneMonthAhead, oneYearAgo, oneYearAhead, oneDecadeAgo, oneDecadeAhead, parseYMD, resolveLocale } from '../../utils/date';\nimport { attemptBlur, attemptFocus, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isArray, isPlainObject, isString } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconChevronLeft, BIconChevronDoubleLeft, BIconChevronBarLeft, BIconCircleFill } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_DATE_STRING\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n // Makes calendar the full width of its parent container\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n dateDisabledFn: makeProp(PROP_TYPE_FUNCTION),\n // `Intl.DateTimeFormat` object\n dateFormatOptions: makeProp(PROP_TYPE_OBJECT, {\n year: DATE_FORMAT_NUMERIC,\n month: CALENDAR_LONG,\n day: DATE_FORMAT_NUMERIC,\n weekday: CALENDAR_LONG\n }),\n // Function to set a class of (classes) on the date cell\n // if passed a string or an array\n // TODO:\n // If the function returns an object, look for class prop for classes,\n // and other props for handling events/details/descriptions\n dateInfoFn: makeProp(PROP_TYPE_FUNCTION),\n // 'ltr', 'rtl', or `null` (for auto detect)\n direction: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // When `true`, renders a comment node, but keeps the component instance active\n // Mainly for , so that we can get the component's value and locale\n // But we might just use separate date formatters, using the resolved locale\n // (adjusted for the gregorian calendar)\n hidden: makeProp(PROP_TYPE_BOOLEAN, false),\n // When `true` makes the selected date header `sr-only`\n hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n // This specifies the calendar year/month/day that will be shown when\n // first opening the datepicker if no v-model value is provided\n // Default is the current date (or `min`/`max`)\n initialDate: makeProp(PROP_TYPE_DATE_STRING),\n // Labels for buttons and keyboard shortcuts\n labelCalendar: makeProp(PROP_TYPE_STRING, 'Calendar'),\n labelCurrentMonth: makeProp(PROP_TYPE_STRING, 'Current month'),\n labelHelp: makeProp(PROP_TYPE_STRING, 'Use cursor keys to navigate calendar dates'),\n labelNav: makeProp(PROP_TYPE_STRING, 'Calendar navigation'),\n labelNextDecade: makeProp(PROP_TYPE_STRING, 'Next decade'),\n labelNextMonth: makeProp(PROP_TYPE_STRING, 'Next month'),\n labelNextYear: makeProp(PROP_TYPE_STRING, 'Next year'),\n labelNoDateSelected: makeProp(PROP_TYPE_STRING, 'No date selected'),\n labelPrevDecade: makeProp(PROP_TYPE_STRING, 'Previous decade'),\n labelPrevMonth: makeProp(PROP_TYPE_STRING, 'Previous month'),\n labelPrevYear: makeProp(PROP_TYPE_STRING, 'Previous year'),\n labelSelected: makeProp(PROP_TYPE_STRING, 'Selected date'),\n labelToday: makeProp(PROP_TYPE_STRING, 'Today'),\n // Locale(s) to use\n // Default is to use page/browser default setting\n locale: makeProp(PROP_TYPE_ARRAY_STRING),\n max: makeProp(PROP_TYPE_DATE_STRING),\n min: makeProp(PROP_TYPE_DATE_STRING),\n // Variant color to use for the navigation buttons\n navButtonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n // Disable highlighting today's date\n noHighlightToday: makeProp(PROP_TYPE_BOOLEAN, false),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n roleDescription: makeProp(PROP_TYPE_STRING),\n // Variant color to use for the selected date\n selectedVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n // When `true` enables the decade navigation buttons\n showDecadeNav: makeProp(PROP_TYPE_BOOLEAN, false),\n // Day of week to start calendar on\n // `0` (Sunday), `1` (Monday), ... `6` (Saturday)\n startWeekday: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n // Variant color to use for today's date (defaults to `selectedVariant`)\n todayVariant: makeProp(PROP_TYPE_STRING),\n // Always return the `v-model` value as a date object\n valueAsDate: makeProp(PROP_TYPE_BOOLEAN, false),\n // Format of the weekday names at the top of the calendar\n // `short` is typically a 3 letter abbreviation,\n // `narrow` is typically a single letter\n // `long` is the full week day name\n // Although some locales may override this (i.e `ar`, etc.)\n weekdayHeaderFormat: makeProp(PROP_TYPE_STRING, CALENDAR_SHORT, function (value) {\n return arrayIncludes([CALENDAR_LONG, CALENDAR_SHORT, CALENDAR_NARROW], value);\n }),\n // Has no effect if prop `block` is set\n width: makeProp(PROP_TYPE_STRING, '270px')\n})), NAME_CALENDAR); // --- Main component ---\n// @vue/component\n\nexport var BCalendar = Vue.extend({\n name: NAME_CALENDAR,\n // Mixin order is important!\n mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n var selected = formatYMD(this[MODEL_PROP_NAME]) || '';\n return {\n // Selected date\n selectedYMD: selected,\n // Date in calendar grid that has `tabindex` of `0`\n activeYMD: selected || formatYMD(_constrainDate(this.initialDate || this.getToday()), this.min, this.max),\n // Will be true if the calendar grid has/contains focus\n gridHasFocus: false,\n // Flag to enable the `aria-live` region(s) after mount\n // to prevent screen reader \"outbursts\" when mounting\n isLive: false\n };\n },\n computed: {\n valueId: function valueId() {\n return this.safeId();\n },\n widgetId: function widgetId() {\n return this.safeId('_calendar-wrapper_');\n },\n navId: function navId() {\n return this.safeId('_calendar-nav_');\n },\n gridId: function gridId() {\n return this.safeId('_calendar-grid_');\n },\n gridCaptionId: function gridCaptionId() {\n return this.safeId('_calendar-grid-caption_');\n },\n gridHelpId: function gridHelpId() {\n return this.safeId('_calendar-grid-help_');\n },\n activeId: function activeId() {\n return this.activeYMD ? this.safeId(\"_cell-\".concat(this.activeYMD, \"_\")) : null;\n },\n // TODO: Use computed props to convert `YYYY-MM-DD` to `Date` object\n selectedDate: function selectedDate() {\n // Selected as a `Date` object\n return parseYMD(this.selectedYMD);\n },\n activeDate: function activeDate() {\n // Active as a `Date` object\n return parseYMD(this.activeYMD);\n },\n computedMin: function computedMin() {\n return parseYMD(this.min);\n },\n computedMax: function computedMax() {\n return parseYMD(this.max);\n },\n computedWeekStarts: function computedWeekStarts() {\n // `startWeekday` is a prop (constrained to `0` through `6`)\n return mathMax(toInteger(this.startWeekday, 0), 0) % 7;\n },\n computedLocale: function computedLocale() {\n // Returns the resolved locale used by the calendar\n return resolveLocale(concat(this.locale).filter(identity), CALENDAR_GREGORY);\n },\n computedDateDisabledFn: function computedDateDisabledFn() {\n var dateDisabledFn = this.dateDisabledFn;\n return hasPropFunction(dateDisabledFn) ? dateDisabledFn : function () {\n return false;\n };\n },\n // TODO: Change `dateInfoFn` to handle events and notes as well as classes\n computedDateInfoFn: function computedDateInfoFn() {\n var dateInfoFn = this.dateInfoFn;\n return hasPropFunction(dateInfoFn) ? dateInfoFn : function () {\n return {};\n };\n },\n calendarLocale: function calendarLocale() {\n // This locale enforces the gregorian calendar (for use in formatter functions)\n // Needed because IE 11 resolves `ar-IR` as islamic-civil calendar\n // and IE 11 (and some other browsers) do not support the `calendar` option\n // And we currently only support the gregorian calendar\n var fmt = new Intl.DateTimeFormat(this.computedLocale, {\n calendar: CALENDAR_GREGORY\n });\n var calendar = fmt.resolvedOptions().calendar;\n var locale = fmt.resolvedOptions().locale;\n /* istanbul ignore if: mainly for IE 11 and a few other browsers, hard to test in JSDOM */\n\n if (calendar !== CALENDAR_GREGORY) {\n // Ensure the locale requests the gregorian calendar\n // Mainly for IE 11, and currently we can't handle non-gregorian calendars\n // TODO: Should we always return this value?\n locale = locale.replace(/-u-.+$/i, '').concat('-u-ca-gregory');\n }\n\n return locale;\n },\n calendarYear: function calendarYear() {\n return this.activeDate.getFullYear();\n },\n calendarMonth: function calendarMonth() {\n return this.activeDate.getMonth();\n },\n calendarFirstDay: function calendarFirstDay() {\n // We set the time for this date to 12pm to work around\n // date formatting issues in Firefox and Safari\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/5818\n return createDate(this.calendarYear, this.calendarMonth, 1, 12);\n },\n calendarDaysInMonth: function calendarDaysInMonth() {\n // We create a new date as to not mutate the original\n var date = createDate(this.calendarFirstDay);\n date.setMonth(date.getMonth() + 1, 0);\n return date.getDate();\n },\n computedVariant: function computedVariant() {\n return \"btn-\".concat(this.selectedVariant || 'primary');\n },\n computedTodayVariant: function computedTodayVariant() {\n return \"btn-outline-\".concat(this.todayVariant || this.selectedVariant || 'primary');\n },\n computedNavButtonVariant: function computedNavButtonVariant() {\n return \"btn-outline-\".concat(this.navButtonVariant || 'primary');\n },\n isRTL: function isRTL() {\n // `true` if the language requested is RTL\n var dir = toString(this.direction).toLowerCase();\n\n if (dir === 'rtl') {\n /* istanbul ignore next */\n return true;\n } else if (dir === 'ltr') {\n /* istanbul ignore next */\n return false;\n }\n\n return isLocaleRTL(this.computedLocale);\n },\n context: function context() {\n var selectedYMD = this.selectedYMD,\n activeYMD = this.activeYMD;\n var selectedDate = parseYMD(selectedYMD);\n var activeDate = parseYMD(activeYMD);\n return {\n // The current value of the `v-model`\n selectedYMD: selectedYMD,\n selectedDate: selectedDate,\n selectedFormatted: selectedDate ? this.formatDateString(selectedDate) : this.labelNoDateSelected,\n // Which date cell is considered active due to navigation\n activeYMD: activeYMD,\n activeDate: activeDate,\n activeFormatted: activeDate ? this.formatDateString(activeDate) : '',\n // `true` if the date is disabled (when using keyboard navigation)\n disabled: this.dateDisabled(activeDate),\n // Locales used in formatting dates\n locale: this.computedLocale,\n calendarLocale: this.calendarLocale,\n rtl: this.isRTL\n };\n },\n // Computed props that return a function reference\n dateOutOfRange: function dateOutOfRange() {\n // Check whether a date is within the min/max range\n // Returns a new function ref if the pops change\n // We do this as we need to trigger the calendar computed prop\n // to update when these props update\n var min = this.computedMin,\n max = this.computedMax;\n return function (date) {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date);\n return min && date < min || max && date > max;\n };\n },\n dateDisabled: function dateDisabled() {\n var _this = this;\n\n // Returns a function for validating if a date is within range\n // We grab this variables first to ensure a new function ref\n // is generated when the props value changes\n // We do this as we need to trigger the calendar computed prop\n // to update when these props update\n var rangeFn = this.dateOutOfRange; // Return the function ref\n\n return function (date) {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date);\n var ymd = formatYMD(date);\n return !!(rangeFn(date) || _this.computedDateDisabledFn(ymd, date));\n };\n },\n // Computed props that return date formatter functions\n formatDateString: function formatDateString() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, _objectSpread(_objectSpread({\n // Ensure we have year, month, day shown for screen readers/ARIA\n // If users really want to leave one of these out, they can\n // pass `undefined` for the property value\n year: DATE_FORMAT_NUMERIC,\n month: DATE_FORMAT_2_DIGIT,\n day: DATE_FORMAT_2_DIGIT\n }, this.dateFormatOptions), {}, {\n // Ensure hours/minutes/seconds are not shown\n // As we do not support the time portion (yet)\n hour: undefined,\n minute: undefined,\n second: undefined,\n // Ensure calendar is gregorian\n calendar: CALENDAR_GREGORY\n }));\n },\n formatYearMonth: function formatYearMonth() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, {\n year: DATE_FORMAT_NUMERIC,\n month: CALENDAR_LONG,\n calendar: CALENDAR_GREGORY\n });\n },\n formatWeekdayName: function formatWeekdayName() {\n // Long weekday name for weekday header aria-label\n return createDateFormatter(this.calendarLocale, {\n weekday: CALENDAR_LONG,\n calendar: CALENDAR_GREGORY\n });\n },\n formatWeekdayNameShort: function formatWeekdayNameShort() {\n // Weekday header cell format\n // defaults to 'short' 3 letter days, where possible\n return createDateFormatter(this.calendarLocale, {\n weekday: this.weekdayHeaderFormat || CALENDAR_SHORT,\n calendar: CALENDAR_GREGORY\n });\n },\n formatDay: function formatDay() {\n // Calendar grid day number formatter\n // We don't use DateTimeFormatter here as it can place extra\n // character(s) after the number (i.e the `zh` locale)\n var nf = new Intl.NumberFormat([this.computedLocale], {\n style: 'decimal',\n minimumIntegerDigits: 1,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n notation: 'standard'\n }); // Return a formatter function instance\n\n return function (date) {\n return nf.format(date.getDate());\n };\n },\n // Disabled states for the nav buttons\n prevDecadeDisabled: function prevDecadeDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneDecadeAgo(this.activeDate)) < min;\n },\n prevYearDisabled: function prevYearDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneYearAgo(this.activeDate)) < min;\n },\n prevMonthDisabled: function prevMonthDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneMonthAgo(this.activeDate)) < min;\n },\n thisMonthDisabled: function thisMonthDisabled() {\n // TODO: We could/should check if today is out of range\n return this.disabled;\n },\n nextMonthDisabled: function nextMonthDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneMonthAhead(this.activeDate)) > max;\n },\n nextYearDisabled: function nextYearDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneYearAhead(this.activeDate)) > max;\n },\n nextDecadeDisabled: function nextDecadeDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneDecadeAhead(this.activeDate)) > max;\n },\n // Calendar dates generation\n calendar: function calendar() {\n var matrix = [];\n var firstDay = this.calendarFirstDay;\n var calendarYear = firstDay.getFullYear();\n var calendarMonth = firstDay.getMonth();\n var daysInMonth = this.calendarDaysInMonth;\n var startIndex = firstDay.getDay(); // `0`..`6`\n\n var weekOffset = (this.computedWeekStarts > startIndex ? 7 : 0) - this.computedWeekStarts; // Build the calendar matrix\n\n var currentDay = 0 - weekOffset - startIndex;\n\n for (var week = 0; week < 6 && currentDay < daysInMonth; week++) {\n // For each week\n matrix[week] = []; // The following could be a map function\n\n for (var j = 0; j < 7; j++) {\n // For each day in week\n currentDay++;\n var date = createDate(calendarYear, calendarMonth, currentDay);\n var month = date.getMonth();\n var dayYMD = formatYMD(date);\n var dayDisabled = this.dateDisabled(date); // TODO: This could be a normalizer method\n\n var dateInfo = this.computedDateInfoFn(dayYMD, parseYMD(dayYMD));\n dateInfo = isString(dateInfo) || isArray(dateInfo) ?\n /* istanbul ignore next */\n {\n class: dateInfo\n } : isPlainObject(dateInfo) ? _objectSpread({\n class: ''\n }, dateInfo) :\n /* istanbul ignore next */\n {\n class: ''\n };\n matrix[week].push({\n ymd: dayYMD,\n // Cell content\n day: this.formatDay(date),\n label: this.formatDateString(date),\n // Flags for styling\n isThisMonth: month === calendarMonth,\n isDisabled: dayDisabled,\n // TODO: Handle other dateInfo properties such as notes/events\n info: dateInfo\n });\n }\n }\n\n return matrix;\n },\n calendarHeadings: function calendarHeadings() {\n var _this2 = this;\n\n return this.calendar[0].map(function (d) {\n return {\n text: _this2.formatWeekdayNameShort(parseYMD(d.ymd)),\n label: _this2.formatWeekdayName(parseYMD(d.ymd))\n };\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n var selected = formatYMD(newValue) || '';\n var old = formatYMD(oldValue) || '';\n\n if (!datesEqual(selected, old)) {\n this.activeYMD = selected || this.activeYMD;\n this.selectedYMD = selected;\n }\n }), _defineProperty(_watch, \"selectedYMD\", function selectedYMD(newYMD, oldYMD) {\n // TODO:\n // Should we compare to `formatYMD(this.value)` and emit\n // only if they are different?\n if (newYMD !== oldYMD) {\n this.$emit(MODEL_EVENT_NAME, this.valueAsDate ? parseYMD(newYMD) || null : newYMD || '');\n }\n }), _defineProperty(_watch, \"context\", function context(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT, newValue);\n }\n }), _defineProperty(_watch, \"hidden\", function hidden(newValue) {\n // Reset the active focused day when hidden\n this.activeYMD = this.selectedYMD || formatYMD(this[MODEL_PROP_NAME] || this.constrainDate(this.initialDate || this.getToday())); // Enable/disable the live regions\n\n this.setLive(!newValue);\n }), _watch),\n created: function created() {\n var _this3 = this;\n\n this.$nextTick(function () {\n _this3.$emit(EVENT_NAME_CONTEXT, _this3.context);\n });\n },\n mounted: function mounted() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n this.setLive(false);\n },\n beforeDestroy: function beforeDestroy() {\n this.setLive(false);\n },\n methods: {\n // Public method(s)\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.grid);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.grid);\n }\n },\n // Private methods\n setLive: function setLive(on) {\n var _this4 = this;\n\n if (on) {\n this.$nextTick(function () {\n requestAF(function () {\n _this4.isLive = true;\n });\n });\n } else {\n this.isLive = false;\n }\n },\n getToday: function getToday() {\n return parseYMD(createDate());\n },\n constrainDate: function constrainDate(date) {\n // Constrains a date between min and max\n // returns a new `Date` object instance\n return _constrainDate(date, this.computedMin, this.computedMax);\n },\n emitSelected: function emitSelected(date) {\n var _this5 = this;\n\n // Performed in a `$nextTick()` to (probably) ensure\n // the input event has emitted first\n this.$nextTick(function () {\n _this5.$emit(EVENT_NAME_SELECTED, formatYMD(date) || '', parseYMD(date) || null);\n });\n },\n // Event handlers\n setGridFocusFlag: function setGridFocusFlag(event) {\n // Sets the gridHasFocus flag to make date \"button\" look focused\n this.gridHasFocus = !this.disabled && event.type === 'focus';\n },\n onKeydownWrapper: function onKeydownWrapper(event) {\n // Calendar keyboard navigation\n // Handles PAGEUP/PAGEDOWN/END/HOME/LEFT/UP/RIGHT/DOWN\n // Focuses grid after updating\n if (this.noKeyNav) {\n /* istanbul ignore next */\n return;\n }\n\n var altKey = event.altKey,\n ctrlKey = event.ctrlKey,\n keyCode = event.keyCode;\n\n if (!arrayIncludes([CODE_PAGEUP, CODE_PAGEDOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_UP, CODE_RIGHT, CODE_DOWN], keyCode)) {\n /* istanbul ignore next */\n return;\n }\n\n stopEvent(event);\n var activeDate = createDate(this.activeDate);\n var checkDate = createDate(this.activeDate);\n var day = activeDate.getDate();\n var constrainedToday = this.constrainDate(this.getToday());\n var isRTL = this.isRTL;\n\n if (keyCode === CODE_PAGEUP) {\n // PAGEUP - Previous month/year\n activeDate = (altKey ? ctrlKey ? oneDecadeAgo : oneYearAgo : oneMonthAgo)(activeDate); // We check the first day of month to be in rage\n\n checkDate = createDate(activeDate);\n checkDate.setDate(1);\n } else if (keyCode === CODE_PAGEDOWN) {\n // PAGEDOWN - Next month/year\n activeDate = (altKey ? ctrlKey ? oneDecadeAhead : oneYearAhead : oneMonthAhead)(activeDate); // We check the last day of month to be in rage\n\n checkDate = createDate(activeDate);\n checkDate.setMonth(checkDate.getMonth() + 1);\n checkDate.setDate(0);\n } else if (keyCode === CODE_LEFT) {\n // LEFT - Previous day (or next day for RTL)\n activeDate.setDate(day + (isRTL ? 1 : -1));\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_RIGHT) {\n // RIGHT - Next day (or previous day for RTL)\n activeDate.setDate(day + (isRTL ? -1 : 1));\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_UP) {\n // UP - Previous week\n activeDate.setDate(day - 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_DOWN) {\n // DOWN - Next week\n activeDate.setDate(day + 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_HOME) {\n // HOME - Today\n activeDate = constrainedToday;\n checkDate = activeDate;\n } else if (keyCode === CODE_END) {\n // END - Selected date, or today if no selected date\n activeDate = parseYMD(this.selectedDate) || constrainedToday;\n checkDate = activeDate;\n }\n\n if (!this.dateOutOfRange(checkDate) && !datesEqual(activeDate, this.activeDate)) {\n // We only jump to date if within min/max\n // We don't check for individual disabled dates though (via user function)\n this.activeYMD = formatYMD(activeDate);\n } // Ensure grid is focused\n\n\n this.focus();\n },\n onKeydownGrid: function onKeydownGrid(event) {\n // Pressing enter/space on grid to select active date\n var keyCode = event.keyCode;\n var activeDate = this.activeDate;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n stopEvent(event);\n\n if (!this.disabled && !this.readonly && !this.dateDisabled(activeDate)) {\n this.selectedYMD = formatYMD(activeDate);\n this.emitSelected(activeDate);\n } // Ensure grid is focused\n\n\n this.focus();\n }\n },\n onClickDay: function onClickDay(day) {\n // Clicking on a date \"button\" to select it\n var selectedDate = this.selectedDate,\n activeDate = this.activeDate;\n var clickedDate = parseYMD(day.ymd);\n\n if (!this.disabled && !day.isDisabled && !this.dateDisabled(clickedDate)) {\n if (!this.readonly) {\n // If readonly mode, we don't set the selected date, just the active date\n // If the clicked date is equal to the already selected date, we don't update the model\n this.selectedYMD = formatYMD(datesEqual(clickedDate, selectedDate) ? selectedDate : clickedDate);\n this.emitSelected(clickedDate);\n }\n\n this.activeYMD = formatYMD(datesEqual(clickedDate, activeDate) ? activeDate : createDate(clickedDate)); // Ensure grid is focused\n\n this.focus();\n }\n },\n gotoPrevDecade: function gotoPrevDecade() {\n this.activeYMD = formatYMD(this.constrainDate(oneDecadeAgo(this.activeDate)));\n },\n gotoPrevYear: function gotoPrevYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAgo(this.activeDate)));\n },\n gotoPrevMonth: function gotoPrevMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAgo(this.activeDate)));\n },\n gotoCurrentMonth: function gotoCurrentMonth() {\n // TODO: Maybe this goto date should be configurable?\n this.activeYMD = formatYMD(this.constrainDate(this.getToday()));\n },\n gotoNextMonth: function gotoNextMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAhead(this.activeDate)));\n },\n gotoNextYear: function gotoNextYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAhead(this.activeDate)));\n },\n gotoNextDecade: function gotoNextDecade() {\n this.activeYMD = formatYMD(this.constrainDate(oneDecadeAhead(this.activeDate)));\n },\n onHeaderClick: function onHeaderClick() {\n if (!this.disabled) {\n this.activeYMD = this.selectedYMD || formatYMD(this.getToday());\n this.focus();\n }\n }\n },\n render: function render(h) {\n var _this6 = this;\n\n // If `hidden` prop is set, render just a placeholder node\n if (this.hidden) {\n return h();\n }\n\n var valueId = this.valueId,\n widgetId = this.widgetId,\n navId = this.navId,\n gridId = this.gridId,\n gridCaptionId = this.gridCaptionId,\n gridHelpId = this.gridHelpId,\n activeId = this.activeId,\n disabled = this.disabled,\n noKeyNav = this.noKeyNav,\n isLive = this.isLive,\n isRTL = this.isRTL,\n activeYMD = this.activeYMD,\n selectedYMD = this.selectedYMD,\n safeId = this.safeId;\n var hideDecadeNav = !this.showDecadeNav;\n var todayYMD = formatYMD(this.getToday());\n var highlightToday = !this.noHighlightToday; // Header showing current selected date\n\n var $header = h('output', {\n staticClass: 'form-control form-control-sm text-center',\n class: {\n 'text-muted': disabled,\n readonly: this.readonly || disabled\n },\n attrs: {\n id: valueId,\n for: gridId,\n role: 'status',\n tabindex: disabled ? null : '-1',\n // Mainly for testing purposes, as we do not know\n // the exact format `Intl` will format the date string\n 'data-selected': toString(selectedYMD),\n // We wait until after mount to enable `aria-live`\n // to prevent initial announcement on page render\n 'aria-live': isLive ? 'polite' : 'off',\n 'aria-atomic': isLive ? 'true' : null\n },\n on: {\n // Transfer focus/click to focus grid\n // and focus active date (or today if no selection)\n click: this.onHeaderClick,\n focus: this.onHeaderClick\n }\n }, this.selectedDate ? [// We use `bdi` elements here in case the label doesn't match the locale\n // Although IE 11 does not deal with at all (equivalent to a span)\n h('bdi', {\n staticClass: 'sr-only'\n }, \" (\".concat(toString(this.labelSelected), \") \")), h('bdi', this.formatDateString(this.selectedDate))] : this.labelNoDateSelected || \"\\xA0\" // ' '\n );\n $header = h('header', {\n staticClass: 'b-calendar-header',\n class: {\n 'sr-only': this.hideHeader\n },\n attrs: {\n title: this.selectedDate ? this.labelSelectedDate || null : null\n }\n }, [$header]); // Content for the date navigation buttons\n\n var navScope = {\n isRTL: isRTL\n };\n var navProps = {\n shiftV: 0.5\n };\n\n var navPrevProps = _objectSpread(_objectSpread({}, navProps), {}, {\n flipH: isRTL\n });\n\n var navNextProps = _objectSpread(_objectSpread({}, navProps), {}, {\n flipH: !isRTL\n });\n\n var $prevDecadeIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_DECADE, navScope) || h(BIconChevronBarLeft, {\n props: navPrevProps\n });\n var $prevYearIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_YEAR, navScope) || h(BIconChevronDoubleLeft, {\n props: navPrevProps\n });\n var $prevMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_MONTH, navScope) || h(BIconChevronLeft, {\n props: navPrevProps\n });\n var $thisMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_THIS_MONTH, navScope) || h(BIconCircleFill, {\n props: navProps\n });\n var $nextMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_MONTH, navScope) || h(BIconChevronLeft, {\n props: navNextProps\n });\n var $nextYearIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_YEAR, navScope) || h(BIconChevronDoubleLeft, {\n props: navNextProps\n });\n var $nextDecadeIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_DECADE, navScope) || h(BIconChevronBarLeft, {\n props: navNextProps\n }); // Utility to create the date navigation buttons\n\n var makeNavBtn = function makeNavBtn(content, label, handler, btnDisabled, shortcut) {\n return h('button', {\n staticClass: 'btn btn-sm border-0 flex-fill',\n class: [_this6.computedNavButtonVariant, {\n disabled: btnDisabled\n }],\n attrs: {\n title: label || null,\n type: 'button',\n tabindex: noKeyNav ? '-1' : null,\n 'aria-label': label || null,\n 'aria-disabled': btnDisabled ? 'true' : null,\n 'aria-keyshortcuts': shortcut || null\n },\n on: btnDisabled ? {} : {\n click: handler\n }\n }, [h('div', {\n attrs: {\n 'aria-hidden': 'true'\n }\n }, [content])]);\n }; // Generate the date navigation buttons\n\n\n var $nav = h('div', {\n staticClass: 'b-calendar-nav d-flex',\n attrs: {\n id: navId,\n role: 'group',\n tabindex: noKeyNav ? '-1' : null,\n 'aria-hidden': disabled ? 'true' : null,\n 'aria-label': this.labelNav || null,\n 'aria-controls': gridId\n }\n }, [hideDecadeNav ? h() : makeNavBtn($prevDecadeIcon, this.labelPrevDecade, this.gotoPrevDecade, this.prevDecadeDisabled, 'Ctrl+Alt+PageDown'), makeNavBtn($prevYearIcon, this.labelPrevYear, this.gotoPrevYear, this.prevYearDisabled, 'Alt+PageDown'), makeNavBtn($prevMonthIcon, this.labelPrevMonth, this.gotoPrevMonth, this.prevMonthDisabled, 'PageDown'), makeNavBtn($thisMonthIcon, this.labelCurrentMonth, this.gotoCurrentMonth, this.thisMonthDisabled, 'Home'), makeNavBtn($nextMonthIcon, this.labelNextMonth, this.gotoNextMonth, this.nextMonthDisabled, 'PageUp'), makeNavBtn($nextYearIcon, this.labelNextYear, this.gotoNextYear, this.nextYearDisabled, 'Alt+PageUp'), hideDecadeNav ? h() : makeNavBtn($nextDecadeIcon, this.labelNextDecade, this.gotoNextDecade, this.nextDecadeDisabled, 'Ctrl+Alt+PageUp')]); // Caption for calendar grid\n\n var $gridCaption = h('header', {\n staticClass: 'b-calendar-grid-caption text-center font-weight-bold',\n class: {\n 'text-muted': disabled\n },\n attrs: {\n id: gridCaptionId,\n 'aria-live': isLive ? 'polite' : null,\n 'aria-atomic': isLive ? 'true' : null\n },\n key: 'grid-caption'\n }, this.formatYearMonth(this.calendarFirstDay)); // Calendar weekday headings\n\n var $gridWeekDays = h('div', {\n staticClass: 'b-calendar-grid-weekdays row no-gutters border-bottom',\n attrs: {\n 'aria-hidden': 'true'\n }\n }, this.calendarHeadings.map(function (d, idx) {\n return h('small', {\n staticClass: 'col text-truncate',\n class: {\n 'text-muted': disabled\n },\n attrs: {\n title: d.label === d.text ? null : d.label,\n 'aria-label': d.label\n },\n key: idx\n }, d.text);\n })); // Calendar day grid\n\n var $gridBody = this.calendar.map(function (week) {\n var $cells = week.map(function (day, dIndex) {\n var _class;\n\n var isSelected = day.ymd === selectedYMD;\n var isActive = day.ymd === activeYMD;\n var isToday = day.ymd === todayYMD;\n var idCell = safeId(\"_cell-\".concat(day.ymd, \"_\")); // \"fake\" button\n\n var $btn = h('span', {\n staticClass: 'btn border-0 rounded-circle text-nowrap',\n // Should we add some classes to signify if today/selected/etc?\n class: (_class = {\n // Give the fake button a focus ring\n focus: isActive && _this6.gridHasFocus,\n // Styling\n disabled: day.isDisabled || disabled,\n active: isSelected\n }, _defineProperty(_class, _this6.computedVariant, isSelected), _defineProperty(_class, _this6.computedTodayVariant, isToday && highlightToday && !isSelected && day.isThisMonth), _defineProperty(_class, 'btn-outline-light', !(isToday && highlightToday) && !isSelected && !isActive), _defineProperty(_class, 'btn-light', !(isToday && highlightToday) && !isSelected && isActive), _defineProperty(_class, 'text-muted', !day.isThisMonth && !isSelected), _defineProperty(_class, 'text-dark', !(isToday && highlightToday) && !isSelected && !isActive && day.isThisMonth), _defineProperty(_class, 'font-weight-bold', (isSelected || day.isThisMonth) && !day.isDisabled), _class),\n on: {\n click: function click() {\n return _this6.onClickDay(day);\n }\n }\n }, day.day);\n return h('div', // Cell with button\n {\n staticClass: 'col p-0',\n class: day.isDisabled ? 'bg-light' : day.info.class || '',\n attrs: {\n id: idCell,\n role: 'button',\n 'data-date': day.ymd,\n // Primarily for testing purposes\n // Only days in the month are presented as buttons to screen readers\n 'aria-hidden': day.isThisMonth ? null : 'true',\n 'aria-disabled': day.isDisabled || disabled ? 'true' : null,\n 'aria-label': [day.label, isSelected ? \"(\".concat(_this6.labelSelected, \")\") : null, isToday ? \"(\".concat(_this6.labelToday, \")\") : null].filter(identity).join(' '),\n // NVDA doesn't convey `aria-selected`, but does `aria-current`,\n // ChromeVox doesn't convey `aria-current`, but does `aria-selected`,\n // so we set both attributes for robustness\n 'aria-selected': isSelected ? 'true' : null,\n 'aria-current': isSelected ? 'date' : null\n },\n key: dIndex\n }, [$btn]);\n }); // Return the week \"row\"\n // We use the first day of the weeks YMD value as a\n // key for efficient DOM patching / element re-use\n\n return h('div', {\n staticClass: 'row no-gutters',\n key: week[0].ymd\n }, $cells);\n });\n $gridBody = h('div', {\n // A key is only required on the body if we add in transition support\n staticClass: 'b-calendar-grid-body',\n style: disabled ? {\n pointerEvents: 'none'\n } : {} // key: this.activeYMD.slice(0, -3)\n\n }, $gridBody);\n var $gridHelp = h('footer', {\n staticClass: 'b-calendar-grid-help border-top small text-muted text-center bg-light',\n attrs: {\n id: gridHelpId\n }\n }, [h('div', {\n staticClass: 'small'\n }, this.labelHelp)]);\n var $grid = h('div', {\n staticClass: 'b-calendar-grid form-control h-auto text-center',\n attrs: {\n id: gridId,\n role: 'application',\n tabindex: noKeyNav ? '-1' : disabled ? null : '0',\n 'data-month': activeYMD.slice(0, -3),\n // `YYYY-MM`, mainly for testing\n 'aria-roledescription': this.labelCalendar || null,\n 'aria-labelledby': gridCaptionId,\n 'aria-describedby': gridHelpId,\n // `aria-readonly` is not considered valid on `role=\"application\"`\n // https://www.w3.org/TR/wai-aria-1.1/#aria-readonly\n // 'aria-readonly': this.readonly && !disabled ? 'true' : null,\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-activedescendant': activeId\n },\n on: {\n keydown: this.onKeydownGrid,\n focus: this.setGridFocusFlag,\n blur: this.setGridFocusFlag\n },\n ref: 'grid'\n }, [$gridCaption, $gridWeekDays, $gridBody, $gridHelp]); // Optional bottom slot\n\n var $slot = this.normalizeSlot();\n $slot = $slot ? h('footer', {\n staticClass: 'b-calendar-footer'\n }, $slot) : h();\n var $widget = h('div', {\n staticClass: 'b-calendar-inner',\n style: this.block ? {} : {\n width: this.width\n },\n attrs: {\n id: widgetId,\n dir: isRTL ? 'rtl' : 'ltr',\n lang: this.computedLocale || null,\n role: 'group',\n 'aria-disabled': disabled ? 'true' : null,\n // If datepicker controls an input, this will specify the ID of the input\n 'aria-controls': this.ariaControls || null,\n // This should be a prop (so it can be changed to Date picker, etc, localized\n 'aria-roledescription': this.roleDescription || null,\n 'aria-describedby': [// Should the attr (if present) go last?\n // Or should this attr be a prop?\n this.bvAttrs['aria-describedby'], valueId, gridHelpId].filter(identity).join(' ')\n },\n on: {\n keydown: this.onKeydownWrapper\n }\n }, [$header, $nav, $grid, $slot]); // Wrap in an outer div that can be styled\n\n return h('div', {\n staticClass: 'b-calendar',\n class: {\n 'd-block': this.block\n }\n }, [$widget]);\n }\n});","// v-b-hover directive\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { eventOnOff } from '../../utils/events';\nimport { isFunction } from '../../utils/inspect'; // --- Constants ---\n\nvar PROP = '__BV_hover_handler__';\nvar MOUSEENTER = 'mouseenter';\nvar MOUSELEAVE = 'mouseleave'; // --- Helper methods ---\n\nvar createListener = function createListener(handler) {\n var listener = function listener(event) {\n handler(event.type === MOUSEENTER, event);\n };\n\n listener.fn = handler;\n return listener;\n};\n\nvar updateListeners = function updateListeners(on, el, listener) {\n eventOnOff(on, el, MOUSEENTER, listener, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, el, MOUSELEAVE, listener, EVENT_OPTIONS_NO_CAPTURE);\n}; // --- Directive bind/unbind/update handler ---\n\n\nvar directive = function directive(el, _ref) {\n var _ref$value = _ref.value,\n handler = _ref$value === void 0 ? null : _ref$value;\n\n if (IS_BROWSER) {\n var listener = el[PROP];\n var hasListener = isFunction(listener);\n var handlerChanged = !(hasListener && listener.fn === handler);\n\n if (hasListener && handlerChanged) {\n updateListeners(false, el, listener);\n delete el[PROP];\n }\n\n if (isFunction(handler) && handlerChanged) {\n el[PROP] = createListener(handler);\n updateListeners(true, el, el[PROP]);\n }\n }\n}; // VBHover directive\n\n\nexport var VBHover = {\n bind: directive,\n componentUpdated: directive,\n unbind: function unbind(el) {\n directive(el, {\n value: null\n });\n }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Private component used by `b-form-datepicker` and `b-form-timepicker`\n//\nimport { Vue } from '../../vue';\nimport { NAME_FORM_BUTTON_LABEL_CONTROL } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { props as formControlProps } from '../../mixins/form-control';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { VBHover } from '../../directives/hover/hover';\nimport { BIconChevronDown } from '../../icons/icons'; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formSizeProps), formStateProps), omit(dropdownProps, ['disabled'])), omit(formControlProps, ['autofocus'])), {}, {\n // When `true`, renders a `btn-group` wrapper and visually hides the label\n buttonOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n // Applicable in button mode only\n buttonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n // This is the value shown in the label\n // Defaults back to `value`\n formattedValue: makeProp(PROP_TYPE_STRING),\n // Value placed in `.sr-only` span inside label when value is present\n labelSelected: makeProp(PROP_TYPE_STRING),\n lang: makeProp(PROP_TYPE_STRING),\n // Extra classes to apply to the `dropdown-menu` div\n menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // This is the value placed on the hidden input when no value selected\n placeholder: makeProp(PROP_TYPE_STRING),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n // Tri-state prop: `true`, `false` or `null`\n rtl: makeProp(PROP_TYPE_BOOLEAN, null),\n value: makeProp(PROP_TYPE_STRING, '')\n})); // --- Main component ---\n// @vue/component\n\nexport var BVFormBtnLabelControl = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_BUTTON_LABEL_CONTROL,\n directives: {\n 'b-hover': VBHover\n },\n mixins: [idMixin, formSizeMixin, formStateMixin, dropdownMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n isHovered: false,\n hasFocus: false\n };\n },\n computed: {\n idButton: function idButton() {\n return this.safeId();\n },\n idLabel: function idLabel() {\n return this.safeId('_value_');\n },\n idMenu: function idMenu() {\n return this.safeId('_dialog_');\n },\n idWrapper: function idWrapper() {\n return this.safeId('_outer_');\n },\n computedDir: function computedDir() {\n return this.rtl === true ? 'rtl' : this.rtl === false ? 'ltr' : null;\n }\n },\n methods: {\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.toggle);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.toggle);\n }\n },\n setFocus: function setFocus(event) {\n this.hasFocus = event.type === 'focus';\n },\n handleHover: function handleHover(hovered) {\n this.isHovered = hovered;\n }\n },\n render: function render(h) {\n var _class;\n\n var idButton = this.idButton,\n idLabel = this.idLabel,\n idMenu = this.idMenu,\n idWrapper = this.idWrapper,\n disabled = this.disabled,\n readonly = this.readonly,\n required = this.required,\n name = this.name,\n state = this.state,\n visible = this.visible,\n size = this.size,\n isHovered = this.isHovered,\n hasFocus = this.hasFocus,\n labelSelected = this.labelSelected,\n buttonVariant = this.buttonVariant,\n buttonOnly = this.buttonOnly;\n var value = toString(this.value) || '';\n var invalid = state === false || required && !value;\n var btnScope = {\n isHovered: isHovered,\n hasFocus: hasFocus,\n state: state,\n opened: visible\n };\n var $button = h('button', {\n staticClass: 'btn',\n class: (_class = {}, _defineProperty(_class, \"btn-\".concat(buttonVariant), buttonOnly), _defineProperty(_class, \"btn-\".concat(size), size), _defineProperty(_class, 'h-auto', !buttonOnly), _defineProperty(_class, 'dropdown-toggle', buttonOnly), _defineProperty(_class, 'dropdown-toggle-no-caret', buttonOnly), _class),\n attrs: {\n id: idButton,\n type: 'button',\n disabled: disabled,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': visible ? 'true' : 'false',\n 'aria-invalid': invalid ? 'true' : null,\n 'aria-required': required ? 'true' : null\n },\n directives: [{\n name: 'b-hover',\n value: this.handleHover\n }],\n on: {\n mousedown: this.onMousedown,\n click: this.toggle,\n keydown: this.toggle,\n // Handle ENTER, SPACE and DOWN\n '!focus': this.setFocus,\n '!blur': this.setFocus\n },\n ref: 'toggle'\n }, [this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT, btnScope) :\n /* istanbul ignore next */\n h(BIconChevronDown, {\n props: {\n scale: 1.25\n }\n })]); // Hidden input\n\n var $hidden = h();\n\n if (name && !disabled) {\n $hidden = h('input', {\n attrs: {\n type: 'hidden',\n name: name || null,\n form: this.form || null,\n value: value\n }\n });\n } // Dropdown content\n\n\n var $menu = h('div', {\n staticClass: 'dropdown-menu',\n class: [this.menuClass, {\n show: visible,\n 'dropdown-menu-right': this.right\n }],\n attrs: {\n id: idMenu,\n role: 'dialog',\n tabindex: '-1',\n 'aria-modal': 'false',\n 'aria-labelledby': idLabel\n },\n on: {\n keydown: this.onKeydown // Handle ESC\n\n },\n ref: 'menu'\n }, [this.normalizeSlot(SLOT_NAME_DEFAULT, {\n opened: visible\n })]); // Value label\n\n var $label = h('label', {\n class: buttonOnly ? 'sr-only' // Hidden in button only mode\n : ['form-control', 'text-break', 'text-wrap', 'bg-transparent', // Mute the text if showing the placeholder\n {\n 'text-muted': !value\n }, this.stateClass, this.sizeFormClass],\n attrs: {\n id: idLabel,\n for: idButton,\n 'aria-invalid': invalid ? 'true' : null,\n 'aria-required': required ? 'true' : null\n },\n directives: [{\n name: 'b-hover',\n value: this.handleHover\n }],\n on: {\n // Disable bubbling of the click event to\n // prevent menu from closing and re-opening\n '!click':\n /* istanbul ignore next */\n function click(event) {\n stopEvent(event, {\n preventDefault: false\n });\n }\n }\n }, [value ? this.formattedValue || value : this.placeholder || '', // Add the selected label for screen readers when a value is provided\n value && labelSelected ? h('bdi', {\n staticClass: 'sr-only'\n }, labelSelected) : '']); // Return the custom form control wrapper\n\n return h('div', {\n staticClass: 'b-form-btn-label-control dropdown',\n class: [this.directionClass, this.boundaryClass, [{\n 'btn-group': buttonOnly,\n 'form-control': !buttonOnly,\n 'd-flex': !buttonOnly,\n 'h-auto': !buttonOnly,\n 'align-items-stretch': !buttonOnly,\n focus: hasFocus && !buttonOnly,\n show: visible,\n 'is-valid': state === true,\n 'is-invalid': state === false\n }, buttonOnly ? null : this.sizeFormClass]],\n attrs: {\n id: idWrapper,\n role: buttonOnly ? null : 'group',\n lang: this.lang || null,\n dir: this.computedDir,\n 'aria-disabled': disabled,\n 'aria-readonly': readonly && !disabled,\n 'aria-labelledby': idLabel,\n 'aria-invalid': state === false || required && !value ? 'true' : null,\n 'aria-required': required ? 'true' : null\n }\n }, [$button, $hidden, $menu, $label]);\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_DATEPICKER } from '../../constants/components';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT } from '../../constants/slots';\nimport { createDate, constrainDate, formatYMD, parseYMD } from '../../utils/date';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { omit, pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { BIconCalendar, BIconCalendarFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BCalendar, props as BCalendarProps } from '../calendar/calendar';\nimport { BVFormBtnLabelControl, props as BVFormBtnLabelControlProps } from '../form-btn-label-control/bv-form-btn-label-control'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_DATE_STRING\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nvar calendarProps = omit(BCalendarProps, ['block', 'hidden', 'id', 'noKeyNav', 'roleDescription', 'value', 'width']);\nvar formBtnLabelControlProps = omit(BVFormBtnLabelControlProps, ['formattedValue', 'id', 'lang', 'rtl', 'value']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), calendarProps), formBtnLabelControlProps), {}, {\n // Width of the calendar dropdown\n calendarWidth: makeProp(PROP_TYPE_STRING, '270px'),\n closeButton: makeProp(PROP_TYPE_BOOLEAN, false),\n closeButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n // Dark mode\n dark: makeProp(PROP_TYPE_BOOLEAN, false),\n labelCloseButton: makeProp(PROP_TYPE_STRING, 'Close'),\n labelResetButton: makeProp(PROP_TYPE_STRING, 'Reset'),\n labelTodayButton: makeProp(PROP_TYPE_STRING, 'Select today'),\n noCloseOnSelect: makeProp(PROP_TYPE_BOOLEAN, false),\n resetButton: makeProp(PROP_TYPE_BOOLEAN, false),\n resetButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-danger'),\n resetValue: makeProp(PROP_TYPE_DATE_STRING),\n todayButton: makeProp(PROP_TYPE_BOOLEAN, false),\n todayButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-primary')\n})), NAME_FORM_DATEPICKER); // --- Main component ---\n// @vue/component\n\nexport var BFormDatepicker = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_DATEPICKER,\n mixins: [idMixin, modelMixin],\n props: props,\n data: function data() {\n return {\n // We always use `YYYY-MM-DD` value internally\n localYMD: formatYMD(this[MODEL_PROP_NAME]) || '',\n // If the popup is open\n isVisible: false,\n // Context data from BCalendar\n localLocale: null,\n isRTL: false,\n formattedValue: '',\n activeYMD: ''\n };\n },\n computed: {\n calendarYM: function calendarYM() {\n // Returns the calendar year/month\n // Returns the `YYYY-MM` portion of the active calendar date\n return this.activeYMD.slice(0, -3);\n },\n computedLang: function computedLang() {\n return (this.localLocale || '').replace(/-u-.*$/i, '') || null;\n },\n computedResetValue: function computedResetValue() {\n return formatYMD(constrainDate(this.resetValue)) || '';\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n this.localYMD = formatYMD(newValue) || '';\n }), _defineProperty(_watch, \"localYMD\", function localYMD(newValue) {\n // We only update the v-model when the datepicker is open\n if (this.isVisible) {\n this.$emit(MODEL_EVENT_NAME, this.valueAsDate ? parseYMD(newValue) || null : newValue || '');\n }\n }), _defineProperty(_watch, \"calendarYM\", function calendarYM(newValue, oldValue) {\n // Displayed calendar month has changed\n // So possibly the calendar height has changed...\n // We need to update popper computed position\n if (newValue !== oldValue && oldValue) {\n try {\n this.$refs.control.updatePopper();\n } catch (_unused) {}\n }\n }), _watch),\n methods: {\n // Public methods\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.control);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.control);\n }\n },\n // Private methods\n setAndClose: function setAndClose(ymd) {\n var _this = this;\n\n this.localYMD = ymd; // Close calendar popup, unless `noCloseOnSelect`\n\n if (!this.noCloseOnSelect) {\n this.$nextTick(function () {\n _this.$refs.control.hide(true);\n });\n }\n },\n onSelected: function onSelected(ymd) {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setAndClose(ymd);\n });\n },\n onInput: function onInput(ymd) {\n if (this.localYMD !== ymd) {\n this.localYMD = ymd;\n }\n },\n onContext: function onContext(ctx) {\n var activeYMD = ctx.activeYMD,\n isRTL = ctx.isRTL,\n locale = ctx.locale,\n selectedYMD = ctx.selectedYMD,\n selectedFormatted = ctx.selectedFormatted;\n this.isRTL = isRTL;\n this.localLocale = locale;\n this.formattedValue = selectedFormatted;\n this.localYMD = selectedYMD;\n this.activeYMD = activeYMD; // Re-emit the context event\n\n this.$emit(EVENT_NAME_CONTEXT, ctx);\n },\n onTodayButton: function onTodayButton() {\n // Set to today (or min/max if today is out of range)\n this.setAndClose(formatYMD(constrainDate(createDate(), this.min, this.max)));\n },\n onResetButton: function onResetButton() {\n this.setAndClose(this.computedResetValue);\n },\n onCloseButton: function onCloseButton() {\n this.$refs.control.hide(true);\n },\n // Menu handlers\n onShow: function onShow() {\n this.isVisible = true;\n },\n onShown: function onShown() {\n var _this3 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this3.$refs.calendar);\n\n _this3.$emit(EVENT_NAME_SHOWN);\n });\n },\n onHidden: function onHidden() {\n this.isVisible = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n // Render helpers\n defaultButtonFn: function defaultButtonFn(_ref) {\n var isHovered = _ref.isHovered,\n hasFocus = _ref.hasFocus;\n return this.$createElement(isHovered || hasFocus ? BIconCalendarFill : BIconCalendar, {\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n }\n },\n render: function render(h) {\n var localYMD = this.localYMD,\n disabled = this.disabled,\n readonly = this.readonly,\n dark = this.dark,\n $props = this.$props,\n $scopedSlots = this.$scopedSlots;\n var placeholder = isUndefinedOrNull(this.placeholder) ? this.labelNoDateSelected : this.placeholder; // Optional footer buttons\n\n var $footer = [];\n\n if (this.todayButton) {\n var label = this.labelTodayButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled || readonly,\n size: 'sm',\n variant: this.todayButtonVariant\n },\n attrs: {\n 'aria-label': label || null\n },\n on: {\n click: this.onTodayButton\n }\n }, label));\n }\n\n if (this.resetButton) {\n var _label = this.labelResetButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled || readonly,\n size: 'sm',\n variant: this.resetButtonVariant\n },\n attrs: {\n 'aria-label': _label || null\n },\n on: {\n click: this.onResetButton\n }\n }, _label));\n }\n\n if (this.closeButton) {\n var _label2 = this.labelCloseButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled,\n size: 'sm',\n variant: this.closeButtonVariant\n },\n attrs: {\n 'aria-label': _label2 || null\n },\n on: {\n click: this.onCloseButton\n }\n }, _label2));\n }\n\n if ($footer.length > 0) {\n $footer = [h('div', {\n staticClass: 'b-form-date-controls d-flex flex-wrap',\n class: {\n 'justify-content-between': $footer.length > 1,\n 'justify-content-end': $footer.length < 2\n }\n }, $footer)];\n }\n\n var $calendar = h(BCalendar, {\n staticClass: 'b-form-date-calendar w-100',\n props: _objectSpread(_objectSpread({}, pluckProps(calendarProps, $props)), {}, {\n hidden: !this.isVisible,\n value: localYMD,\n valueAsDate: false,\n width: this.calendarWidth\n }),\n on: {\n selected: this.onSelected,\n input: this.onInput,\n context: this.onContext\n },\n scopedSlots: pick($scopedSlots, ['nav-prev-decade', 'nav-prev-year', 'nav-prev-month', 'nav-this-month', 'nav-next-month', 'nav-next-year', 'nav-next-decade']),\n key: 'calendar',\n ref: 'calendar'\n }, $footer);\n return h(BVFormBtnLabelControl, {\n staticClass: 'b-form-datepicker',\n props: _objectSpread(_objectSpread({}, pluckProps(formBtnLabelControlProps, $props)), {}, {\n formattedValue: localYMD ? this.formattedValue : '',\n id: this.safeId(),\n lang: this.computedLang,\n menuClass: [{\n 'bg-dark': dark,\n 'text-light': dark\n }, this.menuClass],\n placeholder: placeholder,\n rtl: this.isRTL,\n value: localYMD\n }),\n on: {\n show: this.onShow,\n shown: this.onShown,\n hidden: this.onHidden\n },\n scopedSlots: _defineProperty({}, SLOT_NAME_BUTTON_CONTENT, $scopedSlots[SLOT_NAME_BUTTON_CONTENT] || this.defaultButtonFn),\n ref: 'control'\n }, [$calendar]);\n }\n});"],"sourceRoot":""}